AxibugEmuOnline/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/AppSettings/KeyMapperSetting/EssgeeKeyBinding.cs

174 lines
8.8 KiB
C#

using AxibugEmuOnline.Client.InputDevices;
using AxibugProtobuf;
using System;
namespace AxibugEmuOnline.Client.Settings
{
[Flags]
public enum EssgeeSingleKey : ushort
{
NONE = 0,
UP = 1,
DOWN = 1 << 1,
LEFT = 1 << 2,
RIGHT = 1 << 3,
BTN_1 = 1 << 4,
BTN_2 = 1 << 5,
BTN_3 = 1 << 6,
BTN_4 = 1 << 7,
OPTION_1 = 1 << 8,
OPTION_2 = 1 << 9,
}
public abstract class EssgeeKeyBinding : EmuCoreControllerKeyBinding<EssgeeSingleKey>
{
public override void Bind(Keyboard_D device, ControllerBinder controller)
{
switch (controller.ControllerIndex)
{
case 0:
controller.SetBinding(EssgeeSingleKey.OPTION_1, device.Return, 0);
controller.SetBinding(EssgeeSingleKey.OPTION_2, device.RightShift, 0);
controller.SetBinding(EssgeeSingleKey.UP, device.W, 0);
controller.SetBinding(EssgeeSingleKey.DOWN, device.S, 0);
controller.SetBinding(EssgeeSingleKey.LEFT, device.A, 0);
controller.SetBinding(EssgeeSingleKey.RIGHT, device.D, 0);
controller.SetBinding(EssgeeSingleKey.BTN_1, device.J, 0);
controller.SetBinding(EssgeeSingleKey.BTN_2, device.K, 0);
controller.SetBinding(EssgeeSingleKey.BTN_3, device.U, 0);
controller.SetBinding(EssgeeSingleKey.BTN_4, device.I, 0);
break;
case 1:
controller.SetBinding(EssgeeSingleKey.OPTION_1, device.Keypad0, 0);
controller.SetBinding(EssgeeSingleKey.OPTION_2, device.Delete, 0);
controller.SetBinding(EssgeeSingleKey.UP, device.UpArrow, 0);
controller.SetBinding(EssgeeSingleKey.DOWN, device.DownArrow, 0);
controller.SetBinding(EssgeeSingleKey.LEFT, device.LeftArrow, 0);
controller.SetBinding(EssgeeSingleKey.RIGHT, device.RightArrow, 0);
controller.SetBinding(EssgeeSingleKey.BTN_1, device.Keypad1, 0);
controller.SetBinding(EssgeeSingleKey.BTN_2, device.Keypad2, 0);
controller.SetBinding(EssgeeSingleKey.BTN_3, device.Keypad3, 0);
controller.SetBinding(EssgeeSingleKey.BTN_4, device.Keypad4, 0);
break;
}
}
public override void Bind(PSVController_D device, ControllerBinder controller)
{
switch (controller.ControllerIndex)
{
case 0:
controller.SetBinding(EssgeeSingleKey.OPTION_1, device.Start, 0);
controller.SetBinding(EssgeeSingleKey.OPTION_2, device.Select, 0);
controller.SetBinding(EssgeeSingleKey.UP, device.Up, 0);
controller.SetBinding(EssgeeSingleKey.DOWN, device.Down, 0);
controller.SetBinding(EssgeeSingleKey.LEFT, device.Left, 0);
controller.SetBinding(EssgeeSingleKey.RIGHT, device.Right, 0);
controller.SetBinding(EssgeeSingleKey.BTN_1, device.Cross, 0);
controller.SetBinding(EssgeeSingleKey.BTN_2, device.Circle, 0);
controller.SetBinding(EssgeeSingleKey.BTN_3, device.Square, 0);
controller.SetBinding(EssgeeSingleKey.BTN_4, device.Triangle, 0);
controller.SetBinding(EssgeeSingleKey.UP, device.LeftStick.Up, 1);
controller.SetBinding(EssgeeSingleKey.DOWN, device.LeftStick.Down, 1);
controller.SetBinding(EssgeeSingleKey.LEFT, device.LeftStick.Left, 1);
controller.SetBinding(EssgeeSingleKey.RIGHT, device.LeftStick.Right, 1);
break;
}
}
public override void Bind(DualShockController_D device, ControllerBinder controller)
{
controller.SetBinding(EssgeeSingleKey.OPTION_1, device.Options, 0);
controller.SetBinding(EssgeeSingleKey.OPTION_2, device.Share, 0);
controller.SetBinding(EssgeeSingleKey.UP, device.Up, 0);
controller.SetBinding(EssgeeSingleKey.DOWN, device.Down, 0);
controller.SetBinding(EssgeeSingleKey.LEFT, device.Left, 0);
controller.SetBinding(EssgeeSingleKey.RIGHT, device.Right, 0);
controller.SetBinding(EssgeeSingleKey.BTN_1, device.Cross, 0);
controller.SetBinding(EssgeeSingleKey.BTN_2, device.Circle, 0);
controller.SetBinding(EssgeeSingleKey.BTN_3, device.Square, 0);
controller.SetBinding(EssgeeSingleKey.BTN_4, device.Triangle, 0);
controller.SetBinding(EssgeeSingleKey.UP, device.LeftStick.Up, 1);
controller.SetBinding(EssgeeSingleKey.DOWN, device.LeftStick.Down, 1);
controller.SetBinding(EssgeeSingleKey.LEFT, device.LeftStick.Left, 1);
controller.SetBinding(EssgeeSingleKey.RIGHT, device.LeftStick.Right, 1);
}
public override void Bind(GamePad_D device, ControllerBinder controller)
{
controller.SetBinding(EssgeeSingleKey.OPTION_1, device.Start, 0);
controller.SetBinding(EssgeeSingleKey.OPTION_2, device.Select, 0);
controller.SetBinding(EssgeeSingleKey.UP, device.Up, 0);
controller.SetBinding(EssgeeSingleKey.DOWN, device.Down, 0);
controller.SetBinding(EssgeeSingleKey.LEFT, device.Left, 0);
controller.SetBinding(EssgeeSingleKey.RIGHT, device.Right, 0);
controller.SetBinding(EssgeeSingleKey.BTN_1, device.South, 0);
controller.SetBinding(EssgeeSingleKey.BTN_2, device.East, 0);
controller.SetBinding(EssgeeSingleKey.BTN_3, device.West, 0);
controller.SetBinding(EssgeeSingleKey.BTN_4, device.North, 0);
controller.SetBinding(EssgeeSingleKey.UP, device.LeftStick.Up, 1);
controller.SetBinding(EssgeeSingleKey.DOWN, device.LeftStick.Down, 1);
controller.SetBinding(EssgeeSingleKey.LEFT, device.LeftStick.Left, 1);
controller.SetBinding(EssgeeSingleKey.RIGHT, device.LeftStick.Right, 1);
}
public override void Bind(XboxController_D device, ControllerBinder controller)
{
controller.SetBinding(EssgeeSingleKey.OPTION_1, device.Menu, 0);
controller.SetBinding(EssgeeSingleKey.OPTION_2, device.View, 0);
controller.SetBinding(EssgeeSingleKey.UP, device.Up, 0);
controller.SetBinding(EssgeeSingleKey.DOWN, device.Down, 0);
controller.SetBinding(EssgeeSingleKey.LEFT, device.Left, 0);
controller.SetBinding(EssgeeSingleKey.RIGHT, device.Right, 0);
controller.SetBinding(EssgeeSingleKey.BTN_1, device.A, 0);
controller.SetBinding(EssgeeSingleKey.BTN_2, device.B, 0);
controller.SetBinding(EssgeeSingleKey.BTN_3, device.X, 0);
controller.SetBinding(EssgeeSingleKey.BTN_4, device.Y, 0);
controller.SetBinding(EssgeeSingleKey.UP, device.LeftStick.Up, 1);
controller.SetBinding(EssgeeSingleKey.DOWN, device.LeftStick.Down, 1);
controller.SetBinding(EssgeeSingleKey.LEFT, device.LeftStick.Left, 1);
controller.SetBinding(EssgeeSingleKey.RIGHT, device.LeftStick.Right, 1);
}
}
public class MasterSystemKeyBinding : EssgeeKeyBinding
{
public override RomPlatformType Platform => RomPlatformType.MasterSystem;
public override int ControllerCount => 2;
}
public class SG1000KeyBinding : EssgeeKeyBinding
{
public override RomPlatformType Platform => RomPlatformType.Sg1000;
public override int ControllerCount => 2;
}
public class ColecoVisionKeyBinding : EssgeeKeyBinding
{
public override RomPlatformType Platform => RomPlatformType.ColecoVision;
public override int ControllerCount => 2;
}
public class GameBoyColorKeyBinding : EssgeeKeyBinding
{
public override RomPlatformType Platform => RomPlatformType.GameBoyColor;
public override int ControllerCount => 1;
}
public class GameBoyKeyBinding : EssgeeKeyBinding
{
public override RomPlatformType Platform => RomPlatformType.GameBoy;
public override int ControllerCount => 1;
}
public class GameGearKeyBinding : EssgeeKeyBinding
{
public override RomPlatformType Platform => RomPlatformType.GameGear;
public override int ControllerCount => 2;
}
public class SC3000KeyBinding : EssgeeKeyBinding
{
public override RomPlatformType Platform => RomPlatformType.Sc3000;
public override int ControllerCount => 2;
}
}