1
0
AxibugEmuOnline/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/AppSettings/KeyMapperSetting/MAMEKeyBinding.cs

187 lines
10 KiB
C#

using AxibugEmuOnline.Client.InputDevices;
using AxibugProtobuf;
using UnityEngine.UIElements;
namespace AxibugEmuOnline.Client.Settings
{
public enum UMAMEKSingleKey
{
INSERT_COIN,
GAMESTART,
UP,
DOWN,
LEFT,
RIGHT,
BTN_A,
BTN_B,
BTN_C,
BTN_D,
BTN_E,
BTN_F
}
public abstract class MAMEKeyBinding : EmuCoreBinder<UMAMEKSingleKey>
{
public override int ControllerCount => 4;
public override void Bind(Keyboard_D device, ControllerBinder controller)
{
switch (controller.ControllerIndex)
{
case 0:
controller.SetBinding(UMAMEKSingleKey.INSERT_COIN, device.Q, 0);
controller.SetBinding(UMAMEKSingleKey.GAMESTART, device.E, 0);
controller.SetBinding(UMAMEKSingleKey.UP, device.W, 0);
controller.SetBinding(UMAMEKSingleKey.DOWN, device.S, 0);
controller.SetBinding(UMAMEKSingleKey.LEFT, device.A, 0);
controller.SetBinding(UMAMEKSingleKey.RIGHT, device.D, 0);
controller.SetBinding(UMAMEKSingleKey.BTN_A, device.J, 0);
controller.SetBinding(UMAMEKSingleKey.BTN_B, device.K, 0);
controller.SetBinding(UMAMEKSingleKey.BTN_C, device.L, 0);
controller.SetBinding(UMAMEKSingleKey.BTN_D, device.U, 0);
controller.SetBinding(UMAMEKSingleKey.BTN_E, device.I, 0);
controller.SetBinding(UMAMEKSingleKey.BTN_F, device.O, 0);
break;
case 1:
controller.SetBinding(UMAMEKSingleKey.INSERT_COIN, device.Delete, 0);
controller.SetBinding(UMAMEKSingleKey.GAMESTART, device.PageDown, 0);
controller.SetBinding(UMAMEKSingleKey.UP, device.UpArrow, 0);
controller.SetBinding(UMAMEKSingleKey.DOWN, device.DownArrow, 0);
controller.SetBinding(UMAMEKSingleKey.LEFT, device.LeftArrow, 0);
controller.SetBinding(UMAMEKSingleKey.RIGHT, device.RightArrow, 0);
controller.SetBinding(UMAMEKSingleKey.BTN_A, device.Keypad1, 0);
controller.SetBinding(UMAMEKSingleKey.BTN_B, device.Keypad2, 0);
controller.SetBinding(UMAMEKSingleKey.BTN_C, device.Keypad3, 0);
controller.SetBinding(UMAMEKSingleKey.BTN_D, device.Keypad4, 0);
controller.SetBinding(UMAMEKSingleKey.BTN_E, device.Keypad5, 0);
controller.SetBinding(UMAMEKSingleKey.BTN_F, device.Keypad6, 0);
break;
}
}
public override void Bind(DualShockController_D device, ControllerBinder controller)
{
controller.SetBinding(UMAMEKSingleKey.INSERT_COIN, device.Share, 0);
controller.SetBinding(UMAMEKSingleKey.GAMESTART, device.Options, 0);
controller.SetBinding(UMAMEKSingleKey.UP, device.Up, 0);
controller.SetBinding(UMAMEKSingleKey.DOWN, device.Down, 0);
controller.SetBinding(UMAMEKSingleKey.LEFT, device.Left, 0);
controller.SetBinding(UMAMEKSingleKey.RIGHT, device.Right, 0);
controller.SetBinding(UMAMEKSingleKey.BTN_A, device.Square, 0);
controller.SetBinding(UMAMEKSingleKey.BTN_B, device.Cross, 0);
controller.SetBinding(UMAMEKSingleKey.BTN_C, device.Circle, 0);
controller.SetBinding(UMAMEKSingleKey.BTN_D, device.Triangle, 0);
controller.SetBinding(UMAMEKSingleKey.BTN_E, device.R1, 0);
controller.SetBinding(UMAMEKSingleKey.BTN_F, device.R2, 0);
controller.SetBinding(UMAMEKSingleKey.UP, device.LeftStick.Up, 1);
controller.SetBinding(UMAMEKSingleKey.DOWN, device.LeftStick.Down, 1);
controller.SetBinding(UMAMEKSingleKey.LEFT, device.LeftStick.Left, 1);
controller.SetBinding(UMAMEKSingleKey.RIGHT, device.LeftStick.Right, 1);
}
public override void Bind(GamePad_D device, ControllerBinder controller)
{
controller.SetBinding(UMAMEKSingleKey.INSERT_COIN, device.Select, 0);
controller.SetBinding(UMAMEKSingleKey.GAMESTART, device.Start, 0);
controller.SetBinding(UMAMEKSingleKey.UP, device.Up, 0);
controller.SetBinding(UMAMEKSingleKey.DOWN, device.Down, 0);
controller.SetBinding(UMAMEKSingleKey.LEFT, device.Left, 0);
controller.SetBinding(UMAMEKSingleKey.RIGHT, device.Right, 0);
controller.SetBinding(UMAMEKSingleKey.BTN_A, device.West, 0);
controller.SetBinding(UMAMEKSingleKey.BTN_B, device.South, 0);
controller.SetBinding(UMAMEKSingleKey.BTN_C, device.East, 0);
controller.SetBinding(UMAMEKSingleKey.BTN_D, device.North, 0);
controller.SetBinding(UMAMEKSingleKey.BTN_E, device.RightShoulder, 0);
controller.SetBinding(UMAMEKSingleKey.BTN_F, device.RightTrigger, 0);
controller.SetBinding(UMAMEKSingleKey.UP, device.LeftStick.Up, 1);
controller.SetBinding(UMAMEKSingleKey.DOWN, device.LeftStick.Down, 1);
controller.SetBinding(UMAMEKSingleKey.LEFT, device.LeftStick.Left, 1);
controller.SetBinding(UMAMEKSingleKey.RIGHT, device.LeftStick.Right, 1);
}
public override void Bind(PSVController_D device, ControllerBinder controller)
{
controller.SetBinding(UMAMEKSingleKey.INSERT_COIN, device.Select, 0);
controller.SetBinding(UMAMEKSingleKey.GAMESTART, device.Start, 0);
controller.SetBinding(UMAMEKSingleKey.UP, device.Up, 0);
controller.SetBinding(UMAMEKSingleKey.DOWN, device.Down, 0);
controller.SetBinding(UMAMEKSingleKey.LEFT, device.Left, 0);
controller.SetBinding(UMAMEKSingleKey.RIGHT, device.Right, 0);
controller.SetBinding(UMAMEKSingleKey.BTN_A, device.Square, 0);
controller.SetBinding(UMAMEKSingleKey.BTN_B, device.Cross, 0);
controller.SetBinding(UMAMEKSingleKey.BTN_C, device.Circle, 0);
controller.SetBinding(UMAMEKSingleKey.BTN_D, device.Triangle, 0);
controller.SetBinding(UMAMEKSingleKey.BTN_E, device.L, 0);
controller.SetBinding(UMAMEKSingleKey.BTN_F, device.R, 0);
controller.SetBinding(UMAMEKSingleKey.UP, device.LeftStick.Up, 1);
controller.SetBinding(UMAMEKSingleKey.DOWN, device.LeftStick.Down, 1);
controller.SetBinding(UMAMEKSingleKey.LEFT, device.LeftStick.Left, 1);
controller.SetBinding(UMAMEKSingleKey.RIGHT, device.LeftStick.Right, 1);
}
public override void Bind(XboxController_D device, ControllerBinder controller)
{
controller.SetBinding(UMAMEKSingleKey.INSERT_COIN, device.View, 0);
controller.SetBinding(UMAMEKSingleKey.GAMESTART, device.Menu, 0);
controller.SetBinding(UMAMEKSingleKey.UP, device.Up, 0);
controller.SetBinding(UMAMEKSingleKey.DOWN, device.Down, 0);
controller.SetBinding(UMAMEKSingleKey.LEFT, device.Left, 0);
controller.SetBinding(UMAMEKSingleKey.RIGHT, device.Right, 0);
controller.SetBinding(UMAMEKSingleKey.BTN_A, device.X, 0);
controller.SetBinding(UMAMEKSingleKey.BTN_B, device.A, 0);
controller.SetBinding(UMAMEKSingleKey.BTN_C, device.B, 0);
controller.SetBinding(UMAMEKSingleKey.BTN_D, device.Y, 0);
controller.SetBinding(UMAMEKSingleKey.BTN_E, device.RightBumper, 0);
controller.SetBinding(UMAMEKSingleKey.BTN_F, device.RightTrigger, 0);
controller.SetBinding(UMAMEKSingleKey.UP, device.LeftStick.Up, 1);
controller.SetBinding(UMAMEKSingleKey.DOWN, device.LeftStick.Down, 1);
controller.SetBinding(UMAMEKSingleKey.LEFT, device.LeftStick.Left, 1);
controller.SetBinding(UMAMEKSingleKey.RIGHT, device.LeftStick.Right, 1);
}
public override void Bind(ScreenGamepad_D device, ControllerBinder controller)
{
controller.SetBinding(UMAMEKSingleKey.INSERT_COIN, device.OPTION_1, 0);
controller.SetBinding(UMAMEKSingleKey.GAMESTART, device.OPTION_2, 0);
controller.SetBinding(UMAMEKSingleKey.UP, device.UP, 0);
controller.SetBinding(UMAMEKSingleKey.DOWN, device.DOWN, 0);
controller.SetBinding(UMAMEKSingleKey.LEFT, device.LEFT, 0);
controller.SetBinding(UMAMEKSingleKey.RIGHT, device.RIGHT, 0);
controller.SetBinding(UMAMEKSingleKey.BTN_A, device.BTN_A, 0);
controller.SetBinding(UMAMEKSingleKey.BTN_B, device.BTN_B, 0);
controller.SetBinding(UMAMEKSingleKey.BTN_C, device.BTN_C, 0);
controller.SetBinding(UMAMEKSingleKey.BTN_D, device.BTN_D, 0);
controller.SetBinding(UMAMEKSingleKey.BTN_E, device.BTN_E, 0);
controller.SetBinding(UMAMEKSingleKey.BTN_F, device.BTN_F, 0);
controller.SetBinding(UMAMEKSingleKey.UP, device.JOYSTICK.Up, 1);
controller.SetBinding(UMAMEKSingleKey.DOWN, device.JOYSTICK.Down, 1);
controller.SetBinding(UMAMEKSingleKey.LEFT, device.JOYSTICK.Left, 1);
controller.SetBinding(UMAMEKSingleKey.RIGHT, device.JOYSTICK.Right, 1);
}
}
public class NEOGEOKeyBinding : MAMEKeyBinding
{
public override RomPlatformType Platform => RomPlatformType.Neogeo;
}
public class CPS1KeyBinding : MAMEKeyBinding
{
public override RomPlatformType Platform => RomPlatformType.Cps1;
}
public class CPS2KeyBinding : MAMEKeyBinding
{
public override RomPlatformType Platform => RomPlatformType.Cps2;
}
public class IGSKeyBinding : MAMEKeyBinding
{
public override RomPlatformType Platform => RomPlatformType.Igs;
}
public class OldArcadeKeyBinding : MAMEKeyBinding
{
public override RomPlatformType Platform => RomPlatformType.ArcadeOld;
}
}