forked from sin365/AxibugEmuOnline
引入IDeviceBinder接口,以利用编译报错补充应该编写的代码,避免漏掉
This commit is contained in:
parent
fbe47bce1b
commit
6cc7b2fb4b
AxibugEmuOnline.Client/Assets/Script/AppMain/Manager
AppSettings/KeyMapperSetting
EssgeeKeyBinding.csIDeviceBinder.csIDeviceBinder.cs.metaKeyMapperSetting.csMAMEKeyBinding.csNesKeyBinding.csXMBKeyBinding.cs
InputDevicesManager
@ -22,57 +22,113 @@ namespace AxibugEmuOnline.Client.Settings
|
||||
|
||||
public abstract class EssgeeKeyBinding : EmuCoreControllerKeyBinding<EssgeeSingleKey>
|
||||
{
|
||||
protected override void OnRegistDevices(InputDevice_D device, BindingPage binding)
|
||||
public override void Bind(Keyboard_D device, ControllerBinder controller)
|
||||
{
|
||||
if (device is Keyboard_D keyboard)
|
||||
switch (controller.ControllerIndex)
|
||||
{
|
||||
switch (binding.ControllerIndex)
|
||||
{
|
||||
case 0:
|
||||
binding.SetBinding(EssgeeSingleKey.OPTION_1, keyboard.Return, 0);
|
||||
binding.SetBinding(EssgeeSingleKey.OPTION_2, keyboard.RightShift, 0);
|
||||
binding.SetBinding(EssgeeSingleKey.UP, keyboard.W, 0);
|
||||
binding.SetBinding(EssgeeSingleKey.DOWN, keyboard.S, 0);
|
||||
binding.SetBinding(EssgeeSingleKey.LEFT, keyboard.A, 0);
|
||||
binding.SetBinding(EssgeeSingleKey.RIGHT, keyboard.D, 0);
|
||||
binding.SetBinding(EssgeeSingleKey.BTN_1, keyboard.J, 0);
|
||||
binding.SetBinding(EssgeeSingleKey.BTN_2, keyboard.K, 0);
|
||||
binding.SetBinding(EssgeeSingleKey.BTN_3, keyboard.U, 0);
|
||||
binding.SetBinding(EssgeeSingleKey.BTN_4, keyboard.I, 0);
|
||||
break;
|
||||
case 1:
|
||||
binding.SetBinding(EssgeeSingleKey.OPTION_1, keyboard.Keypad0, 0);
|
||||
binding.SetBinding(EssgeeSingleKey.OPTION_2, keyboard.Delete, 0);
|
||||
binding.SetBinding(EssgeeSingleKey.UP, keyboard.UpArrow, 0);
|
||||
binding.SetBinding(EssgeeSingleKey.DOWN, keyboard.DownArrow, 0);
|
||||
binding.SetBinding(EssgeeSingleKey.LEFT, keyboard.LeftArrow, 0);
|
||||
binding.SetBinding(EssgeeSingleKey.RIGHT, keyboard.RightArrow, 0);
|
||||
binding.SetBinding(EssgeeSingleKey.BTN_1, keyboard.Keypad1, 0);
|
||||
binding.SetBinding(EssgeeSingleKey.BTN_2, keyboard.Keypad2, 0);
|
||||
binding.SetBinding(EssgeeSingleKey.BTN_3, keyboard.Keypad3, 0);
|
||||
binding.SetBinding(EssgeeSingleKey.BTN_4, keyboard.Keypad4, 0);
|
||||
break;
|
||||
}
|
||||
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;
|
||||
}
|
||||
else if (device is PSVController_D psvCon && binding.ControllerIndex == 0)
|
||||
}
|
||||
public override void Bind(PSVController_D device, ControllerBinder controller)
|
||||
{
|
||||
switch (controller.ControllerIndex)
|
||||
{
|
||||
binding.SetBinding(EssgeeSingleKey.OPTION_1, psvCon.Start, 0);
|
||||
binding.SetBinding(EssgeeSingleKey.OPTION_2, psvCon.Select, 0);
|
||||
binding.SetBinding(EssgeeSingleKey.UP, psvCon.Up, 0);
|
||||
binding.SetBinding(EssgeeSingleKey.DOWN, psvCon.Down, 0);
|
||||
binding.SetBinding(EssgeeSingleKey.LEFT, psvCon.Left, 0);
|
||||
binding.SetBinding(EssgeeSingleKey.RIGHT, psvCon.Right, 0);
|
||||
binding.SetBinding(EssgeeSingleKey.BTN_1, psvCon.Cross, 0);
|
||||
binding.SetBinding(EssgeeSingleKey.BTN_2, psvCon.Circle, 0);
|
||||
binding.SetBinding(EssgeeSingleKey.BTN_3, psvCon.Square, 0);
|
||||
binding.SetBinding(EssgeeSingleKey.BTN_4, psvCon.Triangle, 0);
|
||||
//PSV 摇杆
|
||||
binding.SetBinding(EssgeeSingleKey.UP, psvCon.LeftStick.UP, 1);
|
||||
binding.SetBinding(EssgeeSingleKey.DOWN, psvCon.LeftStick.Down, 1);
|
||||
binding.SetBinding(EssgeeSingleKey.LEFT, psvCon.LeftStick.Left, 1);
|
||||
binding.SetBinding(EssgeeSingleKey.RIGHT, psvCon.LeftStick.Right, 1);
|
||||
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
|
||||
@ -97,55 +153,11 @@ namespace AxibugEmuOnline.Client.Settings
|
||||
{
|
||||
public override RomPlatformType Platform => RomPlatformType.GameBoyColor;
|
||||
public override int ControllerCount => 1;
|
||||
|
||||
protected override void OnRegistDevices(InputDevice_D device, BindingPage binding)
|
||||
{
|
||||
if (device is Keyboard_D keyboard)
|
||||
{
|
||||
switch (binding.ControllerIndex)
|
||||
{
|
||||
case 0:
|
||||
binding.SetBinding(EssgeeSingleKey.OPTION_1, keyboard.Return, 0);
|
||||
binding.SetBinding(EssgeeSingleKey.OPTION_2, keyboard.RightShift, 0);
|
||||
binding.SetBinding(EssgeeSingleKey.UP, keyboard.W, 0);
|
||||
binding.SetBinding(EssgeeSingleKey.DOWN, keyboard.S, 0);
|
||||
binding.SetBinding(EssgeeSingleKey.LEFT, keyboard.A, 0);
|
||||
binding.SetBinding(EssgeeSingleKey.RIGHT, keyboard.D, 0);
|
||||
binding.SetBinding(EssgeeSingleKey.BTN_1, keyboard.J, 0);
|
||||
binding.SetBinding(EssgeeSingleKey.BTN_2, keyboard.K, 0);
|
||||
binding.SetBinding(EssgeeSingleKey.BTN_3, keyboard.U, 0);
|
||||
binding.SetBinding(EssgeeSingleKey.BTN_4, keyboard.I, 0);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
public class GameBoyKeyBinding : EssgeeKeyBinding
|
||||
{
|
||||
public override RomPlatformType Platform => RomPlatformType.GameBoy;
|
||||
public override int ControllerCount => 1;
|
||||
|
||||
protected override void OnRegistDevices(InputDevice_D device, BindingPage binding)
|
||||
{
|
||||
if (device is Keyboard_D keyboard)
|
||||
{
|
||||
switch (binding.ControllerIndex)
|
||||
{
|
||||
case 0:
|
||||
binding.SetBinding(EssgeeSingleKey.OPTION_1, keyboard.Return, 0);
|
||||
binding.SetBinding(EssgeeSingleKey.OPTION_2, keyboard.RightShift, 0);
|
||||
binding.SetBinding(EssgeeSingleKey.UP, keyboard.W, 0);
|
||||
binding.SetBinding(EssgeeSingleKey.DOWN, keyboard.S, 0);
|
||||
binding.SetBinding(EssgeeSingleKey.LEFT, keyboard.A, 0);
|
||||
binding.SetBinding(EssgeeSingleKey.RIGHT, keyboard.D, 0);
|
||||
binding.SetBinding(EssgeeSingleKey.BTN_1, keyboard.J, 0);
|
||||
binding.SetBinding(EssgeeSingleKey.BTN_2, keyboard.K, 0);
|
||||
binding.SetBinding(EssgeeSingleKey.BTN_3, keyboard.U, 0);
|
||||
binding.SetBinding(EssgeeSingleKey.BTN_4, keyboard.I, 0);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public class GameGearKeyBinding : EssgeeKeyBinding
|
||||
|
@ -0,0 +1,17 @@
|
||||
using AxibugEmuOnline.Client.InputDevices;
|
||||
using System;
|
||||
|
||||
namespace AxibugEmuOnline.Client.Settings
|
||||
{
|
||||
/// <summary>
|
||||
/// 在所有<see cref="EmuCoreControllerKeyBinding{T}"/>的派生类中实现此接口以支持一种设备的绑定
|
||||
/// <para>一种<see cref="EmuCoreControllerKeyBinding{T}"/>
|
||||
/// 一个<see cref="EmuCoreControllerKeyBinding{T}.ControllerBinder"/>可以与多种设备建立绑定,但设备类型不可重复</para>
|
||||
/// </summary>
|
||||
public interface IDeviceBinder<ENUM, DEVICE>
|
||||
where ENUM : Enum
|
||||
where DEVICE : InputDevice_D
|
||||
{
|
||||
void Bind(DEVICE device, EmuCoreControllerKeyBinding<ENUM>.ControllerBinder controller);
|
||||
}
|
||||
}
|
@ -0,0 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: b7c859b1adea6a5448ba60e43af3ccc6
|
@ -2,7 +2,6 @@
|
||||
using AxibugEmuOnline.Client.InputDevices;
|
||||
using AxibugProtobuf;
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using UnityEngine;
|
||||
@ -58,33 +57,31 @@ namespace AxibugEmuOnline.Client.Settings
|
||||
/// 模拟器核心控制器键位绑定器
|
||||
/// </summary>
|
||||
/// <typeparam name="T"></typeparam>
|
||||
public abstract class EmuCoreControllerKeyBinding<T> : EmuCoreControllerKeyBinding
|
||||
public abstract class EmuCoreControllerKeyBinding<T> : EmuCoreControllerKeyBinding,
|
||||
IDeviceBinder<T, Keyboard_D>,
|
||||
IDeviceBinder<T, GamePad_D>,
|
||||
IDeviceBinder<T, DualShockController_D>,
|
||||
IDeviceBinder<T, XboxController_D>,
|
||||
IDeviceBinder<T, PSVController_D>
|
||||
where T : Enum
|
||||
{
|
||||
List<BindingPage> m_bindingPages = new List<BindingPage>();
|
||||
//每一个实例代表一个对应模拟器平台的控制器索引
|
||||
List<ControllerBinder> m_bindingPages = new List<ControllerBinder>();
|
||||
|
||||
public EmuCoreControllerKeyBinding()
|
||||
{
|
||||
var types = GetType().GetInterfaces();
|
||||
|
||||
for (int i = 0; i < ControllerCount; i++)
|
||||
{
|
||||
m_bindingPages.Add(new BindingPage(i, this));
|
||||
m_bindingPages.Add(new ControllerBinder(i, this));
|
||||
}
|
||||
|
||||
var keyboard = App.input.GetDevice<Keyboard_D>();
|
||||
if (keyboard != null)
|
||||
foreach (var device in App.input.GetDevices())
|
||||
{
|
||||
foreach (var binding in m_bindingPages)
|
||||
{
|
||||
binding.RegistInputDevice(keyboard);
|
||||
}
|
||||
}
|
||||
|
||||
var psvController = App.input.GetDevice<PSVController_D>();
|
||||
if (psvController != null)
|
||||
{
|
||||
foreach (var binding in m_bindingPages)
|
||||
{
|
||||
binding.RegistInputDevice(psvController);
|
||||
binding.RegistInputDevice(device);
|
||||
}
|
||||
}
|
||||
|
||||
@ -94,12 +91,9 @@ namespace AxibugEmuOnline.Client.Settings
|
||||
|
||||
private void InputDevicesMgr_OnDeviceConnected(InputDevice_D connectDevice)
|
||||
{
|
||||
if (connectDevice is Keyboard_D)
|
||||
foreach (var binding in m_bindingPages)
|
||||
{
|
||||
foreach (var binding in m_bindingPages)
|
||||
{
|
||||
binding.RegistInputDevice(connectDevice);
|
||||
}
|
||||
binding.RegistInputDevice(connectDevice);
|
||||
}
|
||||
}
|
||||
|
||||
@ -109,30 +103,18 @@ namespace AxibugEmuOnline.Client.Settings
|
||||
{
|
||||
binding.UnregistInputDevice(lostDevice);
|
||||
}
|
||||
if (lostDevice is Keyboard_D) //键盘丢失,立即查找还存在的键盘并建立连接
|
||||
{
|
||||
var anotherKeyboard = App.input.GetDevice<Keyboard_D>();
|
||||
if (anotherKeyboard != null)
|
||||
{
|
||||
foreach (var binding in m_bindingPages)
|
||||
{
|
||||
binding.UnregistInputDevice(lostDevice);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
IEnumerable<T> DefineKeys()
|
||||
internal void RaiseDeviceRegist(InputDevice_D device, ControllerBinder binding)
|
||||
{
|
||||
return Enum.GetValues(typeof(T)).Cast<T>();
|
||||
if (device is Keyboard_D keyboard && this is IDeviceBinder<T, Keyboard_D> keyboardIn) keyboardIn.Bind(keyboard, binding);
|
||||
if (device is GamePad_D gamePad && this is IDeviceBinder<T, GamePad_D> gamepadIn) gamepadIn.Bind(gamePad, binding);
|
||||
if (device is DualShockController_D dsC && this is IDeviceBinder<T, DualShockController_D> dsIn) dsIn.Bind(dsC, binding);
|
||||
if (device is XboxController_D xbC && this is IDeviceBinder<T, XboxController_D> xbIn) xbIn.Bind(xbC, binding);
|
||||
if (device is PSVController_D psvC && this is IDeviceBinder<T, PSVController_D> psvIn) psvIn.Bind(psvC, binding);
|
||||
else throw new NotImplementedException($"{device.GetType()}");
|
||||
}
|
||||
|
||||
internal void RaiseDeviceRegist(InputDevice_D device, BindingPage binding)
|
||||
{
|
||||
OnRegistDevices(device, binding);
|
||||
}
|
||||
protected abstract void OnRegistDevices(InputDevice_D device, BindingPage binding);
|
||||
|
||||
public bool Start(T emuControl, int controllerIndex)
|
||||
{
|
||||
var binding = m_bindingPages[controllerIndex];
|
||||
@ -234,7 +216,7 @@ namespace AxibugEmuOnline.Client.Settings
|
||||
|
||||
public class MapSetting : Dictionary<T, List<InputControl_C>> { }
|
||||
|
||||
public class BindingPage
|
||||
public class ControllerBinder
|
||||
{
|
||||
Dictionary<Type, InputDevice_D> m_registedDevices = new Dictionary<Type, InputDevice_D>();
|
||||
Dictionary<InputDevice_D, MapSetting> m_mapSetting = new Dictionary<InputDevice_D, MapSetting>();
|
||||
@ -242,7 +224,7 @@ namespace AxibugEmuOnline.Client.Settings
|
||||
public int ControllerIndex { get; }
|
||||
public EmuCoreControllerKeyBinding<T> Host { get; }
|
||||
|
||||
internal BindingPage(int controllerIndex, EmuCoreControllerKeyBinding<T> host)
|
||||
internal ControllerBinder(int controllerIndex, EmuCoreControllerKeyBinding<T> host)
|
||||
{
|
||||
ControllerIndex = controllerIndex;
|
||||
Host = host;
|
||||
@ -342,5 +324,10 @@ namespace AxibugEmuOnline.Client.Settings
|
||||
}
|
||||
}
|
||||
|
||||
public abstract void Bind(Keyboard_D device, ControllerBinder controller);
|
||||
public abstract void Bind(GamePad_D device, ControllerBinder controller);
|
||||
public abstract void Bind(DualShockController_D device, ControllerBinder controller);
|
||||
public abstract void Bind(XboxController_D device, ControllerBinder controller);
|
||||
public abstract void Bind(PSVController_D device, ControllerBinder controller);
|
||||
}
|
||||
}
|
@ -1,5 +1,6 @@
|
||||
using AxibugEmuOnline.Client.InputDevices;
|
||||
using AxibugProtobuf;
|
||||
using UnityEngine.UIElements;
|
||||
|
||||
namespace AxibugEmuOnline.Client.Settings
|
||||
{
|
||||
@ -23,43 +24,120 @@ namespace AxibugEmuOnline.Client.Settings
|
||||
{
|
||||
public override int ControllerCount => 4;
|
||||
|
||||
protected override void OnRegistDevices(InputDevice_D device, BindingPage binding)
|
||||
public override void Bind(Keyboard_D device, ControllerBinder controller)
|
||||
{
|
||||
if (device is Keyboard_D keyboard)
|
||||
switch (controller.ControllerIndex)
|
||||
{
|
||||
switch (binding.ControllerIndex)
|
||||
{
|
||||
case 0:
|
||||
binding.SetBinding(UMAMEKSingleKey.INSERT_COIN, keyboard.Q, 0);
|
||||
binding.SetBinding(UMAMEKSingleKey.GAMESTART, keyboard.E, 0);
|
||||
binding.SetBinding(UMAMEKSingleKey.UP, keyboard.W, 0);
|
||||
binding.SetBinding(UMAMEKSingleKey.DOWN, keyboard.S, 0);
|
||||
binding.SetBinding(UMAMEKSingleKey.LEFT, keyboard.A, 0);
|
||||
binding.SetBinding(UMAMEKSingleKey.RIGHT, keyboard.D, 0);
|
||||
binding.SetBinding(UMAMEKSingleKey.BTN_A, keyboard.J, 0);
|
||||
binding.SetBinding(UMAMEKSingleKey.BTN_B, keyboard.K, 0);
|
||||
binding.SetBinding(UMAMEKSingleKey.BTN_C, keyboard.L, 0);
|
||||
binding.SetBinding(UMAMEKSingleKey.BTN_D, keyboard.U, 0);
|
||||
binding.SetBinding(UMAMEKSingleKey.BTN_E, keyboard.I, 0);
|
||||
binding.SetBinding(UMAMEKSingleKey.BTN_F, keyboard.O, 0);
|
||||
break;
|
||||
case 1:
|
||||
binding.SetBinding(UMAMEKSingleKey.INSERT_COIN, keyboard.Delete, 0);
|
||||
binding.SetBinding(UMAMEKSingleKey.GAMESTART, keyboard.PageDown, 0);
|
||||
binding.SetBinding(UMAMEKSingleKey.UP, keyboard.UpArrow, 0);
|
||||
binding.SetBinding(UMAMEKSingleKey.DOWN, keyboard.DownArrow, 0);
|
||||
binding.SetBinding(UMAMEKSingleKey.LEFT, keyboard.LeftArrow, 0);
|
||||
binding.SetBinding(UMAMEKSingleKey.RIGHT, keyboard.RightArrow, 0);
|
||||
binding.SetBinding(UMAMEKSingleKey.BTN_A, keyboard.Keypad1, 0);
|
||||
binding.SetBinding(UMAMEKSingleKey.BTN_B, keyboard.Keypad2, 0);
|
||||
binding.SetBinding(UMAMEKSingleKey.BTN_C, keyboard.Keypad3, 0);
|
||||
binding.SetBinding(UMAMEKSingleKey.BTN_D, keyboard.Keypad4, 0);
|
||||
binding.SetBinding(UMAMEKSingleKey.BTN_E, keyboard.Keypad5, 0);
|
||||
binding.SetBinding(UMAMEKSingleKey.BTN_F, keyboard.Keypad6, 0);
|
||||
break;
|
||||
}
|
||||
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 class NEOGEOKeyBinding : MAMEKeyBinding
|
||||
|
@ -9,35 +9,100 @@ namespace AxibugEmuOnline.Client.Settings
|
||||
public override RomPlatformType Platform => RomPlatformType.Nes;
|
||||
public override int ControllerCount => 4;
|
||||
|
||||
protected override void OnRegistDevices(InputDevice_D device, BindingPage binding)
|
||||
public override void Bind(Keyboard_D device, ControllerBinder controller)
|
||||
{
|
||||
if (device is Keyboard_D keyboard)
|
||||
switch (controller.ControllerIndex)
|
||||
{
|
||||
switch (binding.ControllerIndex)
|
||||
{
|
||||
case 0:
|
||||
binding.SetBinding(EnumButtonType.LEFT, keyboard.A, 0);
|
||||
binding.SetBinding(EnumButtonType.RIGHT, keyboard.D, 0);
|
||||
binding.SetBinding(EnumButtonType.UP, keyboard.W, 0);
|
||||
binding.SetBinding(EnumButtonType.DOWN, keyboard.S, 0);
|
||||
binding.SetBinding(EnumButtonType.A, keyboard.K, 0);
|
||||
binding.SetBinding(EnumButtonType.B, keyboard.J, 0);
|
||||
binding.SetBinding(EnumButtonType.SELECT, keyboard.V, 0);
|
||||
binding.SetBinding(EnumButtonType.START, keyboard.B, 0);
|
||||
binding.SetBinding(EnumButtonType.MIC, keyboard.M, 0);
|
||||
break;
|
||||
case 1:
|
||||
binding.SetBinding(EnumButtonType.UP, keyboard.UpArrow, 0);
|
||||
binding.SetBinding(EnumButtonType.DOWN, keyboard.DownArrow, 0);
|
||||
binding.SetBinding(EnumButtonType.LEFT, keyboard.LeftArrow, 0);
|
||||
binding.SetBinding(EnumButtonType.RIGHT, keyboard.RightArrow, 0);
|
||||
binding.SetBinding(EnumButtonType.A, keyboard.Keypad2, 0);
|
||||
binding.SetBinding(EnumButtonType.B, keyboard.Keypad1, 0);
|
||||
binding.SetBinding(EnumButtonType.SELECT, keyboard.Keypad0, 0);
|
||||
binding.SetBinding(EnumButtonType.START, keyboard.KeypadPeriod, 0);
|
||||
break;
|
||||
}
|
||||
case 0:
|
||||
controller.SetBinding(EnumButtonType.LEFT, device.A, 0);
|
||||
controller.SetBinding(EnumButtonType.RIGHT, device.D, 0);
|
||||
controller.SetBinding(EnumButtonType.UP, device.W, 0);
|
||||
controller.SetBinding(EnumButtonType.DOWN, device.S, 0);
|
||||
controller.SetBinding(EnumButtonType.A, device.K, 0);
|
||||
controller.SetBinding(EnumButtonType.B, device.J, 0);
|
||||
controller.SetBinding(EnumButtonType.SELECT, device.V, 0);
|
||||
controller.SetBinding(EnumButtonType.START, device.B, 0);
|
||||
controller.SetBinding(EnumButtonType.MIC, device.M, 0);
|
||||
break;
|
||||
case 1:
|
||||
controller.SetBinding(EnumButtonType.UP, device.UpArrow, 0);
|
||||
controller.SetBinding(EnumButtonType.DOWN, device.DownArrow, 0);
|
||||
controller.SetBinding(EnumButtonType.LEFT, device.LeftArrow, 0);
|
||||
controller.SetBinding(EnumButtonType.RIGHT, device.RightArrow, 0);
|
||||
controller.SetBinding(EnumButtonType.A, device.Keypad2, 0);
|
||||
controller.SetBinding(EnumButtonType.B, device.Keypad1, 0);
|
||||
controller.SetBinding(EnumButtonType.SELECT, device.Keypad0, 0);
|
||||
controller.SetBinding(EnumButtonType.START, device.KeypadPeriod, 0);
|
||||
break;
|
||||
}
|
||||
}
|
||||
public override void Bind(DualShockController_D device, ControllerBinder controller)
|
||||
{
|
||||
controller.SetBinding(EnumButtonType.LEFT, device.Left, 0);
|
||||
controller.SetBinding(EnumButtonType.RIGHT, device.Right, 0);
|
||||
controller.SetBinding(EnumButtonType.UP, device.Up, 0);
|
||||
controller.SetBinding(EnumButtonType.DOWN, device.Down, 0);
|
||||
controller.SetBinding(EnumButtonType.A, device.Cross, 0);
|
||||
controller.SetBinding(EnumButtonType.B, device.Square, 0);
|
||||
controller.SetBinding(EnumButtonType.SELECT, device.Share, 0);
|
||||
controller.SetBinding(EnumButtonType.START, device.Options, 0);
|
||||
controller.SetBinding(EnumButtonType.MIC, device.L1, 0);
|
||||
|
||||
controller.SetBinding(EnumButtonType.LEFT, device.LeftStick.Left, 1);
|
||||
controller.SetBinding(EnumButtonType.RIGHT, device.LeftStick.Right, 1);
|
||||
controller.SetBinding(EnumButtonType.UP, device.LeftStick.Up, 1);
|
||||
controller.SetBinding(EnumButtonType.DOWN, device.LeftStick.Down, 1);
|
||||
}
|
||||
public override void Bind(GamePad_D device, ControllerBinder controller)
|
||||
{
|
||||
controller.SetBinding(EnumButtonType.LEFT, device.Left, 0);
|
||||
controller.SetBinding(EnumButtonType.RIGHT, device.Right, 0);
|
||||
controller.SetBinding(EnumButtonType.UP, device.Up, 0);
|
||||
controller.SetBinding(EnumButtonType.DOWN, device.Down, 0);
|
||||
controller.SetBinding(EnumButtonType.A, device.South, 0);
|
||||
controller.SetBinding(EnumButtonType.B, device.West, 0);
|
||||
controller.SetBinding(EnumButtonType.SELECT, device.Select, 0);
|
||||
controller.SetBinding(EnumButtonType.START, device.Start, 0);
|
||||
controller.SetBinding(EnumButtonType.MIC, device.LeftShoulder, 0);
|
||||
|
||||
controller.SetBinding(EnumButtonType.LEFT, device.LeftStick.Left, 1);
|
||||
controller.SetBinding(EnumButtonType.RIGHT, device.LeftStick.Right, 1);
|
||||
controller.SetBinding(EnumButtonType.UP, device.LeftStick.Up, 1);
|
||||
controller.SetBinding(EnumButtonType.DOWN, device.LeftStick.Down, 1);
|
||||
}
|
||||
public override void Bind(PSVController_D device, ControllerBinder controller)
|
||||
{
|
||||
controller.SetBinding(EnumButtonType.LEFT, device.Left, 0);
|
||||
controller.SetBinding(EnumButtonType.RIGHT, device.Right, 0);
|
||||
controller.SetBinding(EnumButtonType.UP, device.Up, 0);
|
||||
controller.SetBinding(EnumButtonType.DOWN, device.Down, 0);
|
||||
controller.SetBinding(EnumButtonType.A, device.Cross, 0);
|
||||
controller.SetBinding(EnumButtonType.B, device.Square, 0);
|
||||
controller.SetBinding(EnumButtonType.SELECT, device.Select, 0);
|
||||
controller.SetBinding(EnumButtonType.START, device.Start, 0);
|
||||
controller.SetBinding(EnumButtonType.MIC, device.L, 0);
|
||||
|
||||
controller.SetBinding(EnumButtonType.LEFT, device.LeftStick.Left, 0);
|
||||
controller.SetBinding(EnumButtonType.RIGHT, device.LeftStick.Right, 0);
|
||||
controller.SetBinding(EnumButtonType.UP, device.LeftStick.Up, 0);
|
||||
controller.SetBinding(EnumButtonType.DOWN, device.LeftStick.Down, 0);
|
||||
}
|
||||
public override void Bind(XboxController_D device, ControllerBinder controller)
|
||||
{
|
||||
controller.SetBinding(EnumButtonType.LEFT, device.Left, 0);
|
||||
controller.SetBinding(EnumButtonType.RIGHT, device.Right, 0);
|
||||
controller.SetBinding(EnumButtonType.UP, device.Up, 0);
|
||||
controller.SetBinding(EnumButtonType.DOWN, device.Down, 0);
|
||||
controller.SetBinding(EnumButtonType.A, device.A, 0);
|
||||
controller.SetBinding(EnumButtonType.B, device.X, 0);
|
||||
controller.SetBinding(EnumButtonType.SELECT, device.View, 0);
|
||||
controller.SetBinding(EnumButtonType.START, device.Menu, 0);
|
||||
controller.SetBinding(EnumButtonType.MIC, device.LeftBumper, 0);
|
||||
|
||||
controller.SetBinding(EnumButtonType.LEFT, device.LeftStick.Left, 0);
|
||||
controller.SetBinding(EnumButtonType.RIGHT, device.LeftStick.Right, 0);
|
||||
controller.SetBinding(EnumButtonType.UP, device.LeftStick.Up, 0);
|
||||
controller.SetBinding(EnumButtonType.DOWN, device.LeftStick.Down, 0);
|
||||
}
|
||||
}
|
||||
}
|
@ -9,38 +9,94 @@ namespace AxibugEmuOnline.Client
|
||||
public override RomPlatformType Platform => RomPlatformType.Invalid;
|
||||
public override int ControllerCount => 2;
|
||||
|
||||
protected override void OnRegistDevices(InputDevice_D device, BindingPage binding)
|
||||
public override void Bind(Keyboard_D device, ControllerBinder controller)
|
||||
{
|
||||
if (device is Keyboard_D keyboard)
|
||||
switch (controller.ControllerIndex)
|
||||
{
|
||||
switch (binding.ControllerIndex)
|
||||
{
|
||||
case 0://设置标准UI控制
|
||||
//第一套控制布局 WSAD+JKLI
|
||||
binding.SetBinding(EnumCommand.Back, keyboard.L, 0);
|
||||
binding.SetBinding(EnumCommand.Enter, keyboard.K, 0);
|
||||
binding.SetBinding(EnumCommand.OptionMenu, keyboard.I, 0);
|
||||
binding.SetBinding(EnumCommand.SelectItemDown, keyboard.S, 0);
|
||||
binding.SetBinding(EnumCommand.SelectItemLeft, keyboard.A, 0);
|
||||
binding.SetBinding(EnumCommand.SelectItemRight, keyboard.D, 0);
|
||||
binding.SetBinding(EnumCommand.SelectItemUp, keyboard.W, 0);
|
||||
case 0://设置标准UI控制 //第一套控制布局 WSAD+JKLI
|
||||
controller.SetBinding(EnumCommand.Back, device.L, 0);
|
||||
controller.SetBinding(EnumCommand.Enter, device.K, 0);
|
||||
controller.SetBinding(EnumCommand.OptionMenu, device.I, 0);
|
||||
controller.SetBinding(EnumCommand.SelectItemDown, device.S, 0);
|
||||
controller.SetBinding(EnumCommand.SelectItemLeft, device.A, 0);
|
||||
controller.SetBinding(EnumCommand.SelectItemRight, device.D, 0);
|
||||
controller.SetBinding(EnumCommand.SelectItemUp, device.W, 0);
|
||||
|
||||
//第二套控制布局 LOWB用
|
||||
binding.SetBinding(EnumCommand.Back, keyboard.Escape, 1);
|
||||
binding.SetBinding(EnumCommand.Back, keyboard.Backspace, 2);
|
||||
binding.SetBinding(EnumCommand.Enter, keyboard.Return, 1);
|
||||
binding.SetBinding(EnumCommand.OptionMenu, keyboard.LeftShift, 1);
|
||||
binding.SetBinding(EnumCommand.OptionMenu, keyboard.RightShift, 2);
|
||||
binding.SetBinding(EnumCommand.SelectItemDown, keyboard.DownArrow, 1);
|
||||
binding.SetBinding(EnumCommand.SelectItemLeft, keyboard.LeftArrow, 1);
|
||||
binding.SetBinding(EnumCommand.SelectItemRight, keyboard.RightArrow, 1);
|
||||
binding.SetBinding(EnumCommand.SelectItemUp, keyboard.UpArrow, 1);
|
||||
break;
|
||||
case 1://游戏中UI控制
|
||||
binding.SetBinding(EnumCommand.OptionMenu, keyboard.Escape, 0);
|
||||
break;
|
||||
}
|
||||
//第二套控制布局 LOWB用
|
||||
controller.SetBinding(EnumCommand.Back, device.Escape, 1);
|
||||
controller.SetBinding(EnumCommand.Back, device.Backspace, 2);
|
||||
controller.SetBinding(EnumCommand.Enter, device.Return, 1);
|
||||
controller.SetBinding(EnumCommand.OptionMenu, device.LeftShift, 1);
|
||||
controller.SetBinding(EnumCommand.OptionMenu, device.RightShift, 2);
|
||||
controller.SetBinding(EnumCommand.SelectItemDown, device.DownArrow, 1);
|
||||
controller.SetBinding(EnumCommand.SelectItemLeft, device.LeftArrow, 1);
|
||||
controller.SetBinding(EnumCommand.SelectItemRight, device.RightArrow, 1);
|
||||
controller.SetBinding(EnumCommand.SelectItemUp, device.UpArrow, 1);
|
||||
break;
|
||||
case 1://游戏中UI控制
|
||||
controller.SetBinding(EnumCommand.OptionMenu, device.Escape, 0);
|
||||
break;
|
||||
}
|
||||
}
|
||||
public override void Bind(DualShockController_D device, ControllerBinder controller)
|
||||
{
|
||||
controller.SetBinding(EnumCommand.Back, device.Circle, 0);
|
||||
controller.SetBinding(EnumCommand.Enter, device.Cross, 0);
|
||||
controller.SetBinding(EnumCommand.OptionMenu, device.Options, 0);
|
||||
controller.SetBinding(EnumCommand.SelectItemDown, device.Down, 0);
|
||||
controller.SetBinding(EnumCommand.SelectItemLeft, device.Left, 0);
|
||||
controller.SetBinding(EnumCommand.SelectItemRight, device.Right, 0);
|
||||
controller.SetBinding(EnumCommand.SelectItemUp, device.Up, 0);
|
||||
|
||||
controller.SetBinding(EnumCommand.SelectItemDown, device.LeftStick.Down, 1);
|
||||
controller.SetBinding(EnumCommand.SelectItemLeft, device.LeftStick.Left, 1);
|
||||
controller.SetBinding(EnumCommand.SelectItemRight, device.LeftStick.Right, 1);
|
||||
controller.SetBinding(EnumCommand.SelectItemUp, device.LeftStick.Up, 1);
|
||||
}
|
||||
public override void Bind(GamePad_D device, ControllerBinder controller)
|
||||
{
|
||||
controller.SetBinding(EnumCommand.Back, device.East, 0);
|
||||
controller.SetBinding(EnumCommand.Enter, device.South, 0);
|
||||
controller.SetBinding(EnumCommand.OptionMenu, device.Start, 0);
|
||||
controller.SetBinding(EnumCommand.SelectItemDown, device.Down, 0);
|
||||
controller.SetBinding(EnumCommand.SelectItemLeft, device.Left, 0);
|
||||
controller.SetBinding(EnumCommand.SelectItemRight, device.Right, 0);
|
||||
controller.SetBinding(EnumCommand.SelectItemUp, device.Up, 0);
|
||||
|
||||
controller.SetBinding(EnumCommand.SelectItemDown, device.LeftStick.Down, 1);
|
||||
controller.SetBinding(EnumCommand.SelectItemLeft, device.LeftStick.Left, 1);
|
||||
controller.SetBinding(EnumCommand.SelectItemRight, device.LeftStick.Right, 1);
|
||||
controller.SetBinding(EnumCommand.SelectItemUp, device.LeftStick.Up, 1);
|
||||
}
|
||||
public override void Bind(PSVController_D device, ControllerBinder controller)
|
||||
{
|
||||
controller.SetBinding(EnumCommand.Back, device.Circle, 0);
|
||||
controller.SetBinding(EnumCommand.Enter, device.Cross, 0);
|
||||
controller.SetBinding(EnumCommand.OptionMenu, device.Start, 0);
|
||||
controller.SetBinding(EnumCommand.SelectItemDown, device.Down, 0);
|
||||
controller.SetBinding(EnumCommand.SelectItemLeft, device.Left, 0);
|
||||
controller.SetBinding(EnumCommand.SelectItemRight, device.Right, 0);
|
||||
controller.SetBinding(EnumCommand.SelectItemUp, device.Up, 0);
|
||||
|
||||
controller.SetBinding(EnumCommand.SelectItemDown, device.LeftStick.Down, 1);
|
||||
controller.SetBinding(EnumCommand.SelectItemLeft, device.LeftStick.Left, 1);
|
||||
controller.SetBinding(EnumCommand.SelectItemRight, device.LeftStick.Right, 1);
|
||||
controller.SetBinding(EnumCommand.SelectItemUp, device.LeftStick.Up, 1);
|
||||
}
|
||||
public override void Bind(XboxController_D device, ControllerBinder controller)
|
||||
{
|
||||
controller.SetBinding(EnumCommand.Back, device.B, 0);
|
||||
controller.SetBinding(EnumCommand.Enter, device.A, 0);
|
||||
controller.SetBinding(EnumCommand.OptionMenu, device.Menu, 0);
|
||||
controller.SetBinding(EnumCommand.SelectItemDown, device.Down, 0);
|
||||
controller.SetBinding(EnumCommand.SelectItemLeft, device.Left, 0);
|
||||
controller.SetBinding(EnumCommand.SelectItemRight, device.Right, 0);
|
||||
controller.SetBinding(EnumCommand.SelectItemUp, device.Up, 0);
|
||||
|
||||
controller.SetBinding(EnumCommand.SelectItemDown, device.LeftStick.Down, 1);
|
||||
controller.SetBinding(EnumCommand.SelectItemLeft, device.LeftStick.Left, 1);
|
||||
controller.SetBinding(EnumCommand.SelectItemRight, device.LeftStick.Right, 1);
|
||||
controller.SetBinding(EnumCommand.SelectItemUp, device.LeftStick.Up, 1);
|
||||
}
|
||||
}
|
||||
}
|
@ -7,7 +7,7 @@ namespace AxibugEmuOnline.Client.InputDevices
|
||||
/// </summary>
|
||||
public class Stick_C : InputControl_C
|
||||
{
|
||||
public VirtualButton UP;
|
||||
public VirtualButton Up;
|
||||
public VirtualButton Down;
|
||||
public VirtualButton Left;
|
||||
public VirtualButton Right;
|
||||
@ -20,8 +20,8 @@ namespace AxibugEmuOnline.Client.InputDevices
|
||||
{
|
||||
var axis = GetVector2();
|
||||
|
||||
UP.m_performing = axis.y > 0f;
|
||||
UP.Update();
|
||||
Up.m_performing = axis.y > 0f;
|
||||
Up.Update();
|
||||
|
||||
Down.m_performing = axis.y < 0f;
|
||||
Down.Update();
|
||||
|
@ -55,6 +55,14 @@ namespace AxibugEmuOnline.Client.InputDevices
|
||||
|
||||
return null;
|
||||
}
|
||||
/// <summary>
|
||||
/// 获得所有存在的输入设备
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public IEnumerable<InputDevice_D> GetDevices()
|
||||
{
|
||||
return m_devices.Values;
|
||||
}
|
||||
|
||||
/// <summary> 由外部驱动的逻辑更新入口 </summary>
|
||||
public void Update()
|
||||
|
@ -1,12 +1,8 @@
|
||||
#if ENABLE_INPUT_SYSTEM
|
||||
using Google.Protobuf.WellKnownTypes;
|
||||
using NUnit.Framework.Internal;
|
||||
using System.Collections.Generic;
|
||||
using UnityEditor.Experimental.GraphView;
|
||||
using UnityEngine;
|
||||
using UnityEngine.InputSystem;
|
||||
using UnityEngine.InputSystem.DualShock;
|
||||
using UnityEngine.InputSystem.Haptics;
|
||||
using UnityEngine.InputSystem.XInput;
|
||||
|
||||
namespace AxibugEmuOnline.Client.InputDevices.ForInputSystem
|
||||
@ -249,7 +245,7 @@ namespace AxibugEmuOnline.Client.InputDevices.ForInputSystem
|
||||
mapper[ds_d.LeftStick] = ipDsGamePad.leftStick;
|
||||
mapper[ds_d.RightStick] = ipDsGamePad.rightStick;
|
||||
}
|
||||
else if(device_d is XboxController_D xbox_d)
|
||||
else if (device_d is XboxController_D xbox_d)
|
||||
{
|
||||
var ipXInputGamePad = ipdevice as XInputController;
|
||||
mapper[xbox_d.X] = ipXInputGamePad.xButton;
|
||||
|
Loading…
Reference in New Issue
Block a user