From cfb3bc8b6a6323841ecaa30a15338324a89217ad Mon Sep 17 00:00:00 2001 From: "ALIENJACK\\alien" <alienjack@foxmail.com> Date: Tue, 1 Apr 2025 15:35:17 +0800 Subject: [PATCH] =?UTF-8?q?Input=E6=9C=BA=E5=88=B6=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E5=B7=B2=E5=AE=8C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../UIPrefabs/OverlayUI/Overlay.prefab | 13 +- .../Resources/UIPrefabs/ScreenKeyPad.prefab | 13 + .../Assets/Scene/AxibugEmuOnline.Client.unity | 2 +- .../ColecoVisionMultiKeysSetting.cs | 86 ----- .../ColecoVisionMultiKeysSetting.cs.meta | 2 - .../GameBoyColorMultiKeysSetting.cs | 69 ---- .../GameBoyColorMultiKeysSetting.cs.meta | 2 - .../GameBoyMultiKeysSetting.cs | 69 ---- .../GameBoyMultiKeysSetting.cs.meta | 2 - .../GameGearMultiKeysSetting.cs | 86 ----- .../GameGearMultiKeysSetting.cs.meta | 2 - .../GamingMultiKeysSetting.cs | 43 --- .../GamingMultiKeysSetting.cs.meta | 2 - .../MasterSystemMultiKeysSetting.cs | 88 ----- .../MasterSystemMultiKeysSetting.cs.meta | 2 - .../NESMultiKeysSetting.cs | 80 ----- .../NESMultiKeysSetting.cs.meta | 2 - .../SC3000MultiKeysSetting.cs | 86 ----- .../SC3000MultiKeysSetting.cs.meta | 2 - .../SG1000MultiKeysSetting.cs | 86 ----- .../SG1000MultiKeysSetting.cs.meta | 2 - .../UMAMEMultiKeysSetting.cs | 83 ----- .../UMAMEMultiKeysSetting.cs.meta | 2 - .../XMBMultiKeysSetting.cs | 72 ---- .../XMBMultiKeysSetting.cs.meta | 2 - .../AppMain/AxiInputSP/AxiInput.Struct.cs | 8 +- .../Script/AppMain/AxiInputSP/AxiInputEx.cs | 79 ----- .../AppMain/AxiInputSP/AxiInputEx.cs.meta | 2 - .../AxiInputSP/UGUI/AxiInputUGUICenter.cs | 78 ----- .../UGUI/AxiInputUGUICenter.cs.meta | 2 - .../AxiInputSP/UGUI/AxiInputUGUIHandle.cs | 40 --- .../UGUI/AxiInputUGUIHandle.cs.meta | 2 - .../AppMain/AxiInputSP/UGUI/AxiIptButton.cs | 43 +-- .../AppMain/AxiInputSP/UGUI/AxiIptJoystick.cs | 121 ------- .../AxiInputSP/UGUI/AxiIptJoystick.cs.meta | 2 - .../AxiInputSP/UGUI/AxiScreenGamepad.cs | 62 ++++ .../AxiInputSP/UGUI/AxiScreenGamepad.cs.meta | 2 + .../UEssgeeInterface/UEGKeyboard.cs | 2 - .../MameEmulator/UniInterface/UniKeyboard.cs | 1 - .../Assets/Script/AppMain/Manager/AppInput.cs | 179 ---------- .../Script/AppMain/Manager/AppInput.cs.meta | 2 - .../KeyMapperSetting/EssgeeKeyBinding.cs | 20 +- .../KeyMapperSetting/IDeviceBinder.cs | 17 - .../KeyMapperSetting/KeyMapperSetting.cs | 307 +----------------- .../KeyMapperSetting/MAMEKeyBinding.cs | 22 +- .../AppSettings/KeyMapperSetting/Model.meta} | 2 +- .../KeyMapperSetting/Model/EmuCoreBinder.cs | 287 ++++++++++++++++ .../Model/EmuCoreBinder.cs.meta | 2 + .../KeyMapperSetting/Model/IDeviceBinder.cs | 17 + .../{ => Model}/IDeviceBinder.cs.meta | 0 .../Model/InternalEmuCoreBinder.cs | 12 + .../Model/InternalEmuCoreBinder.cs.meta | 2 + .../KeyMapperSetting/NesKeyBinding.cs | 35 +- .../KeyMapperSetting/XMBKeyBinding.cs | 18 +- .../Devices/InputControls/InputControl_C.cs | 2 +- .../Devices/InputControls/Stick_C.cs | 4 +- .../Devices/ScreenGamepad_D.cs | 74 +++++ .../Devices/ScreenGamepad_D.cs.meta | 2 + .../InputDevicesManager.cs | 9 + .../InputResolver/InputResolver.cs | 100 +++++- .../InputResolver/InputSystemResolver.cs | 12 +- .../InputResolver/PSVResolver.cs | 12 +- .../AppMain/UI/Joystick/FloatingJoystick.cs | 23 +- .../AppMain/UI/OverlayUI/OverlayManager.cs | 5 +- 64 files changed, 699 insertions(+), 1808 deletions(-) delete mode 100644 AxibugEmuOnline.Client/Assets/Script/AppMain/AxiInputSP.Settings/ColecoVisionMultiKeysSetting.cs delete mode 100644 AxibugEmuOnline.Client/Assets/Script/AppMain/AxiInputSP.Settings/ColecoVisionMultiKeysSetting.cs.meta delete mode 100644 AxibugEmuOnline.Client/Assets/Script/AppMain/AxiInputSP.Settings/GameBoyColorMultiKeysSetting.cs delete mode 100644 AxibugEmuOnline.Client/Assets/Script/AppMain/AxiInputSP.Settings/GameBoyColorMultiKeysSetting.cs.meta delete mode 100644 AxibugEmuOnline.Client/Assets/Script/AppMain/AxiInputSP.Settings/GameBoyMultiKeysSetting.cs delete mode 100644 AxibugEmuOnline.Client/Assets/Script/AppMain/AxiInputSP.Settings/GameBoyMultiKeysSetting.cs.meta delete mode 100644 AxibugEmuOnline.Client/Assets/Script/AppMain/AxiInputSP.Settings/GameGearMultiKeysSetting.cs delete mode 100644 AxibugEmuOnline.Client/Assets/Script/AppMain/AxiInputSP.Settings/GameGearMultiKeysSetting.cs.meta delete mode 100644 AxibugEmuOnline.Client/Assets/Script/AppMain/AxiInputSP.Settings/GamingMultiKeysSetting.cs delete mode 100644 AxibugEmuOnline.Client/Assets/Script/AppMain/AxiInputSP.Settings/GamingMultiKeysSetting.cs.meta delete mode 100644 AxibugEmuOnline.Client/Assets/Script/AppMain/AxiInputSP.Settings/MasterSystemMultiKeysSetting.cs delete mode 100644 AxibugEmuOnline.Client/Assets/Script/AppMain/AxiInputSP.Settings/MasterSystemMultiKeysSetting.cs.meta delete mode 100644 AxibugEmuOnline.Client/Assets/Script/AppMain/AxiInputSP.Settings/NESMultiKeysSetting.cs delete mode 100644 AxibugEmuOnline.Client/Assets/Script/AppMain/AxiInputSP.Settings/NESMultiKeysSetting.cs.meta delete mode 100644 AxibugEmuOnline.Client/Assets/Script/AppMain/AxiInputSP.Settings/SC3000MultiKeysSetting.cs delete mode 100644 AxibugEmuOnline.Client/Assets/Script/AppMain/AxiInputSP.Settings/SC3000MultiKeysSetting.cs.meta delete mode 100644 AxibugEmuOnline.Client/Assets/Script/AppMain/AxiInputSP.Settings/SG1000MultiKeysSetting.cs delete mode 100644 AxibugEmuOnline.Client/Assets/Script/AppMain/AxiInputSP.Settings/SG1000MultiKeysSetting.cs.meta delete mode 100644 AxibugEmuOnline.Client/Assets/Script/AppMain/AxiInputSP.Settings/UMAMEMultiKeysSetting.cs delete mode 100644 AxibugEmuOnline.Client/Assets/Script/AppMain/AxiInputSP.Settings/UMAMEMultiKeysSetting.cs.meta delete mode 100644 AxibugEmuOnline.Client/Assets/Script/AppMain/AxiInputSP.Settings/XMBMultiKeysSetting.cs delete mode 100644 AxibugEmuOnline.Client/Assets/Script/AppMain/AxiInputSP.Settings/XMBMultiKeysSetting.cs.meta delete mode 100644 AxibugEmuOnline.Client/Assets/Script/AppMain/AxiInputSP/AxiInputEx.cs delete mode 100644 AxibugEmuOnline.Client/Assets/Script/AppMain/AxiInputSP/AxiInputEx.cs.meta delete mode 100644 AxibugEmuOnline.Client/Assets/Script/AppMain/AxiInputSP/UGUI/AxiInputUGUICenter.cs delete mode 100644 AxibugEmuOnline.Client/Assets/Script/AppMain/AxiInputSP/UGUI/AxiInputUGUICenter.cs.meta delete mode 100644 AxibugEmuOnline.Client/Assets/Script/AppMain/AxiInputSP/UGUI/AxiInputUGUIHandle.cs delete mode 100644 AxibugEmuOnline.Client/Assets/Script/AppMain/AxiInputSP/UGUI/AxiInputUGUIHandle.cs.meta delete mode 100644 AxibugEmuOnline.Client/Assets/Script/AppMain/AxiInputSP/UGUI/AxiIptJoystick.cs delete mode 100644 AxibugEmuOnline.Client/Assets/Script/AppMain/AxiInputSP/UGUI/AxiIptJoystick.cs.meta create mode 100644 AxibugEmuOnline.Client/Assets/Script/AppMain/AxiInputSP/UGUI/AxiScreenGamepad.cs create mode 100644 AxibugEmuOnline.Client/Assets/Script/AppMain/AxiInputSP/UGUI/AxiScreenGamepad.cs.meta delete mode 100644 AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/AppInput.cs delete mode 100644 AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/AppInput.cs.meta delete mode 100644 AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/AppSettings/KeyMapperSetting/IDeviceBinder.cs rename AxibugEmuOnline.Client/Assets/Script/AppMain/{AxiInputSP.Settings.meta => Manager/AppSettings/KeyMapperSetting/Model.meta} (77%) create mode 100644 AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/AppSettings/KeyMapperSetting/Model/EmuCoreBinder.cs create mode 100644 AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/AppSettings/KeyMapperSetting/Model/EmuCoreBinder.cs.meta create mode 100644 AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/AppSettings/KeyMapperSetting/Model/IDeviceBinder.cs rename AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/AppSettings/KeyMapperSetting/{ => Model}/IDeviceBinder.cs.meta (100%) create mode 100644 AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/AppSettings/KeyMapperSetting/Model/InternalEmuCoreBinder.cs create mode 100644 AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/AppSettings/KeyMapperSetting/Model/InternalEmuCoreBinder.cs.meta create mode 100644 AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/InputDevicesManager/Devices/ScreenGamepad_D.cs create mode 100644 AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/InputDevicesManager/Devices/ScreenGamepad_D.cs.meta diff --git a/AxibugEmuOnline.Client/Assets/Resources/UIPrefabs/OverlayUI/Overlay.prefab b/AxibugEmuOnline.Client/Assets/Resources/UIPrefabs/OverlayUI/Overlay.prefab index 24025604..7fdf33b7 100644 --- a/AxibugEmuOnline.Client/Assets/Resources/UIPrefabs/OverlayUI/Overlay.prefab +++ b/AxibugEmuOnline.Client/Assets/Resources/UIPrefabs/OverlayUI/Overlay.prefab @@ -54,7 +54,7 @@ MonoBehaviour: m_EditorClassIdentifier: m_InputUI: {fileID: 3531919739979819165} m_OptionUI: {fileID: 3531919738411886374} - m_Joystick: {fileID: 1479421568449666778} + m_screenGamepad: {fileID: 8310310311897327133} m_popTipsUI: {fileID: 5244143219655022973} --- !u!1001 &286598211728911619 PrefabInstance: @@ -924,6 +924,17 @@ RectTransform: m_CorrespondingSourceObject: {fileID: 3557960760441770044, guid: bb828a9e324f62649b40038f8cd3620a, type: 3} m_PrefabInstance: {fileID: 2731323643586367206} m_PrefabAsset: {fileID: 0} +--- !u!114 &8310310311897327133 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 6247543073642948859, guid: bb828a9e324f62649b40038f8cd3620a, type: 3} + m_PrefabInstance: {fileID: 2731323643586367206} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1c6e60f499349d7479c565da795cde9b, type: 3} + m_Name: + m_EditorClassIdentifier: --- !u!1001 &6972157500961473863 PrefabInstance: m_ObjectHideFlags: 0 diff --git a/AxibugEmuOnline.Client/Assets/Resources/UIPrefabs/ScreenKeyPad.prefab b/AxibugEmuOnline.Client/Assets/Resources/UIPrefabs/ScreenKeyPad.prefab index 9ff64ea9..f2fa2f84 100644 --- a/AxibugEmuOnline.Client/Assets/Resources/UIPrefabs/ScreenKeyPad.prefab +++ b/AxibugEmuOnline.Client/Assets/Resources/UIPrefabs/ScreenKeyPad.prefab @@ -1452,6 +1452,7 @@ GameObject: serializedVersion: 6 m_Component: - component: {fileID: 3557960760441770044} + - component: {fileID: 6247543073642948859} m_Layer: 5 m_Name: ScreenKeyPad m_TagString: Untagged @@ -1491,6 +1492,18 @@ RectTransform: m_AnchoredPosition: {x: 0, y: 0} m_SizeDelta: {x: 0, y: 0} m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &6247543073642948859 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3557960760441770047} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1c6e60f499349d7479c565da795cde9b, type: 3} + m_Name: + m_EditorClassIdentifier: --- !u!1 &3557960760443913721 GameObject: m_ObjectHideFlags: 0 diff --git a/AxibugEmuOnline.Client/Assets/Scene/AxibugEmuOnline.Client.unity b/AxibugEmuOnline.Client/Assets/Scene/AxibugEmuOnline.Client.unity index eb2adf4c..a9ce8555 100644 --- a/AxibugEmuOnline.Client/Assets/Scene/AxibugEmuOnline.Client.unity +++ b/AxibugEmuOnline.Client/Assets/Scene/AxibugEmuOnline.Client.unity @@ -225,7 +225,7 @@ MonoBehaviour: bUseLocalWebApi: 0 mLocalWebApi: http://localhost:5051 bEditorUUID: 0 - bEditorOpenGUIJoyStick: 0 + bEditorOpenGUIJoyStick: 1 --- !u!1 &1498586261 GameObject: m_ObjectHideFlags: 3 diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiInputSP.Settings/ColecoVisionMultiKeysSetting.cs b/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiInputSP.Settings/ColecoVisionMultiKeysSetting.cs deleted file mode 100644 index 29ad615b..00000000 --- a/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiInputSP.Settings/ColecoVisionMultiKeysSetting.cs +++ /dev/null @@ -1,86 +0,0 @@ -using AxibugEmuOnline.Client.Manager; -using AxibugEmuOnline.Client.Settings; -using UnityEngine; - -namespace AxiInputSP.Setting -{ - public class ColecoVisionMultiKeysSetting : MultiKeysSettingBase - { - public ColecoVisionMultiKeysSetting() - { - controllers = new ColecoVisionSingleKeysSeting[4]; - for (int i = 0; i < controllers.Length; i++) - controllers[i] = new ColecoVisionSingleKeysSeting(); - } - - public override void LoadDefaultSetting() - { - ClearAll(); - -#if UNITY_PSP2 && !UNITY_EDITOR - //PSV 摇杆 - controllers[0].SetKey((ulong)EssgeeSingleKey.POTION_1, AxiInputEx.ByKeyCode(PSVitaKey.Start)); - controllers[0].SetKey((ulong)EssgeeSingleKey.POTION_2, AxiInputEx.ByKeyCode(PSVitaKey.Select)); - controllers[0].SetKey((ulong)EssgeeSingleKey.UP, AxiInputEx.ByKeyCode(PSVitaKey.Up)); - controllers[0].SetKey((ulong)EssgeeSingleKey.DOWN, AxiInputEx.ByKeyCode(PSVitaKey.Down)); - controllers[0].SetKey((ulong)EssgeeSingleKey.LEFT, AxiInputEx.ByKeyCode(PSVitaKey.Left)); - controllers[0].SetKey((ulong)EssgeeSingleKey.RIGHT, AxiInputEx.ByKeyCode(PSVitaKey.Right)); - controllers[0].SetKey((ulong)EssgeeSingleKey.BTN_1, AxiInputEx.ByKeyCode(PSVitaKey.Cross)); - controllers[0].SetKey((ulong)EssgeeSingleKey.BTN_2, AxiInputEx.ByKeyCode(PSVitaKey.Circle)); - controllers[0].SetKey((ulong)EssgeeSingleKey.BTN_3, AxiInputEx.ByKeyCode(PSVitaKey.Block)); - controllers[0].SetKey((ulong)EssgeeSingleKey.BTN_4, AxiInputEx.ByKeyCode(PSVitaKey.Triangle)); - //PSV 摇杆 - controllers[0].SetKey((ulong)EssgeeSingleKey.UP, AxiInputEx.ByAxis(AxiInputAxisType.UP)); - controllers[0].SetKey((ulong)EssgeeSingleKey.DOWN, AxiInputEx.ByAxis(AxiInputAxisType.DOWN)); - controllers[0].SetKey((ulong)EssgeeSingleKey.LEFT, AxiInputEx.ByAxis(AxiInputAxisType.LEFT)); - controllers[0].SetKey((ulong)EssgeeSingleKey.RIGHT, AxiInputEx.ByAxis(AxiInputAxisType.RIGHT)); - controllers[0].ColletAllKey(); - return; -#endif - #region P1 - //P1 键盘 - controllers[0].SetKey((ulong)EssgeeSingleKey.OPTION_1, AxiInputEx.ByKeyCode(KeyCode.Return)); - controllers[0].SetKey((ulong)EssgeeSingleKey.OPTION_2, AxiInputEx.ByKeyCode(KeyCode.RightShift)); - controllers[0].SetKey((ulong)EssgeeSingleKey.UP, AxiInputEx.ByKeyCode(KeyCode.W)); - controllers[0].SetKey((ulong)EssgeeSingleKey.DOWN, AxiInputEx.ByKeyCode(KeyCode.S)); - controllers[0].SetKey((ulong)EssgeeSingleKey.LEFT, AxiInputEx.ByKeyCode(KeyCode.A)); - controllers[0].SetKey((ulong)EssgeeSingleKey.RIGHT, AxiInputEx.ByKeyCode(KeyCode.D)); - controllers[0].SetKey((ulong)EssgeeSingleKey.BTN_1, AxiInputEx.ByKeyCode(KeyCode.J)); - controllers[0].SetKey((ulong)EssgeeSingleKey.BTN_2, AxiInputEx.ByKeyCode(KeyCode.K)); - controllers[0].SetKey((ulong)EssgeeSingleKey.BTN_3, AxiInputEx.ByKeyCode(KeyCode.U)); - controllers[0].SetKey((ulong)EssgeeSingleKey.BTN_4, AxiInputEx.ByKeyCode(KeyCode.I)); - - //P1 UGUI - controllers[0].SetKey((ulong)EssgeeSingleKey.OPTION_1, AxiInputEx.ByUGUIBtn(AxiInputUGuiBtnType.POTION_1)); - controllers[0].SetKey((ulong)EssgeeSingleKey.OPTION_2, AxiInputEx.ByUGUIBtn(AxiInputUGuiBtnType.POTION_2)); - controllers[0].SetKey((ulong)EssgeeSingleKey.UP, AxiInputEx.ByUGUIBtn(AxiInputUGuiBtnType.UP)); - controllers[0].SetKey((ulong)EssgeeSingleKey.DOWN, AxiInputEx.ByUGUIBtn(AxiInputUGuiBtnType.DOWN)); - controllers[0].SetKey((ulong)EssgeeSingleKey.LEFT, AxiInputEx.ByUGUIBtn(AxiInputUGuiBtnType.LEFT)); - controllers[0].SetKey((ulong)EssgeeSingleKey.RIGHT, AxiInputEx.ByUGUIBtn(AxiInputUGuiBtnType.RIGHT)); - controllers[0].SetKey((ulong)EssgeeSingleKey.BTN_1, AxiInputEx.ByUGUIBtn(AxiInputUGuiBtnType.BTN_A)); - controllers[0].SetKey((ulong)EssgeeSingleKey.BTN_2, AxiInputEx.ByUGUIBtn(AxiInputUGuiBtnType.BTN_B)); - controllers[0].SetKey((ulong)EssgeeSingleKey.BTN_3, AxiInputEx.ByUGUIBtn(AxiInputUGuiBtnType.BTN_C)); - controllers[0].SetKey((ulong)EssgeeSingleKey.BTN_4, AxiInputEx.ByUGUIBtn(AxiInputUGuiBtnType.BTN_D)); - - //P2 键盘 - controllers[1].SetKey((ulong)EssgeeSingleKey.OPTION_1, AxiInputEx.ByKeyCode(KeyCode.Keypad0)); - controllers[1].SetKey((ulong)EssgeeSingleKey.OPTION_2, AxiInputEx.ByKeyCode(KeyCode.Delete)); - controllers[1].SetKey((ulong)EssgeeSingleKey.UP, AxiInputEx.ByKeyCode(KeyCode.UpArrow)); - controllers[1].SetKey((ulong)EssgeeSingleKey.DOWN, AxiInputEx.ByKeyCode(KeyCode.DownArrow)); - controllers[1].SetKey((ulong)EssgeeSingleKey.LEFT, AxiInputEx.ByKeyCode(KeyCode.LeftArrow)); - controllers[1].SetKey((ulong)EssgeeSingleKey.RIGHT, AxiInputEx.ByKeyCode(KeyCode.RightArrow)); - controllers[1].SetKey((ulong)EssgeeSingleKey.BTN_1, AxiInputEx.ByKeyCode(KeyCode.Keypad1)); - controllers[1].SetKey((ulong)EssgeeSingleKey.BTN_2, AxiInputEx.ByKeyCode(KeyCode.Keypad2)); - controllers[1].SetKey((ulong)EssgeeSingleKey.BTN_3, AxiInputEx.ByKeyCode(KeyCode.Keypad3)); - controllers[1].SetKey((ulong)EssgeeSingleKey.BTN_4, AxiInputEx.ByKeyCode(KeyCode.Keypad4)); - - controllers[0].ColletAllKey(); - #endregion - } - } - - public class ColecoVisionSingleKeysSeting : SingleKeySettingBase - { - } -} - diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiInputSP.Settings/ColecoVisionMultiKeysSetting.cs.meta b/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiInputSP.Settings/ColecoVisionMultiKeysSetting.cs.meta deleted file mode 100644 index bf2ae342..00000000 --- a/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiInputSP.Settings/ColecoVisionMultiKeysSetting.cs.meta +++ /dev/null @@ -1,2 +0,0 @@ -fileFormatVersion: 2 -guid: 6febcf958b506d74aadb5e7ea35f1a9d \ No newline at end of file diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiInputSP.Settings/GameBoyColorMultiKeysSetting.cs b/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiInputSP.Settings/GameBoyColorMultiKeysSetting.cs deleted file mode 100644 index 71c4b648..00000000 --- a/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiInputSP.Settings/GameBoyColorMultiKeysSetting.cs +++ /dev/null @@ -1,69 +0,0 @@ -using AxibugEmuOnline.Client.Manager; -using AxibugEmuOnline.Client.Settings; -using UnityEngine; - -namespace AxiInputSP.Setting -{ - public class GameBoyColorMultiKeysSetting : MultiKeysSettingBase - { - - public GameBoyColorMultiKeysSetting() - { - controllers = new GameBoyColorSingleKeysSeting[4]; - for (int i = 0; i < controllers.Length; i++) - controllers[i] = new GameBoyColorSingleKeysSeting(); - } - - public override void LoadDefaultSetting() - { - ClearAll(); - -#if UNITY_PSP2 && !UNITY_EDITOR - //PSV 摇杆 - controllers[0].SetKey((ulong)EssgeeSingleKey.POTION_1, AxiInputEx.ByKeyCode(PSVitaKey.Start)); - controllers[0].SetKey((ulong)EssgeeSingleKey.POTION_2, AxiInputEx.ByKeyCode(PSVitaKey.Select)); - controllers[0].SetKey((ulong)EssgeeSingleKey.UP, AxiInputEx.ByKeyCode(PSVitaKey.Up)); - controllers[0].SetKey((ulong)EssgeeSingleKey.DOWN, AxiInputEx.ByKeyCode(PSVitaKey.Down)); - controllers[0].SetKey((ulong)EssgeeSingleKey.LEFT, AxiInputEx.ByKeyCode(PSVitaKey.Left)); - controllers[0].SetKey((ulong)EssgeeSingleKey.RIGHT, AxiInputEx.ByKeyCode(PSVitaKey.Right)); - controllers[0].SetKey((ulong)EssgeeSingleKey.BTN_1, AxiInputEx.ByKeyCode(PSVitaKey.Cross)); - controllers[0].SetKey((ulong)EssgeeSingleKey.BTN_2, AxiInputEx.ByKeyCode(PSVitaKey.Circle)); - //PSV 摇杆 - controllers[0].SetKey((ulong)EssgeeSingleKey.UP, AxiInputEx.ByAxis(AxiInputAxisType.UP)); - controllers[0].SetKey((ulong)EssgeeSingleKey.DOWN, AxiInputEx.ByAxis(AxiInputAxisType.DOWN)); - controllers[0].SetKey((ulong)EssgeeSingleKey.LEFT, AxiInputEx.ByAxis(AxiInputAxisType.LEFT)); - controllers[0].SetKey((ulong)EssgeeSingleKey.RIGHT, AxiInputEx.ByAxis(AxiInputAxisType.RIGHT)); - controllers[0].ColletAllKey(); - return; -#endif - #region P1 - //P1 键盘 - controllers[0].SetKey((ulong)EssgeeSingleKey.OPTION_1, AxiInputEx.ByKeyCode(KeyCode.Return)); - controllers[0].SetKey((ulong)EssgeeSingleKey.OPTION_2, AxiInputEx.ByKeyCode(KeyCode.RightShift)); - controllers[0].SetKey((ulong)EssgeeSingleKey.UP, AxiInputEx.ByKeyCode(KeyCode.W)); - controllers[0].SetKey((ulong)EssgeeSingleKey.DOWN, AxiInputEx.ByKeyCode(KeyCode.S)); - controllers[0].SetKey((ulong)EssgeeSingleKey.LEFT, AxiInputEx.ByKeyCode(KeyCode.A)); - controllers[0].SetKey((ulong)EssgeeSingleKey.RIGHT, AxiInputEx.ByKeyCode(KeyCode.D)); - controllers[0].SetKey((ulong)EssgeeSingleKey.BTN_1, AxiInputEx.ByKeyCode(KeyCode.J)); - controllers[0].SetKey((ulong)EssgeeSingleKey.BTN_2, AxiInputEx.ByKeyCode(KeyCode.K)); - - //P1 UGUI - controllers[0].SetKey((ulong)EssgeeSingleKey.OPTION_1, AxiInputEx.ByUGUIBtn(AxiInputUGuiBtnType.POTION_1)); - controllers[0].SetKey((ulong)EssgeeSingleKey.OPTION_2, AxiInputEx.ByUGUIBtn(AxiInputUGuiBtnType.POTION_2)); - controllers[0].SetKey((ulong)EssgeeSingleKey.UP, AxiInputEx.ByUGUIBtn(AxiInputUGuiBtnType.UP)); - controllers[0].SetKey((ulong)EssgeeSingleKey.DOWN, AxiInputEx.ByUGUIBtn(AxiInputUGuiBtnType.DOWN)); - controllers[0].SetKey((ulong)EssgeeSingleKey.LEFT, AxiInputEx.ByUGUIBtn(AxiInputUGuiBtnType.LEFT)); - controllers[0].SetKey((ulong)EssgeeSingleKey.RIGHT, AxiInputEx.ByUGUIBtn(AxiInputUGuiBtnType.RIGHT)); - controllers[0].SetKey((ulong)EssgeeSingleKey.BTN_1, AxiInputEx.ByUGUIBtn(AxiInputUGuiBtnType.BTN_A)); - controllers[0].SetKey((ulong)EssgeeSingleKey.BTN_2, AxiInputEx.ByUGUIBtn(AxiInputUGuiBtnType.BTN_B)); - - controllers[0].ColletAllKey(); - #endregion - } - } - - public class GameBoyColorSingleKeysSeting : SingleKeySettingBase - { - } -} - diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiInputSP.Settings/GameBoyColorMultiKeysSetting.cs.meta b/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiInputSP.Settings/GameBoyColorMultiKeysSetting.cs.meta deleted file mode 100644 index 3021c891..00000000 --- a/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiInputSP.Settings/GameBoyColorMultiKeysSetting.cs.meta +++ /dev/null @@ -1,2 +0,0 @@ -fileFormatVersion: 2 -guid: 98e9f2994f6a07c4fb69339055653348 \ No newline at end of file diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiInputSP.Settings/GameBoyMultiKeysSetting.cs b/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiInputSP.Settings/GameBoyMultiKeysSetting.cs deleted file mode 100644 index 74c553f8..00000000 --- a/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiInputSP.Settings/GameBoyMultiKeysSetting.cs +++ /dev/null @@ -1,69 +0,0 @@ -using AxibugEmuOnline.Client.Manager; -using AxibugEmuOnline.Client.Settings; -using UnityEngine; - -namespace AxiInputSP.Setting -{ - public class GameBoyMultiKeysSetting : MultiKeysSettingBase - { - - public GameBoyMultiKeysSetting() - { - controllers = new GameBoySingleKeysSeting[4]; - for (int i = 0; i < controllers.Length; i++) - controllers[i] = new GameBoySingleKeysSeting(); - } - - public override void LoadDefaultSetting() - { - ClearAll(); - -#if UNITY_PSP2 && !UNITY_EDITOR - //PSV 摇杆 - controllers[0].SetKey((ulong)EssgeeSingleKey.POTION_1, AxiInputEx.ByKeyCode(PSVitaKey.Start)); - controllers[0].SetKey((ulong)EssgeeSingleKey.POTION_2, AxiInputEx.ByKeyCode(PSVitaKey.Select)); - controllers[0].SetKey((ulong)EssgeeSingleKey.UP, AxiInputEx.ByKeyCode(PSVitaKey.Up)); - controllers[0].SetKey((ulong)EssgeeSingleKey.DOWN, AxiInputEx.ByKeyCode(PSVitaKey.Down)); - controllers[0].SetKey((ulong)EssgeeSingleKey.LEFT, AxiInputEx.ByKeyCode(PSVitaKey.Left)); - controllers[0].SetKey((ulong)EssgeeSingleKey.RIGHT, AxiInputEx.ByKeyCode(PSVitaKey.Right)); - controllers[0].SetKey((ulong)EssgeeSingleKey.BTN_1, AxiInputEx.ByKeyCode(PSVitaKey.Cross)); - controllers[0].SetKey((ulong)EssgeeSingleKey.BTN_2, AxiInputEx.ByKeyCode(PSVitaKey.Circle)); - //PSV 摇杆 - controllers[0].SetKey((ulong)EssgeeSingleKey.UP, AxiInputEx.ByAxis(AxiInputAxisType.UP)); - controllers[0].SetKey((ulong)EssgeeSingleKey.DOWN, AxiInputEx.ByAxis(AxiInputAxisType.DOWN)); - controllers[0].SetKey((ulong)EssgeeSingleKey.LEFT, AxiInputEx.ByAxis(AxiInputAxisType.LEFT)); - controllers[0].SetKey((ulong)EssgeeSingleKey.RIGHT, AxiInputEx.ByAxis(AxiInputAxisType.RIGHT)); - controllers[0].ColletAllKey(); - return; -#endif - #region P1 - //P1 键盘 - controllers[0].SetKey((ulong)EssgeeSingleKey.OPTION_1, AxiInputEx.ByKeyCode(KeyCode.Return)); - controllers[0].SetKey((ulong)EssgeeSingleKey.OPTION_2, AxiInputEx.ByKeyCode(KeyCode.RightShift)); - controllers[0].SetKey((ulong)EssgeeSingleKey.UP, AxiInputEx.ByKeyCode(KeyCode.W)); - controllers[0].SetKey((ulong)EssgeeSingleKey.DOWN, AxiInputEx.ByKeyCode(KeyCode.S)); - controllers[0].SetKey((ulong)EssgeeSingleKey.LEFT, AxiInputEx.ByKeyCode(KeyCode.A)); - controllers[0].SetKey((ulong)EssgeeSingleKey.RIGHT, AxiInputEx.ByKeyCode(KeyCode.D)); - controllers[0].SetKey((ulong)EssgeeSingleKey.BTN_1, AxiInputEx.ByKeyCode(KeyCode.J)); - controllers[0].SetKey((ulong)EssgeeSingleKey.BTN_2, AxiInputEx.ByKeyCode(KeyCode.K)); - - //P1 UGUI - controllers[0].SetKey((ulong)EssgeeSingleKey.OPTION_1, AxiInputEx.ByUGUIBtn(AxiInputUGuiBtnType.POTION_1)); - controllers[0].SetKey((ulong)EssgeeSingleKey.OPTION_2, AxiInputEx.ByUGUIBtn(AxiInputUGuiBtnType.POTION_2)); - controllers[0].SetKey((ulong)EssgeeSingleKey.UP, AxiInputEx.ByUGUIBtn(AxiInputUGuiBtnType.UP)); - controllers[0].SetKey((ulong)EssgeeSingleKey.DOWN, AxiInputEx.ByUGUIBtn(AxiInputUGuiBtnType.DOWN)); - controllers[0].SetKey((ulong)EssgeeSingleKey.LEFT, AxiInputEx.ByUGUIBtn(AxiInputUGuiBtnType.LEFT)); - controllers[0].SetKey((ulong)EssgeeSingleKey.RIGHT, AxiInputEx.ByUGUIBtn(AxiInputUGuiBtnType.RIGHT)); - controllers[0].SetKey((ulong)EssgeeSingleKey.BTN_1, AxiInputEx.ByUGUIBtn(AxiInputUGuiBtnType.BTN_A)); - controllers[0].SetKey((ulong)EssgeeSingleKey.BTN_2, AxiInputEx.ByUGUIBtn(AxiInputUGuiBtnType.BTN_B)); - - controllers[0].ColletAllKey(); - #endregion - } - } - - public class GameBoySingleKeysSeting : SingleKeySettingBase - { - } -} - diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiInputSP.Settings/GameBoyMultiKeysSetting.cs.meta b/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiInputSP.Settings/GameBoyMultiKeysSetting.cs.meta deleted file mode 100644 index 4347d222..00000000 --- a/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiInputSP.Settings/GameBoyMultiKeysSetting.cs.meta +++ /dev/null @@ -1,2 +0,0 @@ -fileFormatVersion: 2 -guid: 42485ea83f647924e9e8a8db04c8b351 \ No newline at end of file diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiInputSP.Settings/GameGearMultiKeysSetting.cs b/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiInputSP.Settings/GameGearMultiKeysSetting.cs deleted file mode 100644 index 52a7c89f..00000000 --- a/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiInputSP.Settings/GameGearMultiKeysSetting.cs +++ /dev/null @@ -1,86 +0,0 @@ -using AxibugEmuOnline.Client.Manager; -using AxibugEmuOnline.Client.Settings; -using UnityEngine; - -namespace AxiInputSP.Setting -{ - public class GameGearMultiKeysSetting : MultiKeysSettingBase - { - public GameGearMultiKeysSetting() - { - controllers = new GameGearSingleKeysSeting[4]; - for (int i = 0; i < controllers.Length; i++) - controllers[i] = new GameGearSingleKeysSeting(); - } - - public override void LoadDefaultSetting() - { - ClearAll(); - -#if UNITY_PSP2 && !UNITY_EDITOR - //PSV 摇杆 - controllers[0].SetKey((ulong)EssgeeSingleKey.POTION_1, AxiInputEx.ByKeyCode(PSVitaKey.Start)); - controllers[0].SetKey((ulong)EssgeeSingleKey.POTION_2, AxiInputEx.ByKeyCode(PSVitaKey.Select)); - controllers[0].SetKey((ulong)EssgeeSingleKey.UP, AxiInputEx.ByKeyCode(PSVitaKey.Up)); - controllers[0].SetKey((ulong)EssgeeSingleKey.DOWN, AxiInputEx.ByKeyCode(PSVitaKey.Down)); - controllers[0].SetKey((ulong)EssgeeSingleKey.LEFT, AxiInputEx.ByKeyCode(PSVitaKey.Left)); - controllers[0].SetKey((ulong)EssgeeSingleKey.RIGHT, AxiInputEx.ByKeyCode(PSVitaKey.Right)); - controllers[0].SetKey((ulong)EssgeeSingleKey.BTN_1, AxiInputEx.ByKeyCode(PSVitaKey.Cross)); - controllers[0].SetKey((ulong)EssgeeSingleKey.BTN_2, AxiInputEx.ByKeyCode(PSVitaKey.Circle)); - controllers[0].SetKey((ulong)EssgeeSingleKey.BTN_3, AxiInputEx.ByKeyCode(PSVitaKey.Block)); - controllers[0].SetKey((ulong)EssgeeSingleKey.BTN_4, AxiInputEx.ByKeyCode(PSVitaKey.Triangle)); - //PSV 摇杆 - controllers[0].SetKey((ulong)EssgeeSingleKey.UP, AxiInputEx.ByAxis(AxiInputAxisType.UP)); - controllers[0].SetKey((ulong)EssgeeSingleKey.DOWN, AxiInputEx.ByAxis(AxiInputAxisType.DOWN)); - controllers[0].SetKey((ulong)EssgeeSingleKey.LEFT, AxiInputEx.ByAxis(AxiInputAxisType.LEFT)); - controllers[0].SetKey((ulong)EssgeeSingleKey.RIGHT, AxiInputEx.ByAxis(AxiInputAxisType.RIGHT)); - controllers[0].ColletAllKey(); - return; -#endif - #region P1 - //P1 键盘 - controllers[0].SetKey((ulong)EssgeeSingleKey.OPTION_1, AxiInputEx.ByKeyCode(KeyCode.Return)); - controllers[0].SetKey((ulong)EssgeeSingleKey.OPTION_2, AxiInputEx.ByKeyCode(KeyCode.RightShift)); - controllers[0].SetKey((ulong)EssgeeSingleKey.UP, AxiInputEx.ByKeyCode(KeyCode.W)); - controllers[0].SetKey((ulong)EssgeeSingleKey.DOWN, AxiInputEx.ByKeyCode(KeyCode.S)); - controllers[0].SetKey((ulong)EssgeeSingleKey.LEFT, AxiInputEx.ByKeyCode(KeyCode.A)); - controllers[0].SetKey((ulong)EssgeeSingleKey.RIGHT, AxiInputEx.ByKeyCode(KeyCode.D)); - controllers[0].SetKey((ulong)EssgeeSingleKey.BTN_1, AxiInputEx.ByKeyCode(KeyCode.J)); - controllers[0].SetKey((ulong)EssgeeSingleKey.BTN_2, AxiInputEx.ByKeyCode(KeyCode.K)); - controllers[0].SetKey((ulong)EssgeeSingleKey.BTN_3, AxiInputEx.ByKeyCode(KeyCode.U)); - controllers[0].SetKey((ulong)EssgeeSingleKey.BTN_4, AxiInputEx.ByKeyCode(KeyCode.I)); - - //P1 UGUI - controllers[0].SetKey((ulong)EssgeeSingleKey.OPTION_1, AxiInputEx.ByUGUIBtn(AxiInputUGuiBtnType.POTION_1)); - controllers[0].SetKey((ulong)EssgeeSingleKey.OPTION_2, AxiInputEx.ByUGUIBtn(AxiInputUGuiBtnType.POTION_2)); - controllers[0].SetKey((ulong)EssgeeSingleKey.UP, AxiInputEx.ByUGUIBtn(AxiInputUGuiBtnType.UP)); - controllers[0].SetKey((ulong)EssgeeSingleKey.DOWN, AxiInputEx.ByUGUIBtn(AxiInputUGuiBtnType.DOWN)); - controllers[0].SetKey((ulong)EssgeeSingleKey.LEFT, AxiInputEx.ByUGUIBtn(AxiInputUGuiBtnType.LEFT)); - controllers[0].SetKey((ulong)EssgeeSingleKey.RIGHT, AxiInputEx.ByUGUIBtn(AxiInputUGuiBtnType.RIGHT)); - controllers[0].SetKey((ulong)EssgeeSingleKey.BTN_1, AxiInputEx.ByUGUIBtn(AxiInputUGuiBtnType.BTN_A)); - controllers[0].SetKey((ulong)EssgeeSingleKey.BTN_2, AxiInputEx.ByUGUIBtn(AxiInputUGuiBtnType.BTN_B)); - controllers[0].SetKey((ulong)EssgeeSingleKey.BTN_3, AxiInputEx.ByUGUIBtn(AxiInputUGuiBtnType.BTN_C)); - controllers[0].SetKey((ulong)EssgeeSingleKey.BTN_4, AxiInputEx.ByUGUIBtn(AxiInputUGuiBtnType.BTN_D)); - - //P2 键盘 - controllers[1].SetKey((ulong)EssgeeSingleKey.OPTION_1, AxiInputEx.ByKeyCode(KeyCode.Keypad0)); - controllers[1].SetKey((ulong)EssgeeSingleKey.OPTION_2, AxiInputEx.ByKeyCode(KeyCode.Delete)); - controllers[1].SetKey((ulong)EssgeeSingleKey.UP, AxiInputEx.ByKeyCode(KeyCode.UpArrow)); - controllers[1].SetKey((ulong)EssgeeSingleKey.DOWN, AxiInputEx.ByKeyCode(KeyCode.DownArrow)); - controllers[1].SetKey((ulong)EssgeeSingleKey.LEFT, AxiInputEx.ByKeyCode(KeyCode.LeftArrow)); - controllers[1].SetKey((ulong)EssgeeSingleKey.RIGHT, AxiInputEx.ByKeyCode(KeyCode.RightArrow)); - controllers[1].SetKey((ulong)EssgeeSingleKey.BTN_1, AxiInputEx.ByKeyCode(KeyCode.Keypad1)); - controllers[1].SetKey((ulong)EssgeeSingleKey.BTN_2, AxiInputEx.ByKeyCode(KeyCode.Keypad2)); - controllers[1].SetKey((ulong)EssgeeSingleKey.BTN_3, AxiInputEx.ByKeyCode(KeyCode.Keypad3)); - controllers[1].SetKey((ulong)EssgeeSingleKey.BTN_4, AxiInputEx.ByKeyCode(KeyCode.Keypad4)); - - controllers[0].ColletAllKey(); - #endregion - } - } - - public class GameGearSingleKeysSeting : SingleKeySettingBase - { - } -} - diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiInputSP.Settings/GameGearMultiKeysSetting.cs.meta b/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiInputSP.Settings/GameGearMultiKeysSetting.cs.meta deleted file mode 100644 index d0b9847a..00000000 --- a/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiInputSP.Settings/GameGearMultiKeysSetting.cs.meta +++ /dev/null @@ -1,2 +0,0 @@ -fileFormatVersion: 2 -guid: 1f1d4c32b29ac4740945cb36c4442f70 \ No newline at end of file diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiInputSP.Settings/GamingMultiKeysSetting.cs b/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiInputSP.Settings/GamingMultiKeysSetting.cs deleted file mode 100644 index 979c3a9e..00000000 --- a/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiInputSP.Settings/GamingMultiKeysSetting.cs +++ /dev/null @@ -1,43 +0,0 @@ -using AxibugEmuOnline.Client; -using AxibugEmuOnline.Client.Common; -using AxibugEmuOnline.Client.Manager; -using UnityEngine; - -namespace AxiInputSP.Setting -{ - public class GamingMultiKeysSetting : MultiKeysSettingBase - { - public GamingMultiKeysSetting() - { - controllers = new GamingSingleKeysSeting[1]; - for (int i = 0; i < controllers.Length; i++) - controllers[i] = new GamingSingleKeysSeting(); - } - - public override void LoadDefaultSetting() - { - ClearAll(); - -#if UNITY_PSP2 && !UNITY_EDITOR - if (Application.platform == RuntimePlatform.PSP2) - { - controllers[0].SetKey((ulong)EnumCommand.OptionMenu, AxiInputEx.ByKeyCode(PSVitaKey.L)); - controllers[0].SetKey((ulong)EnumCommand.OptionMenu, AxiInputEx.ByKeyCode(PSVitaKey.R)); - controllers[0].ColletAllKey(); - } -#endif - controllers[0].SetKey((ulong)EnumCommand.OptionMenu, AxiInputEx.ByKeyCode(KeyCode.Escape)); - - //TODO 待补全 - controllers[0].SetKey((ulong)EnumCommand.OptionMenu, AxiInputEx.ByKeyCode(PC_XBOXKEY.L)); - controllers[0].SetKey((ulong)EnumCommand.OptionMenu, AxiInputEx.ByKeyCode(PC_XBOXKEY.R)); - controllers[0].SetKey((ulong)EnumCommand.OptionMenu, AxiInputEx.ByUGUIBtn(AxiInputUGuiBtnType.HOME)); - - controllers[0].ColletAllKey(); - } - } - - public class GamingSingleKeysSeting : SingleKeySettingBase - { - } -} diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiInputSP.Settings/GamingMultiKeysSetting.cs.meta b/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiInputSP.Settings/GamingMultiKeysSetting.cs.meta deleted file mode 100644 index 5a6854ca..00000000 --- a/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiInputSP.Settings/GamingMultiKeysSetting.cs.meta +++ /dev/null @@ -1,2 +0,0 @@ -fileFormatVersion: 2 -guid: 47f6f518d357c334c802a7aac4d507dc \ No newline at end of file diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiInputSP.Settings/MasterSystemMultiKeysSetting.cs b/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiInputSP.Settings/MasterSystemMultiKeysSetting.cs deleted file mode 100644 index 2c54db97..00000000 --- a/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiInputSP.Settings/MasterSystemMultiKeysSetting.cs +++ /dev/null @@ -1,88 +0,0 @@ -using AxibugEmuOnline.Client.Manager; -using AxibugEmuOnline.Client.Settings; -using System; -using UnityEngine; - -namespace AxiInputSP.Setting -{ - public class MasterSystemMultiKeysSetting : MultiKeysSettingBase - { - - public MasterSystemMultiKeysSetting() - { - controllers = new MasterSystemSingleKeysSeting[4]; - for (int i = 0; i < controllers.Length; i++) - controllers[i] = new MasterSystemSingleKeysSeting(); - } - - public override void LoadDefaultSetting() - { - ClearAll(); - -#if UNITY_PSP2 && !UNITY_EDITOR - //PSV 摇杆 - controllers[0].SetKey((ulong)EssgeeSingleKey.POTION_1, AxiInputEx.ByKeyCode(PSVitaKey.Start)); - controllers[0].SetKey((ulong)EssgeeSingleKey.POTION_2, AxiInputEx.ByKeyCode(PSVitaKey.Select)); - controllers[0].SetKey((ulong)EssgeeSingleKey.UP, AxiInputEx.ByKeyCode(PSVitaKey.Up)); - controllers[0].SetKey((ulong)EssgeeSingleKey.DOWN, AxiInputEx.ByKeyCode(PSVitaKey.Down)); - controllers[0].SetKey((ulong)EssgeeSingleKey.LEFT, AxiInputEx.ByKeyCode(PSVitaKey.Left)); - controllers[0].SetKey((ulong)EssgeeSingleKey.RIGHT, AxiInputEx.ByKeyCode(PSVitaKey.Right)); - controllers[0].SetKey((ulong)EssgeeSingleKey.BTN_1, AxiInputEx.ByKeyCode(PSVitaKey.Cross)); - controllers[0].SetKey((ulong)EssgeeSingleKey.BTN_2, AxiInputEx.ByKeyCode(PSVitaKey.Circle)); - controllers[0].SetKey((ulong)EssgeeSingleKey.BTN_3, AxiInputEx.ByKeyCode(PSVitaKey.Block)); - controllers[0].SetKey((ulong)EssgeeSingleKey.BTN_4, AxiInputEx.ByKeyCode(PSVitaKey.Triangle)); - //PSV 摇杆 - controllers[0].SetKey((ulong)EssgeeSingleKey.UP, AxiInputEx.ByAxis(AxiInputAxisType.UP)); - controllers[0].SetKey((ulong)EssgeeSingleKey.DOWN, AxiInputEx.ByAxis(AxiInputAxisType.DOWN)); - controllers[0].SetKey((ulong)EssgeeSingleKey.LEFT, AxiInputEx.ByAxis(AxiInputAxisType.LEFT)); - controllers[0].SetKey((ulong)EssgeeSingleKey.RIGHT, AxiInputEx.ByAxis(AxiInputAxisType.RIGHT)); - controllers[0].ColletAllKey(); - return; -#endif - #region P1 - //P1 键盘 - controllers[0].SetKey((ulong)EssgeeSingleKey.OPTION_1, AxiInputEx.ByKeyCode(KeyCode.Return)); - controllers[0].SetKey((ulong)EssgeeSingleKey.OPTION_2, AxiInputEx.ByKeyCode(KeyCode.RightShift)); - controllers[0].SetKey((ulong)EssgeeSingleKey.UP, AxiInputEx.ByKeyCode(KeyCode.W)); - controllers[0].SetKey((ulong)EssgeeSingleKey.DOWN, AxiInputEx.ByKeyCode(KeyCode.S)); - controllers[0].SetKey((ulong)EssgeeSingleKey.LEFT, AxiInputEx.ByKeyCode(KeyCode.A)); - controllers[0].SetKey((ulong)EssgeeSingleKey.RIGHT, AxiInputEx.ByKeyCode(KeyCode.D)); - controllers[0].SetKey((ulong)EssgeeSingleKey.BTN_1, AxiInputEx.ByKeyCode(KeyCode.J)); - controllers[0].SetKey((ulong)EssgeeSingleKey.BTN_2, AxiInputEx.ByKeyCode(KeyCode.K)); - controllers[0].SetKey((ulong)EssgeeSingleKey.BTN_3, AxiInputEx.ByKeyCode(KeyCode.U)); - controllers[0].SetKey((ulong)EssgeeSingleKey.BTN_4, AxiInputEx.ByKeyCode(KeyCode.I)); - - //P1 UGUI - controllers[0].SetKey((ulong)EssgeeSingleKey.OPTION_1, AxiInputEx.ByUGUIBtn(AxiInputUGuiBtnType.POTION_1)); - controllers[0].SetKey((ulong)EssgeeSingleKey.OPTION_2, AxiInputEx.ByUGUIBtn(AxiInputUGuiBtnType.POTION_2)); - controllers[0].SetKey((ulong)EssgeeSingleKey.UP, AxiInputEx.ByUGUIBtn(AxiInputUGuiBtnType.UP)); - controllers[0].SetKey((ulong)EssgeeSingleKey.DOWN, AxiInputEx.ByUGUIBtn(AxiInputUGuiBtnType.DOWN)); - controllers[0].SetKey((ulong)EssgeeSingleKey.LEFT, AxiInputEx.ByUGUIBtn(AxiInputUGuiBtnType.LEFT)); - controllers[0].SetKey((ulong)EssgeeSingleKey.RIGHT, AxiInputEx.ByUGUIBtn(AxiInputUGuiBtnType.RIGHT)); - controllers[0].SetKey((ulong)EssgeeSingleKey.BTN_1, AxiInputEx.ByUGUIBtn(AxiInputUGuiBtnType.BTN_A)); - controllers[0].SetKey((ulong)EssgeeSingleKey.BTN_2, AxiInputEx.ByUGUIBtn(AxiInputUGuiBtnType.BTN_B)); - controllers[0].SetKey((ulong)EssgeeSingleKey.BTN_3, AxiInputEx.ByUGUIBtn(AxiInputUGuiBtnType.BTN_C)); - controllers[0].SetKey((ulong)EssgeeSingleKey.BTN_4, AxiInputEx.ByUGUIBtn(AxiInputUGuiBtnType.BTN_D)); - - //P2 键盘 - controllers[1].SetKey((ulong)EssgeeSingleKey.OPTION_1, AxiInputEx.ByKeyCode(KeyCode.Keypad0)); - controllers[1].SetKey((ulong)EssgeeSingleKey.OPTION_2, AxiInputEx.ByKeyCode(KeyCode.Delete)); - controllers[1].SetKey((ulong)EssgeeSingleKey.UP, AxiInputEx.ByKeyCode(KeyCode.UpArrow)); - controllers[1].SetKey((ulong)EssgeeSingleKey.DOWN, AxiInputEx.ByKeyCode(KeyCode.DownArrow)); - controllers[1].SetKey((ulong)EssgeeSingleKey.LEFT, AxiInputEx.ByKeyCode(KeyCode.LeftArrow)); - controllers[1].SetKey((ulong)EssgeeSingleKey.RIGHT, AxiInputEx.ByKeyCode(KeyCode.RightArrow)); - controllers[1].SetKey((ulong)EssgeeSingleKey.BTN_1, AxiInputEx.ByKeyCode(KeyCode.Keypad1)); - controllers[1].SetKey((ulong)EssgeeSingleKey.BTN_2, AxiInputEx.ByKeyCode(KeyCode.Keypad2)); - controllers[1].SetKey((ulong)EssgeeSingleKey.BTN_3, AxiInputEx.ByKeyCode(KeyCode.Keypad3)); - controllers[1].SetKey((ulong)EssgeeSingleKey.BTN_4, AxiInputEx.ByKeyCode(KeyCode.Keypad4)); - - controllers[0].ColletAllKey(); - #endregion - } - } - - public class MasterSystemSingleKeysSeting : SingleKeySettingBase - { - } -} - diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiInputSP.Settings/MasterSystemMultiKeysSetting.cs.meta b/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiInputSP.Settings/MasterSystemMultiKeysSetting.cs.meta deleted file mode 100644 index 46440769..00000000 --- a/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiInputSP.Settings/MasterSystemMultiKeysSetting.cs.meta +++ /dev/null @@ -1,2 +0,0 @@ -fileFormatVersion: 2 -guid: e3d5584a82b098141bf0c415938daf84 \ No newline at end of file diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiInputSP.Settings/NESMultiKeysSetting.cs b/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiInputSP.Settings/NESMultiKeysSetting.cs deleted file mode 100644 index 5db67991..00000000 --- a/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiInputSP.Settings/NESMultiKeysSetting.cs +++ /dev/null @@ -1,80 +0,0 @@ -using AxibugEmuOnline.Client.Manager; -using AxiInputSP; -using UnityEngine; -using VirtualNes.Core; - -namespace AxiInputSP.Setting -{ - public class NESMultiKeysSetting : MultiKeysSettingBase - { - public NESMultiKeysSetting() - { - controllers = new NESSingleKeysSeting[4]; - for (int i = 0; i < controllers.Length; i++) - controllers[i] = new NESSingleKeysSeting(); - } - - public override void LoadDefaultSetting() - { - ClearAll(); -#if UNITY_PSP2 && !UNITY_EDITOR - //PSV 摇杆 - controllers[0].SetKey((ulong)EnumButtonType.START, AxiInputEx.ByKeyCode(PSVitaKey.Start)); - controllers[0].SetKey((ulong)EnumButtonType.SELECT, AxiInputEx.ByKeyCode(PSVitaKey.Select)); - controllers[0].SetKey((ulong)EnumButtonType.UP, AxiInputEx.ByKeyCode(PSVitaKey.Up)); - controllers[0].SetKey((ulong)EnumButtonType.DOWN, AxiInputEx.ByKeyCode(PSVitaKey.Down)); - controllers[0].SetKey((ulong)EnumButtonType.LEFT, AxiInputEx.ByKeyCode(PSVitaKey.Left)); - controllers[0].SetKey((ulong)EnumButtonType.RIGHT, AxiInputEx.ByKeyCode(PSVitaKey.Right)); - controllers[0].SetKey((ulong)EnumButtonType.A, AxiInputEx.ByKeyCode(PSVitaKey.Cross)); - controllers[0].SetKey((ulong)EnumButtonType.B, AxiInputEx.ByKeyCode(PSVitaKey.Circle)); - controllers[0].SetKey((ulong)EnumButtonType.MIC, AxiInputEx.ByKeyCode(PSVitaKey.Block)); - //PSV 摇杆 - controllers[0].SetKey((ulong)EnumButtonType.UP, AxiInputEx.ByAxis(AxiInputAxisType.UP)); - controllers[0].SetKey((ulong)EnumButtonType.DOWN, AxiInputEx.ByAxis(AxiInputAxisType.DOWN)); - controllers[0].SetKey((ulong)EnumButtonType.LEFT, AxiInputEx.ByAxis(AxiInputAxisType.LEFT)); - controllers[0].SetKey((ulong)EnumButtonType.RIGHT, AxiInputEx.ByAxis(AxiInputAxisType.RIGHT)); - controllers[0].ColletAllKey(); - return; -#endif - #region P1 - //P1 键盘 - controllers[0].SetKey((ulong)EnumButtonType.START, AxiInputEx.ByKeyCode(KeyCode.Return)); - controllers[0].SetKey((ulong)EnumButtonType.SELECT, AxiInputEx.ByKeyCode(KeyCode.RightShift)); - controllers[0].SetKey((ulong)EnumButtonType.UP, AxiInputEx.ByKeyCode(KeyCode.W)); - controllers[0].SetKey((ulong)EnumButtonType.DOWN, AxiInputEx.ByKeyCode(KeyCode.S)); - controllers[0].SetKey((ulong)EnumButtonType.LEFT, AxiInputEx.ByKeyCode(KeyCode.A)); - controllers[0].SetKey((ulong)EnumButtonType.RIGHT, AxiInputEx.ByKeyCode(KeyCode.D)); - controllers[0].SetKey((ulong)EnumButtonType.A, AxiInputEx.ByKeyCode(KeyCode.K)); - controllers[0].SetKey((ulong)EnumButtonType.B, AxiInputEx.ByKeyCode(KeyCode.J)); - controllers[0].SetKey((ulong)EnumButtonType.MIC, AxiInputEx.ByKeyCode(KeyCode.U)); - - //P1 UGUI - controllers[0].SetKey((ulong)EnumButtonType.START, AxiInputEx.ByUGUIBtn(AxiInputUGuiBtnType.POTION_1)); - controllers[0].SetKey((ulong)EnumButtonType.SELECT, AxiInputEx.ByUGUIBtn(AxiInputUGuiBtnType.POTION_2)); - controllers[0].SetKey((ulong)EnumButtonType.UP, AxiInputEx.ByUGUIBtn(AxiInputUGuiBtnType.UP)); - controllers[0].SetKey((ulong)EnumButtonType.DOWN, AxiInputEx.ByUGUIBtn(AxiInputUGuiBtnType.DOWN)); - controllers[0].SetKey((ulong)EnumButtonType.LEFT, AxiInputEx.ByUGUIBtn(AxiInputUGuiBtnType.LEFT)); - controllers[0].SetKey((ulong)EnumButtonType.RIGHT, AxiInputEx.ByUGUIBtn(AxiInputUGuiBtnType.RIGHT)); - controllers[0].SetKey((ulong)EnumButtonType.A, AxiInputEx.ByUGUIBtn(AxiInputUGuiBtnType.BTN_B)); - controllers[0].SetKey((ulong)EnumButtonType.B, AxiInputEx.ByUGUIBtn(AxiInputUGuiBtnType.BTN_A)); - controllers[0].SetKey((ulong)EnumButtonType.MIC, AxiInputEx.ByUGUIBtn(AxiInputUGuiBtnType.BTN_C)); - - //P2 键盘 - controllers[1].SetKey((ulong)EnumButtonType.START, AxiInputEx.ByKeyCode(KeyCode.Keypad0)); - controllers[1].SetKey((ulong)EnumButtonType.SELECT, AxiInputEx.ByKeyCode(KeyCode.Delete)); - controllers[1].SetKey((ulong)EnumButtonType.UP, AxiInputEx.ByKeyCode(KeyCode.UpArrow)); - controllers[1].SetKey((ulong)EnumButtonType.DOWN, AxiInputEx.ByKeyCode(KeyCode.DownArrow)); - controllers[1].SetKey((ulong)EnumButtonType.LEFT, AxiInputEx.ByKeyCode(KeyCode.LeftArrow)); - controllers[1].SetKey((ulong)EnumButtonType.RIGHT, AxiInputEx.ByKeyCode(KeyCode.RightArrow)); - controllers[1].SetKey((ulong)EnumButtonType.A, AxiInputEx.ByKeyCode(KeyCode.Keypad2)); - controllers[1].SetKey((ulong)EnumButtonType.B, AxiInputEx.ByKeyCode(KeyCode.Keypad1)); - controllers[1].SetKey((ulong)EnumButtonType.MIC, AxiInputEx.ByKeyCode(KeyCode.Keypad4)); - - controllers[0].ColletAllKey(); - #endregion - } - } - public class NESSingleKeysSeting : SingleKeySettingBase - { - } -} diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiInputSP.Settings/NESMultiKeysSetting.cs.meta b/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiInputSP.Settings/NESMultiKeysSetting.cs.meta deleted file mode 100644 index f0258e9f..00000000 --- a/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiInputSP.Settings/NESMultiKeysSetting.cs.meta +++ /dev/null @@ -1,2 +0,0 @@ -fileFormatVersion: 2 -guid: 6556ff70f8cab73438e5fb7755808a3c \ No newline at end of file diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiInputSP.Settings/SC3000MultiKeysSetting.cs b/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiInputSP.Settings/SC3000MultiKeysSetting.cs deleted file mode 100644 index d305c562..00000000 --- a/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiInputSP.Settings/SC3000MultiKeysSetting.cs +++ /dev/null @@ -1,86 +0,0 @@ -using AxibugEmuOnline.Client.Manager; -using AxibugEmuOnline.Client.Settings; -using UnityEngine; - -namespace AxiInputSP.Setting -{ - public class SC3000MultiKeysSetting : MultiKeysSettingBase - { - public SC3000MultiKeysSetting() - { - controllers = new SC3000SingleKeysSeting[4]; - for (int i = 0; i < controllers.Length; i++) - controllers[i] = new SC3000SingleKeysSeting(); - } - - public override void LoadDefaultSetting() - { - ClearAll(); - -#if UNITY_PSP2 && !UNITY_EDITOR - //PSV 摇杆 - controllers[0].SetKey((ulong)EssgeeSingleKey.POTION_1, AxiInputEx.ByKeyCode(PSVitaKey.Start)); - controllers[0].SetKey((ulong)EssgeeSingleKey.POTION_2, AxiInputEx.ByKeyCode(PSVitaKey.Select)); - controllers[0].SetKey((ulong)EssgeeSingleKey.UP, AxiInputEx.ByKeyCode(PSVitaKey.Up)); - controllers[0].SetKey((ulong)EssgeeSingleKey.DOWN, AxiInputEx.ByKeyCode(PSVitaKey.Down)); - controllers[0].SetKey((ulong)EssgeeSingleKey.LEFT, AxiInputEx.ByKeyCode(PSVitaKey.Left)); - controllers[0].SetKey((ulong)EssgeeSingleKey.RIGHT, AxiInputEx.ByKeyCode(PSVitaKey.Right)); - controllers[0].SetKey((ulong)EssgeeSingleKey.BTN_1, AxiInputEx.ByKeyCode(PSVitaKey.Cross)); - controllers[0].SetKey((ulong)EssgeeSingleKey.BTN_2, AxiInputEx.ByKeyCode(PSVitaKey.Circle)); - controllers[0].SetKey((ulong)EssgeeSingleKey.BTN_3, AxiInputEx.ByKeyCode(PSVitaKey.Block)); - controllers[0].SetKey((ulong)EssgeeSingleKey.BTN_4, AxiInputEx.ByKeyCode(PSVitaKey.Triangle)); - //PSV 摇杆 - controllers[0].SetKey((ulong)EssgeeSingleKey.UP, AxiInputEx.ByAxis(AxiInputAxisType.UP)); - controllers[0].SetKey((ulong)EssgeeSingleKey.DOWN, AxiInputEx.ByAxis(AxiInputAxisType.DOWN)); - controllers[0].SetKey((ulong)EssgeeSingleKey.LEFT, AxiInputEx.ByAxis(AxiInputAxisType.LEFT)); - controllers[0].SetKey((ulong)EssgeeSingleKey.RIGHT, AxiInputEx.ByAxis(AxiInputAxisType.RIGHT)); - controllers[0].ColletAllKey(); - return; -#endif - #region P1 - //P1 键盘 - controllers[0].SetKey((ulong)EssgeeSingleKey.OPTION_1, AxiInputEx.ByKeyCode(KeyCode.Return)); - controllers[0].SetKey((ulong)EssgeeSingleKey.OPTION_2, AxiInputEx.ByKeyCode(KeyCode.RightShift)); - controllers[0].SetKey((ulong)EssgeeSingleKey.UP, AxiInputEx.ByKeyCode(KeyCode.W)); - controllers[0].SetKey((ulong)EssgeeSingleKey.DOWN, AxiInputEx.ByKeyCode(KeyCode.S)); - controllers[0].SetKey((ulong)EssgeeSingleKey.LEFT, AxiInputEx.ByKeyCode(KeyCode.A)); - controllers[0].SetKey((ulong)EssgeeSingleKey.RIGHT, AxiInputEx.ByKeyCode(KeyCode.D)); - controllers[0].SetKey((ulong)EssgeeSingleKey.BTN_1, AxiInputEx.ByKeyCode(KeyCode.J)); - controllers[0].SetKey((ulong)EssgeeSingleKey.BTN_2, AxiInputEx.ByKeyCode(KeyCode.K)); - controllers[0].SetKey((ulong)EssgeeSingleKey.BTN_3, AxiInputEx.ByKeyCode(KeyCode.U)); - controllers[0].SetKey((ulong)EssgeeSingleKey.BTN_4, AxiInputEx.ByKeyCode(KeyCode.I)); - - //P1 UGUI - controllers[0].SetKey((ulong)EssgeeSingleKey.OPTION_1, AxiInputEx.ByUGUIBtn(AxiInputUGuiBtnType.POTION_1)); - controllers[0].SetKey((ulong)EssgeeSingleKey.OPTION_2, AxiInputEx.ByUGUIBtn(AxiInputUGuiBtnType.POTION_2)); - controllers[0].SetKey((ulong)EssgeeSingleKey.UP, AxiInputEx.ByUGUIBtn(AxiInputUGuiBtnType.UP)); - controllers[0].SetKey((ulong)EssgeeSingleKey.DOWN, AxiInputEx.ByUGUIBtn(AxiInputUGuiBtnType.DOWN)); - controllers[0].SetKey((ulong)EssgeeSingleKey.LEFT, AxiInputEx.ByUGUIBtn(AxiInputUGuiBtnType.LEFT)); - controllers[0].SetKey((ulong)EssgeeSingleKey.RIGHT, AxiInputEx.ByUGUIBtn(AxiInputUGuiBtnType.RIGHT)); - controllers[0].SetKey((ulong)EssgeeSingleKey.BTN_1, AxiInputEx.ByUGUIBtn(AxiInputUGuiBtnType.BTN_A)); - controllers[0].SetKey((ulong)EssgeeSingleKey.BTN_2, AxiInputEx.ByUGUIBtn(AxiInputUGuiBtnType.BTN_B)); - controllers[0].SetKey((ulong)EssgeeSingleKey.BTN_3, AxiInputEx.ByUGUIBtn(AxiInputUGuiBtnType.BTN_C)); - controllers[0].SetKey((ulong)EssgeeSingleKey.BTN_4, AxiInputEx.ByUGUIBtn(AxiInputUGuiBtnType.BTN_D)); - - //P2 键盘 - controllers[1].SetKey((ulong)EssgeeSingleKey.OPTION_1, AxiInputEx.ByKeyCode(KeyCode.Keypad0)); - controllers[1].SetKey((ulong)EssgeeSingleKey.OPTION_2, AxiInputEx.ByKeyCode(KeyCode.Delete)); - controllers[1].SetKey((ulong)EssgeeSingleKey.UP, AxiInputEx.ByKeyCode(KeyCode.UpArrow)); - controllers[1].SetKey((ulong)EssgeeSingleKey.DOWN, AxiInputEx.ByKeyCode(KeyCode.DownArrow)); - controllers[1].SetKey((ulong)EssgeeSingleKey.LEFT, AxiInputEx.ByKeyCode(KeyCode.LeftArrow)); - controllers[1].SetKey((ulong)EssgeeSingleKey.RIGHT, AxiInputEx.ByKeyCode(KeyCode.RightArrow)); - controllers[1].SetKey((ulong)EssgeeSingleKey.BTN_1, AxiInputEx.ByKeyCode(KeyCode.Keypad1)); - controllers[1].SetKey((ulong)EssgeeSingleKey.BTN_2, AxiInputEx.ByKeyCode(KeyCode.Keypad2)); - controllers[1].SetKey((ulong)EssgeeSingleKey.BTN_3, AxiInputEx.ByKeyCode(KeyCode.Keypad3)); - controllers[1].SetKey((ulong)EssgeeSingleKey.BTN_4, AxiInputEx.ByKeyCode(KeyCode.Keypad4)); - - controllers[0].ColletAllKey(); - #endregion - } - } - - public class SC3000SingleKeysSeting : SingleKeySettingBase - { - } -} - diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiInputSP.Settings/SC3000MultiKeysSetting.cs.meta b/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiInputSP.Settings/SC3000MultiKeysSetting.cs.meta deleted file mode 100644 index 18f06e0f..00000000 --- a/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiInputSP.Settings/SC3000MultiKeysSetting.cs.meta +++ /dev/null @@ -1,2 +0,0 @@ -fileFormatVersion: 2 -guid: bee2b8a3f5efaec47b9b363eeaa03160 \ No newline at end of file diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiInputSP.Settings/SG1000MultiKeysSetting.cs b/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiInputSP.Settings/SG1000MultiKeysSetting.cs deleted file mode 100644 index 316248d0..00000000 --- a/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiInputSP.Settings/SG1000MultiKeysSetting.cs +++ /dev/null @@ -1,86 +0,0 @@ -using AxibugEmuOnline.Client.Manager; -using AxibugEmuOnline.Client.Settings; -using UnityEngine; - -namespace AxiInputSP.Setting -{ - public class SG1000MultiKeysSetting : MultiKeysSettingBase - { - public SG1000MultiKeysSetting() - { - controllers = new SG1000SingleKeysSeting[4]; - for (int i = 0; i < controllers.Length; i++) - controllers[i] = new SG1000SingleKeysSeting(); - } - - public override void LoadDefaultSetting() - { - ClearAll(); - -#if UNITY_PSP2 && !UNITY_EDITOR - //PSV 摇杆 - controllers[0].SetKey((ulong)EssgeeSingleKey.POTION_1, AxiInputEx.ByKeyCode(PSVitaKey.Start)); - controllers[0].SetKey((ulong)EssgeeSingleKey.POTION_2, AxiInputEx.ByKeyCode(PSVitaKey.Select)); - controllers[0].SetKey((ulong)EssgeeSingleKey.UP, AxiInputEx.ByKeyCode(PSVitaKey.Up)); - controllers[0].SetKey((ulong)EssgeeSingleKey.DOWN, AxiInputEx.ByKeyCode(PSVitaKey.Down)); - controllers[0].SetKey((ulong)EssgeeSingleKey.LEFT, AxiInputEx.ByKeyCode(PSVitaKey.Left)); - controllers[0].SetKey((ulong)EssgeeSingleKey.RIGHT, AxiInputEx.ByKeyCode(PSVitaKey.Right)); - controllers[0].SetKey((ulong)EssgeeSingleKey.BTN_1, AxiInputEx.ByKeyCode(PSVitaKey.Cross)); - controllers[0].SetKey((ulong)EssgeeSingleKey.BTN_2, AxiInputEx.ByKeyCode(PSVitaKey.Circle)); - controllers[0].SetKey((ulong)EssgeeSingleKey.BTN_3, AxiInputEx.ByKeyCode(PSVitaKey.Block)); - controllers[0].SetKey((ulong)EssgeeSingleKey.BTN_4, AxiInputEx.ByKeyCode(PSVitaKey.Triangle)); - //PSV 摇杆 - controllers[0].SetKey((ulong)EssgeeSingleKey.UP, AxiInputEx.ByAxis(AxiInputAxisType.UP)); - controllers[0].SetKey((ulong)EssgeeSingleKey.DOWN, AxiInputEx.ByAxis(AxiInputAxisType.DOWN)); - controllers[0].SetKey((ulong)EssgeeSingleKey.LEFT, AxiInputEx.ByAxis(AxiInputAxisType.LEFT)); - controllers[0].SetKey((ulong)EssgeeSingleKey.RIGHT, AxiInputEx.ByAxis(AxiInputAxisType.RIGHT)); - controllers[0].ColletAllKey(); - return; -#endif - #region P1 - //P1 键盘 - controllers[0].SetKey((ulong)EssgeeSingleKey.OPTION_1, AxiInputEx.ByKeyCode(KeyCode.Return)); - controllers[0].SetKey((ulong)EssgeeSingleKey.OPTION_2, AxiInputEx.ByKeyCode(KeyCode.RightShift)); - controllers[0].SetKey((ulong)EssgeeSingleKey.UP, AxiInputEx.ByKeyCode(KeyCode.W)); - controllers[0].SetKey((ulong)EssgeeSingleKey.DOWN, AxiInputEx.ByKeyCode(KeyCode.S)); - controllers[0].SetKey((ulong)EssgeeSingleKey.LEFT, AxiInputEx.ByKeyCode(KeyCode.A)); - controllers[0].SetKey((ulong)EssgeeSingleKey.RIGHT, AxiInputEx.ByKeyCode(KeyCode.D)); - controllers[0].SetKey((ulong)EssgeeSingleKey.BTN_1, AxiInputEx.ByKeyCode(KeyCode.J)); - controllers[0].SetKey((ulong)EssgeeSingleKey.BTN_2, AxiInputEx.ByKeyCode(KeyCode.K)); - controllers[0].SetKey((ulong)EssgeeSingleKey.BTN_3, AxiInputEx.ByKeyCode(KeyCode.U)); - controllers[0].SetKey((ulong)EssgeeSingleKey.BTN_4, AxiInputEx.ByKeyCode(KeyCode.I)); - - //P1 UGUI - controllers[0].SetKey((ulong)EssgeeSingleKey.OPTION_1, AxiInputEx.ByUGUIBtn(AxiInputUGuiBtnType.POTION_1)); - controllers[0].SetKey((ulong)EssgeeSingleKey.OPTION_2, AxiInputEx.ByUGUIBtn(AxiInputUGuiBtnType.POTION_2)); - controllers[0].SetKey((ulong)EssgeeSingleKey.UP, AxiInputEx.ByUGUIBtn(AxiInputUGuiBtnType.UP)); - controllers[0].SetKey((ulong)EssgeeSingleKey.DOWN, AxiInputEx.ByUGUIBtn(AxiInputUGuiBtnType.DOWN)); - controllers[0].SetKey((ulong)EssgeeSingleKey.LEFT, AxiInputEx.ByUGUIBtn(AxiInputUGuiBtnType.LEFT)); - controllers[0].SetKey((ulong)EssgeeSingleKey.RIGHT, AxiInputEx.ByUGUIBtn(AxiInputUGuiBtnType.RIGHT)); - controllers[0].SetKey((ulong)EssgeeSingleKey.BTN_1, AxiInputEx.ByUGUIBtn(AxiInputUGuiBtnType.BTN_A)); - controllers[0].SetKey((ulong)EssgeeSingleKey.BTN_2, AxiInputEx.ByUGUIBtn(AxiInputUGuiBtnType.BTN_B)); - controllers[0].SetKey((ulong)EssgeeSingleKey.BTN_3, AxiInputEx.ByUGUIBtn(AxiInputUGuiBtnType.BTN_C)); - controllers[0].SetKey((ulong)EssgeeSingleKey.BTN_4, AxiInputEx.ByUGUIBtn(AxiInputUGuiBtnType.BTN_D)); - - //P2 键盘 - controllers[1].SetKey((ulong)EssgeeSingleKey.OPTION_1, AxiInputEx.ByKeyCode(KeyCode.Keypad0)); - controllers[1].SetKey((ulong)EssgeeSingleKey.OPTION_2, AxiInputEx.ByKeyCode(KeyCode.Delete)); - controllers[1].SetKey((ulong)EssgeeSingleKey.UP, AxiInputEx.ByKeyCode(KeyCode.UpArrow)); - controllers[1].SetKey((ulong)EssgeeSingleKey.DOWN, AxiInputEx.ByKeyCode(KeyCode.DownArrow)); - controllers[1].SetKey((ulong)EssgeeSingleKey.LEFT, AxiInputEx.ByKeyCode(KeyCode.LeftArrow)); - controllers[1].SetKey((ulong)EssgeeSingleKey.RIGHT, AxiInputEx.ByKeyCode(KeyCode.RightArrow)); - controllers[1].SetKey((ulong)EssgeeSingleKey.BTN_1, AxiInputEx.ByKeyCode(KeyCode.Keypad1)); - controllers[1].SetKey((ulong)EssgeeSingleKey.BTN_2, AxiInputEx.ByKeyCode(KeyCode.Keypad2)); - controllers[1].SetKey((ulong)EssgeeSingleKey.BTN_3, AxiInputEx.ByKeyCode(KeyCode.Keypad3)); - controllers[1].SetKey((ulong)EssgeeSingleKey.BTN_4, AxiInputEx.ByKeyCode(KeyCode.Keypad4)); - - controllers[0].ColletAllKey(); - #endregion - } - } - - public class SG1000SingleKeysSeting : SingleKeySettingBase - { - } -} - diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiInputSP.Settings/SG1000MultiKeysSetting.cs.meta b/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiInputSP.Settings/SG1000MultiKeysSetting.cs.meta deleted file mode 100644 index 8840360a..00000000 --- a/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiInputSP.Settings/SG1000MultiKeysSetting.cs.meta +++ /dev/null @@ -1,2 +0,0 @@ -fileFormatVersion: 2 -guid: 771225d8fe367ac42b6b91adf81ca27f \ No newline at end of file diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiInputSP.Settings/UMAMEMultiKeysSetting.cs b/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiInputSP.Settings/UMAMEMultiKeysSetting.cs deleted file mode 100644 index 4f35c774..00000000 --- a/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiInputSP.Settings/UMAMEMultiKeysSetting.cs +++ /dev/null @@ -1,83 +0,0 @@ -using AxibugEmuOnline.Client.Manager; -using AxibugEmuOnline.Client.Settings; -using UnityEngine; - -namespace AxiInputSP.Setting -{ - public class UMAMEMultiKeysSetting : MultiKeysSettingBase - { - public UMAMEMultiKeysSetting() - { - controllers = new UMAMEKSingleKeysSeting[4]; - for (int i = 0; i < controllers.Length; i++) - controllers[i] = new UMAMEKSingleKeysSeting(); - } - - public override void LoadDefaultSetting() - { - ClearAll(); -#if UNITY_PSP2 && !UNITY_EDITOR - //PSV 摇杆 - controllers[0].SetKey((ulong)MAMEKSingleKey.GAMESTART, AxiInputEx.ByKeyCode(PSVitaKey.Start)); - controllers[0].SetKey((ulong)MAMEKSingleKey.INSERT_COIN, AxiInputEx.ByKeyCode(PSVitaKey.Select)); - controllers[0].SetKey((ulong)MAMEKSingleKey.UP, AxiInputEx.ByKeyCode(PSVitaKey.Up)); - controllers[0].SetKey((ulong)MAMEKSingleKey.DOWN, AxiInputEx.ByKeyCode(PSVitaKey.Down)); - controllers[0].SetKey((ulong)MAMEKSingleKey.LEFT, AxiInputEx.ByKeyCode(PSVitaKey.Left)); - controllers[0].SetKey((ulong)MAMEKSingleKey.RIGHT, AxiInputEx.ByKeyCode(PSVitaKey.Right)); - controllers[0].SetKey((ulong)MAMEKSingleKey.BTN_A, AxiInputEx.ByKeyCode(PSVitaKey.Block)); - controllers[0].SetKey((ulong)MAMEKSingleKey.BTN_B, AxiInputEx.ByKeyCode(PSVitaKey.Cross)); - controllers[0].SetKey((ulong)MAMEKSingleKey.BTN_C, AxiInputEx.ByKeyCode(PSVitaKey.Circle)); - controllers[0].SetKey((ulong)MAMEKSingleKey.BTN_D, AxiInputEx.ByKeyCode(PSVitaKey.Triangle)); - controllers[0].SetKey((ulong)MAMEKSingleKey.BTN_E, AxiInputEx.ByKeyCode(PSVitaKey.L)); - controllers[0].SetKey((ulong)MAMEKSingleKey.BTN_F, AxiInputEx.ByKeyCode(PSVitaKey.R)); - //PSV 摇杆 - controllers[0].SetKey((ulong)MAMEKSingleKey.UP, AxiInputEx.ByAxis(AxiInputAxisType.UP)); - controllers[0].SetKey((ulong)MAMEKSingleKey.DOWN, AxiInputEx.ByAxis(AxiInputAxisType.DOWN)); - controllers[0].SetKey((ulong)MAMEKSingleKey.LEFT, AxiInputEx.ByAxis(AxiInputAxisType.LEFT)); - controllers[0].SetKey((ulong)MAMEKSingleKey.RIGHT, AxiInputEx.ByAxis(AxiInputAxisType.RIGHT)); - controllers[0].ColletAllKey(); - return; -#endif - #region P1 - //P1 键盘 - controllers[0].SetKey((ulong)UMAMEKSingleKey.GAMESTART, AxiInputEx.ByKeyCode(KeyCode.Alpha1)); - controllers[0].SetKey((ulong)UMAMEKSingleKey.INSERT_COIN, AxiInputEx.ByKeyCode(KeyCode.Alpha5)); - controllers[0].SetKey((ulong)UMAMEKSingleKey.UP, AxiInputEx.ByKeyCode(KeyCode.W)); - controllers[0].SetKey((ulong)UMAMEKSingleKey.DOWN, AxiInputEx.ByKeyCode(KeyCode.S)); - controllers[0].SetKey((ulong)UMAMEKSingleKey.LEFT, AxiInputEx.ByKeyCode(KeyCode.A)); - controllers[0].SetKey((ulong)UMAMEKSingleKey.RIGHT, AxiInputEx.ByKeyCode(KeyCode.D)); - controllers[0].SetKey((ulong)UMAMEKSingleKey.BTN_A, AxiInputEx.ByKeyCode(KeyCode.J)); - controllers[0].SetKey((ulong)UMAMEKSingleKey.BTN_B, AxiInputEx.ByKeyCode(KeyCode.K)); - controllers[0].SetKey((ulong)UMAMEKSingleKey.BTN_C, AxiInputEx.ByKeyCode(KeyCode.L)); - controllers[0].SetKey((ulong)UMAMEKSingleKey.BTN_D, AxiInputEx.ByKeyCode(KeyCode.U)); - controllers[0].SetKey((ulong)UMAMEKSingleKey.BTN_E, AxiInputEx.ByKeyCode(KeyCode.I)); - controllers[0].SetKey((ulong)UMAMEKSingleKey.BTN_F, AxiInputEx.ByKeyCode(KeyCode.O)); - - //Axis - controllers[0].SetKey((ulong)UMAMEKSingleKey.UP, AxiInputEx.ByAxis(AxiInputAxisType.UP)); - controllers[0].SetKey((ulong)UMAMEKSingleKey.DOWN, AxiInputEx.ByAxis(AxiInputAxisType.DOWN)); - controllers[0].SetKey((ulong)UMAMEKSingleKey.LEFT, AxiInputEx.ByAxis(AxiInputAxisType.LEFT)); - controllers[0].SetKey((ulong)UMAMEKSingleKey.RIGHT, AxiInputEx.ByAxis(AxiInputAxisType.RIGHT)); - - //P1 UGUI - controllers[0].SetKey((ulong)UMAMEKSingleKey.GAMESTART, AxiInputEx.ByUGUIBtn(AxiInputUGuiBtnType.POTION_1)); - controllers[0].SetKey((ulong)UMAMEKSingleKey.INSERT_COIN, AxiInputEx.ByUGUIBtn(AxiInputUGuiBtnType.POTION_2)); - controllers[0].SetKey((ulong)UMAMEKSingleKey.UP, AxiInputEx.ByUGUIBtn(AxiInputUGuiBtnType.UP)); - controllers[0].SetKey((ulong)UMAMEKSingleKey.DOWN, AxiInputEx.ByUGUIBtn(AxiInputUGuiBtnType.DOWN)); - controllers[0].SetKey((ulong)UMAMEKSingleKey.LEFT, AxiInputEx.ByUGUIBtn(AxiInputUGuiBtnType.LEFT)); - controllers[0].SetKey((ulong)UMAMEKSingleKey.RIGHT, AxiInputEx.ByUGUIBtn(AxiInputUGuiBtnType.RIGHT)); - controllers[0].SetKey((ulong)UMAMEKSingleKey.BTN_A, AxiInputEx.ByUGUIBtn(AxiInputUGuiBtnType.BTN_A)); - controllers[0].SetKey((ulong)UMAMEKSingleKey.BTN_B, AxiInputEx.ByUGUIBtn(AxiInputUGuiBtnType.BTN_B)); - controllers[0].SetKey((ulong)UMAMEKSingleKey.BTN_C, AxiInputEx.ByUGUIBtn(AxiInputUGuiBtnType.BTN_C)); - controllers[0].SetKey((ulong)UMAMEKSingleKey.BTN_D, AxiInputEx.ByUGUIBtn(AxiInputUGuiBtnType.BTN_D)); - controllers[0].SetKey((ulong)UMAMEKSingleKey.BTN_E, AxiInputEx.ByUGUIBtn(AxiInputUGuiBtnType.BTN_E)); - controllers[0].SetKey((ulong)UMAMEKSingleKey.BTN_F, AxiInputEx.ByUGUIBtn(AxiInputUGuiBtnType.BTN_F)); - - controllers[0].ColletAllKey(); - #endregion - } - } - public class UMAMEKSingleKeysSeting : SingleKeySettingBase - { - } -} diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiInputSP.Settings/UMAMEMultiKeysSetting.cs.meta b/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiInputSP.Settings/UMAMEMultiKeysSetting.cs.meta deleted file mode 100644 index 31eefb9e..00000000 --- a/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiInputSP.Settings/UMAMEMultiKeysSetting.cs.meta +++ /dev/null @@ -1,2 +0,0 @@ -fileFormatVersion: 2 -guid: 486aed2afcba6b94f86c1ae4e4aeaf02 \ No newline at end of file diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiInputSP.Settings/XMBMultiKeysSetting.cs b/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiInputSP.Settings/XMBMultiKeysSetting.cs deleted file mode 100644 index dd94b0a1..00000000 --- a/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiInputSP.Settings/XMBMultiKeysSetting.cs +++ /dev/null @@ -1,72 +0,0 @@ -using AxibugEmuOnline.Client; -using AxibugEmuOnline.Client.Common; -using AxibugEmuOnline.Client.Manager; -using UnityEngine; - -namespace AxiInputSP.Setting -{ - public class XMBMultiKeysSetting : MultiKeysSettingBase - { - public XMBMultiKeysSetting() - { - controllers = new XMBSingleKeysSeting[1]; - for (int i = 0; i < controllers.Length; i++) - controllers[i] = new XMBSingleKeysSeting(); - } - - public override void LoadDefaultSetting() - { - ClearAll(); - -#if UNITY_PSP2 && !UNITY_EDITOR - controllers[0].SetKey((ulong)EnumCommand.SelectItemUp, AxiInputEx.ByKeyCode(PSVitaKey.Up)); - controllers[0].SetKey((ulong)EnumCommand.SelectItemDown, AxiInputEx.ByKeyCode(PSVitaKey.Down)); - controllers[0].SetKey((ulong)EnumCommand.SelectItemLeft, AxiInputEx.ByKeyCode(PSVitaKey.Left)); - controllers[0].SetKey((ulong)EnumCommand.SelectItemRight, AxiInputEx.ByKeyCode(PSVitaKey.Right)); - controllers[0].SetKey((ulong)EnumCommand.Enter, AxiInputEx.ByKeyCode(PSVitaKey.Circle)); - controllers[0].SetKey((ulong)EnumCommand.Back, AxiInputEx.ByKeyCode(PSVitaKey.Cross)); - controllers[0].SetKey((ulong)EnumCommand.OptionMenu, AxiInputEx.ByKeyCode(PSVitaKey.Triangle)); - controllers[0].ColletAllKey(); - return; -#endif - //键盘 - controllers[0].SetKey((ulong)EnumCommand.SelectItemUp, AxiInputEx.ByKeyCode(KeyCode.W)); - controllers[0].SetKey((ulong)EnumCommand.SelectItemDown, AxiInputEx.ByKeyCode(KeyCode.S)); - controllers[0].SetKey((ulong)EnumCommand.SelectItemLeft, AxiInputEx.ByKeyCode(KeyCode.A)); - controllers[0].SetKey((ulong)EnumCommand.SelectItemRight, AxiInputEx.ByKeyCode(KeyCode.D)); - controllers[0].SetKey((ulong)EnumCommand.Enter, AxiInputEx.ByKeyCode(KeyCode.J)); - controllers[0].SetKey((ulong)EnumCommand.Enter, AxiInputEx.ByKeyCode(KeyCode.Return)); - controllers[0].SetKey((ulong)EnumCommand.Back, AxiInputEx.ByKeyCode(KeyCode.K)); - controllers[0].SetKey((ulong)EnumCommand.Back, AxiInputEx.ByKeyCode(KeyCode.Escape)); - controllers[0].SetKey((ulong)EnumCommand.OptionMenu, AxiInputEx.ByKeyCode(KeyCode.I)); - - //Axis - controllers[0].SetKey((ulong)EnumCommand.SelectItemUp, AxiInputEx.ByAxis(AxiInputAxisType.UP)); - controllers[0].SetKey((ulong)EnumCommand.SelectItemDown, AxiInputEx.ByAxis(AxiInputAxisType.DOWN)); - controllers[0].SetKey((ulong)EnumCommand.SelectItemLeft, AxiInputEx.ByAxis(AxiInputAxisType.LEFT)); - controllers[0].SetKey((ulong)EnumCommand.SelectItemRight, AxiInputEx.ByAxis(AxiInputAxisType.RIGHT)); - - //P1 UGUI - controllers[0].SetKey((ulong)EnumCommand.SelectItemUp, AxiInputEx.ByUGUIBtn(AxiInputUGuiBtnType.UP)); - controllers[0].SetKey((ulong)EnumCommand.SelectItemDown, AxiInputEx.ByUGUIBtn(AxiInputUGuiBtnType.DOWN)); - controllers[0].SetKey((ulong)EnumCommand.SelectItemLeft, AxiInputEx.ByUGUIBtn(AxiInputUGuiBtnType.LEFT)); - controllers[0].SetKey((ulong)EnumCommand.SelectItemRight, AxiInputEx.ByUGUIBtn(AxiInputUGuiBtnType.RIGHT)); - controllers[0].SetKey((ulong)EnumCommand.Enter, AxiInputEx.ByUGUIBtn(AxiInputUGuiBtnType.BTN_A)); - controllers[0].SetKey((ulong)EnumCommand.Back, AxiInputEx.ByUGUIBtn(AxiInputUGuiBtnType.BTN_B)); - controllers[0].SetKey((ulong)EnumCommand.OptionMenu, AxiInputEx.ByUGUIBtn(AxiInputUGuiBtnType.HOME)); - - //PC XBOX - - //TODO 待补全 - controllers[0].SetKey((ulong)EnumCommand.Enter, AxiInputEx.ByKeyCode(PC_XBOXKEY.MenuBtn)); - controllers[0].SetKey((ulong)EnumCommand.Back, AxiInputEx.ByKeyCode(PC_XBOXKEY.ViewBtn)); - controllers[0].SetKey((ulong)EnumCommand.OptionMenu, AxiInputEx.ByKeyCode(PC_XBOXKEY.Y)); - - controllers[0].ColletAllKey(); - } - } - - public class XMBSingleKeysSeting : SingleKeySettingBase - { - } -} diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiInputSP.Settings/XMBMultiKeysSetting.cs.meta b/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiInputSP.Settings/XMBMultiKeysSetting.cs.meta deleted file mode 100644 index 2333e4e7..00000000 --- a/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiInputSP.Settings/XMBMultiKeysSetting.cs.meta +++ /dev/null @@ -1,2 +0,0 @@ -fileFormatVersion: 2 -guid: 90bd1ccb53a0ddd4b814030f1ae218a2 \ No newline at end of file diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiInputSP/AxiInput.Struct.cs b/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiInputSP/AxiInput.Struct.cs index c3eee81c..e580c36a 100644 --- a/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiInputSP/AxiInput.Struct.cs +++ b/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiInputSP/AxiInput.Struct.cs @@ -46,10 +46,10 @@ namespace AxiInputSP BTN_D, BTN_E, BTN_F, - POTION_1, - POTION_2, - POTION_3, - POTION_4, + OPTION_1, + OPTION_2, + OPTION_3, + OPTION_4, HOME, } } diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiInputSP/AxiInputEx.cs b/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiInputSP/AxiInputEx.cs deleted file mode 100644 index 32b44d88..00000000 --- a/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiInputSP/AxiInputEx.cs +++ /dev/null @@ -1,79 +0,0 @@ -using AxiInputSP.Axis; -using AxiInputSP.UGUI; -using UnityEngine; - -namespace AxiInputSP -{ - public static class AxiInputEx - { - public static AxiInput ByKeyCode(KeyCode keycode) - { - AxiInput data = new AxiInput(); - data.all = 0; - data.type = AxiInputType.UNITY_KEYCODE; - data.KeyCodeValue = keycode; - return data; - } - public static AxiInput ByAxis(AxiInputAxisType axisType) - { - AxiInput data = new AxiInput(); - data.all = 0; - data.type = AxiInputType.UNITY_AXIS; - data.AxisType = axisType; - return data; - } - public static AxiInput ByUGUIBtn(AxiInputUGuiBtnType btnType) - { - AxiInput data = new AxiInput(); - data.all = 0; - data.type = AxiInputType.UNITY_UGUI_BTN; - data.UguiBtn = btnType; - return data; - } - - public static bool GetKeyDown(this AxiInput axiInput) - { - switch (axiInput.type) - { - case AxiInputType.UNITY_KEYCODE: - return Input.GetKeyDown(axiInput.KeyCodeValue); - case AxiInputType.UNITY_AXIS: - return AxiInputAxisCenter.GetKeyDown(axiInput.AxisType); - case AxiInputType.UNITY_UGUI_BTN: - return AxiInputUGUICenter.GetKeyDown(axiInput.UguiBtn); - default: - return false; - } - } - - public static bool GetKeyUp(this AxiInput axiInput) - { - switch (axiInput.type) - { - case AxiInputType.UNITY_KEYCODE: - return Input.GetKeyUp(axiInput.KeyCodeValue); - case AxiInputType.UNITY_AXIS: - return AxiInputAxisCenter.GetKeyUp(axiInput.AxisType); - case AxiInputType.UNITY_UGUI_BTN: - return AxiInputUGUICenter.GetKeyUp(axiInput.UguiBtn); - default: - return false; - } - } - - public static bool GetKey(this AxiInput axiInput) - { - switch (axiInput.type) - { - case AxiInputType.UNITY_KEYCODE: - return Input.GetKey(axiInput.KeyCodeValue); - case AxiInputType.UNITY_AXIS: - return AxiInputAxisCenter.GetKey(axiInput.AxisType); - case AxiInputType.UNITY_UGUI_BTN: - return AxiInputUGUICenter.GetKey(axiInput.UguiBtn); - default: - return false; - } - } - } -} diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiInputSP/AxiInputEx.cs.meta b/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiInputSP/AxiInputEx.cs.meta deleted file mode 100644 index 0c1f91cf..00000000 --- a/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiInputSP/AxiInputEx.cs.meta +++ /dev/null @@ -1,2 +0,0 @@ -fileFormatVersion: 2 -guid: f19df5371f3222747868da94fc86702f \ No newline at end of file diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiInputSP/UGUI/AxiInputUGUICenter.cs b/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiInputSP/UGUI/AxiInputUGUICenter.cs deleted file mode 100644 index e4974dd7..00000000 --- a/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiInputSP/UGUI/AxiInputUGUICenter.cs +++ /dev/null @@ -1,78 +0,0 @@ -using System.Collections.Generic; - -namespace AxiInputSP.UGUI -{ - public static class AxiInputUGUICenter - { - static int handleSeed = 0; - static Dictionary<int, AxiInputUGUIHandle> dictHandle2AxiUgui = new Dictionary<int, AxiInputUGUIHandle>(); - static Dictionary<AxiInputUGuiBtnType, List<AxiInputUGUIHandle>> dictBtnType2BtnList = new Dictionary<AxiInputUGuiBtnType, List<AxiInputUGUIHandle>>(); - - public static int GetNextSeed() - { - return ++handleSeed; - } - public static void RegHandle(AxiInputUGUIHandle uiHandle) - { - dictHandle2AxiUgui[uiHandle.Handle] = uiHandle; - List<AxiInputUGUIHandle> list; - if (!dictBtnType2BtnList.TryGetValue(uiHandle.UguiBtnType, out list)) - list = dictBtnType2BtnList[uiHandle.UguiBtnType] = new List<AxiInputUGUIHandle>(); - - if (!list.Contains(uiHandle)) - list.Add(uiHandle); - } - public static void UnregHandle(AxiInputUGUIHandle uiHandle) - { - if (!dictHandle2AxiUgui.ContainsKey(uiHandle.Handle)) - return; - dictHandle2AxiUgui.Remove(uiHandle.Handle); - - List<AxiInputUGUIHandle> list; - if (dictBtnType2BtnList.TryGetValue(uiHandle.UguiBtnType, out list)) - { - if (list.Contains(uiHandle)) - list.Remove(uiHandle); - } - } - - public static bool GetKeyUp(AxiInputUGuiBtnType btntype) - { - List<AxiInputUGUIHandle> list; - if (!dictBtnType2BtnList.TryGetValue(btntype, out list)) - return false; - for (int i = 0; i < list.Count; i++) - { - if (list[i].GetKeyUp()) - return true; - } - return false; - } - - public static bool GetKeyDown(AxiInputUGuiBtnType btntype) - { - List<AxiInputUGUIHandle> list; - if (!dictBtnType2BtnList.TryGetValue(btntype, out list)) - return false; - for (int i = 0; i < list.Count; i++) - { - if (list[i].GetKeyDown()) - return true; - } - return false; - } - - public static bool GetKey(AxiInputUGuiBtnType btntype) - { - List<AxiInputUGUIHandle> list; - if (!dictBtnType2BtnList.TryGetValue(btntype, out list)) - return false; - for (int i = 0; i < list.Count; i++) - { - if (list[i].GetKey()) - return true; - } - return false; - } - } -} diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiInputSP/UGUI/AxiInputUGUICenter.cs.meta b/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiInputSP/UGUI/AxiInputUGUICenter.cs.meta deleted file mode 100644 index 3836a184..00000000 --- a/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiInputSP/UGUI/AxiInputUGUICenter.cs.meta +++ /dev/null @@ -1,2 +0,0 @@ -fileFormatVersion: 2 -guid: e41586af52faf33488c59e2608f9ff7b \ No newline at end of file diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiInputSP/UGUI/AxiInputUGUIHandle.cs b/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiInputSP/UGUI/AxiInputUGUIHandle.cs deleted file mode 100644 index d19baceb..00000000 --- a/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiInputSP/UGUI/AxiInputUGUIHandle.cs +++ /dev/null @@ -1,40 +0,0 @@ -using System; - -namespace AxiInputSP.UGUI -{ - public class AxiInputUGUIHandle - { - public int Handle { get; private set; } - public AxiInputUGuiBtnType UguiBtnType { get; private set; } - - public AxiInputUGUIHandle(AxiInputUGuiBtnType uguiBtnType) - { - Handle = AxiInputUGUICenter.GetNextSeed(); - this.UguiBtnType = uguiBtnType; - AxiInputUGUICenter.RegHandle(this); - } - public bool GetKey() - { - return GetKeyHandle != null ? GetKeyHandle.Invoke() : false; - } - public bool GetKeyUp() - { - return GetKeyUpHandle != null ? GetKeyUpHandle.Invoke() : false; - } - public bool GetKeyDown() - { - return GetKeyDownHandle != null ? GetKeyDownHandle.Invoke() : false; - } - public Func<bool> GetKeyHandle; - public Func<bool> GetKeyUpHandle; - public Func<bool> GetKeyDownHandle; - - public void Dispose() - { - GetKeyHandle = null; - GetKeyUpHandle = null; - GetKeyDownHandle = null; - AxiInputUGUICenter.UnregHandle(this); - } - } -} diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiInputSP/UGUI/AxiInputUGUIHandle.cs.meta b/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiInputSP/UGUI/AxiInputUGUIHandle.cs.meta deleted file mode 100644 index f11acfb4..00000000 --- a/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiInputSP/UGUI/AxiInputUGUIHandle.cs.meta +++ /dev/null @@ -1,2 +0,0 @@ -fileFormatVersion: 2 -guid: e4ca40659ca235846b10ee28305147dd \ No newline at end of file diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiInputSP/UGUI/AxiIptButton.cs b/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiInputSP/UGUI/AxiIptButton.cs index 4819ba50..380f42b4 100644 --- a/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiInputSP/UGUI/AxiIptButton.cs +++ b/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiInputSP/UGUI/AxiIptButton.cs @@ -13,59 +13,22 @@ namespace AxiInputSP.UGUI KeyHold } - AxiInputUGUIHandle[] handles; AxiButtonState m_state = AxiButtonState.None; /// <summary> /// 键值(支持组合键) /// </summary> [SerializeField] public AxiInputUGuiBtnType[] axiBtnTypeList; - protected override void Awake() - { - base.Awake(); - if (axiBtnTypeList != null) - { - handles = new AxiInputUGUIHandle[axiBtnTypeList.Length]; - for (int i = 0; i < axiBtnTypeList.Length; i++) - { - handles[i] = new AxiInputUGUIHandle(axiBtnTypeList[i]); - handles[i].GetKeyHandle = GetKey; - handles[i].GetKeyUpHandle = GetKeyUp; - handles[i].GetKeyDownHandle = GetKeyDown; - } - } - } - protected override void OnDestroy() - { - base.OnDestroy(); - if (axiBtnTypeList != null) - { - handles = new AxiInputUGUIHandle[axiBtnTypeList.Length]; - for (int i = 0; i < axiBtnTypeList.Length; i++) - { - handles[i].Dispose(); - handles[i] = null; - } - axiBtnTypeList = null; - handles = null; - } - - } - protected override void OnEnable() - { - base.OnEnable(); - } - - bool GetKey() + public bool GetKey() { return m_state >= AxiButtonState.KeyDown; } - bool GetKeyUp() + public bool GetKeyUp() { return m_state == AxiButtonState.KeyUp; } - bool GetKeyDown() + public bool GetKeyDown() { return m_state == AxiButtonState.KeyDown; } diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiInputSP/UGUI/AxiIptJoystick.cs b/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiInputSP/UGUI/AxiIptJoystick.cs deleted file mode 100644 index 933d9c63..00000000 --- a/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiInputSP/UGUI/AxiIptJoystick.cs +++ /dev/null @@ -1,121 +0,0 @@ -using System; -using System.Collections.Generic; -using UnityEngine; - -namespace AxiInputSP.UGUI -{ - public class AxiIptJoystick : IDisposable - { - enum AxiIptJoystickState - { - None, - KeyUp, - KeyDown, - KeyHold - } - static long LastCheckFrame = -1; - static Func<Vector2Int> RawJoy; - AxiInputUGUIHandle[] handles = new AxiInputUGUIHandle[4]; - static Dictionary<AxiInputUGuiBtnType, AxiIptJoystickState> mAxis2State = new Dictionary<AxiInputUGuiBtnType, AxiIptJoystickState>(); - - public AxiIptJoystick(Func<Vector2Int> getRawJoy) - { - RawJoy = getRawJoy; - handles[0] = new AxiInputUGUIHandle(AxiInputUGuiBtnType.UP); - handles[0].GetKeyHandle = (() => { return GetKey(AxiInputUGuiBtnType.UP); }); - handles[0].GetKeyUpHandle = (() => { return GetKeyUp(AxiInputUGuiBtnType.UP); }); - handles[0].GetKeyDownHandle = (() => { return GetKeyDown(AxiInputUGuiBtnType.UP); }); - mAxis2State[AxiInputUGuiBtnType.UP] = AxiIptJoystickState.None; - - handles[1] = new AxiInputUGUIHandle(AxiInputUGuiBtnType.DOWN); - handles[1].GetKeyHandle = (() => { return GetKey(AxiInputUGuiBtnType.DOWN); }); - handles[1].GetKeyUpHandle = (() => { return GetKeyUp(AxiInputUGuiBtnType.DOWN); }); - handles[1].GetKeyDownHandle = (() => { return GetKeyDown(AxiInputUGuiBtnType.DOWN); }); - mAxis2State[AxiInputUGuiBtnType.DOWN] = AxiIptJoystickState.None; - - handles[2] = new AxiInputUGUIHandle(AxiInputUGuiBtnType.LEFT); - handles[2].GetKeyHandle = (() => { return GetKey(AxiInputUGuiBtnType.LEFT); }); - handles[2].GetKeyUpHandle = (() => { return GetKeyUp(AxiInputUGuiBtnType.LEFT); }); - handles[2].GetKeyDownHandle = (() => { return GetKeyDown(AxiInputUGuiBtnType.LEFT); }); - mAxis2State[AxiInputUGuiBtnType.LEFT] = AxiIptJoystickState.None; - - handles[3] = new AxiInputUGUIHandle(AxiInputUGuiBtnType.RIGHT); - handles[3].GetKeyHandle = (() => { return GetKey(AxiInputUGuiBtnType.RIGHT); }); - handles[3].GetKeyUpHandle = (() => { return GetKeyUp(AxiInputUGuiBtnType.RIGHT); }); - handles[3].GetKeyDownHandle = (() => { return GetKeyDown(AxiInputUGuiBtnType.RIGHT); }); - mAxis2State[AxiInputUGuiBtnType.RIGHT] = AxiIptJoystickState.None; - } - - - public void Dispose() - { - for (int i = 0; i < handles.Length; i++) - { - handles[i].Dispose(); - handles[i] = null; - } - mAxis2State.Clear(); - } - - public static void UpdateState() - { - if (LastCheckFrame == Time.frameCount) - return; - LastCheckFrame = Time.frameCount; - RecheckSingleState(AxiInputUGuiBtnType.RIGHT); - RecheckSingleState(AxiInputUGuiBtnType.LEFT); - RecheckSingleState(AxiInputUGuiBtnType.UP); - RecheckSingleState(AxiInputUGuiBtnType.DOWN); - } - - static void RecheckSingleState(AxiInputUGuiBtnType axisType) - { - bool bKey = false; - - Vector2Int inputV2 = RawJoy.Invoke(); - - switch (axisType) - { - case AxiInputUGuiBtnType.RIGHT: bKey = inputV2.x > 0; break; - case AxiInputUGuiBtnType.LEFT: bKey = inputV2.x < 0; break; - case AxiInputUGuiBtnType.UP: bKey = inputV2.y > 0; break; - case AxiInputUGuiBtnType.DOWN: bKey = inputV2.y < 0; break; - } - //按下 - if (bKey) - { - //如果之前帧是KeyUp或None,则为KeyDown|KeyHold - if (mAxis2State[axisType] <= AxiIptJoystickState.KeyUp) - mAxis2State[axisType] = AxiIptJoystickState.KeyDown; - //如果之前帧是KeyDown,则为KeyHold - else if (mAxis2State[axisType] == AxiIptJoystickState.KeyDown) - mAxis2State[axisType] = AxiIptJoystickState.KeyHold; - } - //未按下 - else - { - //如果之前帧是KeyDown|KeyHold,则为KeyUp|None - if (mAxis2State[axisType] >= AxiIptJoystickState.KeyDown) - mAxis2State[axisType] = AxiIptJoystickState.KeyUp; - //如果之前帧是KeyUp,则为None - else if (mAxis2State[axisType] == AxiIptJoystickState.KeyUp) - mAxis2State[axisType] = AxiIptJoystickState.None; - } - } - bool GetKey(AxiInputUGuiBtnType key) - { - UpdateState(); - return mAxis2State[key] >= AxiIptJoystickState.KeyDown; - } - bool GetKeyUp(AxiInputUGuiBtnType key) - { - UpdateState(); - return mAxis2State[key] == AxiIptJoystickState.KeyUp; - } - bool GetKeyDown(AxiInputUGuiBtnType key) - { - UpdateState(); - return mAxis2State[key] == AxiIptJoystickState.KeyDown; - } - } -} diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiInputSP/UGUI/AxiIptJoystick.cs.meta b/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiInputSP/UGUI/AxiIptJoystick.cs.meta deleted file mode 100644 index 36cefbcc..00000000 --- a/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiInputSP/UGUI/AxiIptJoystick.cs.meta +++ /dev/null @@ -1,2 +0,0 @@ -fileFormatVersion: 2 -guid: 7194bc2da3bcaa747b87428fb3175009 \ No newline at end of file diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiInputSP/UGUI/AxiScreenGamepad.cs b/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiInputSP/UGUI/AxiScreenGamepad.cs new file mode 100644 index 00000000..e9ae262f --- /dev/null +++ b/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiInputSP/UGUI/AxiScreenGamepad.cs @@ -0,0 +1,62 @@ +using System.Collections.Generic; +using UnityEngine; + +namespace AxiInputSP.UGUI +{ + public class AxiScreenGamepad : MonoBehaviour + { + public delegate void OnAxiScreenGamepadActiveHandle(AxiScreenGamepad sender); + public delegate void OnAxiScreenGamepadDisactiveHandle(AxiScreenGamepad sender); + + public static event OnAxiScreenGamepadActiveHandle OnGamepadActive; + public static event OnAxiScreenGamepadActiveHandle OnGamepadDisactive; + + AxiIptButton[] m_buttons; + FloatingJoystick m_joystick; + HashSet<AxiInputUGuiBtnType> m_pressBtns = new HashSet<AxiInputUGuiBtnType>(); + Vector2 m_joyStickRaw; + + public bool GetKey(AxiInputUGuiBtnType btnType) + { + return m_pressBtns.Contains(btnType); + } + + public Vector2 GetJoystickValue() + { + return m_joyStickRaw; + } + + private void Update() + { + m_joyStickRaw = m_joystick.GetJoyRaw(); + m_pressBtns.Clear(); + foreach (var btn in m_buttons) + { + if (btn.GetKey()) + { + foreach (var btnType in btn.axiBtnTypeList) + m_pressBtns.Add(btnType); + } + } + } + + private void Awake() + { + m_buttons = GetComponentsInChildren<AxiIptButton>(true); + m_joystick = GetComponentInChildren<FloatingJoystick>(true); + } + + private void OnEnable() + { + m_joyStickRaw = Vector2.zero; + m_pressBtns.Clear(); + + OnGamepadActive?.Invoke(this); + } + + private void OnDisable() + { + OnGamepadDisactive?.Invoke(this); + } + } +} diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiInputSP/UGUI/AxiScreenGamepad.cs.meta b/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiInputSP/UGUI/AxiScreenGamepad.cs.meta new file mode 100644 index 00000000..ca5ae78e --- /dev/null +++ b/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiInputSP/UGUI/AxiScreenGamepad.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 1c6e60f499349d7479c565da795cde9b \ No newline at end of file diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/Emulator/EssgeeEmulator/UEssgeeInterface/UEGKeyboard.cs b/AxibugEmuOnline.Client/Assets/Script/AppMain/Emulator/EssgeeEmulator/UEssgeeInterface/UEGKeyboard.cs index a8102448..5b730853 100644 --- a/AxibugEmuOnline.Client/Assets/Script/AppMain/Emulator/EssgeeEmulator/UEssgeeInterface/UEGKeyboard.cs +++ b/AxibugEmuOnline.Client/Assets/Script/AppMain/Emulator/EssgeeEmulator/UEssgeeInterface/UEGKeyboard.cs @@ -1,9 +1,7 @@ using AxibugEmuOnline.Client; using AxibugEmuOnline.Client.ClientCore; using AxibugEmuOnline.Client.Event; -using AxibugEmuOnline.Client.Manager; using AxibugEmuOnline.Client.Settings; -using AxiInputSP.Setting; using AxiReplay; using System; using System.Collections.Generic; diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/Emulator/MameEmulator/UniInterface/UniKeyboard.cs b/AxibugEmuOnline.Client/Assets/Script/AppMain/Emulator/MameEmulator/UniInterface/UniKeyboard.cs index c16a915a..20521e68 100644 --- a/AxibugEmuOnline.Client/Assets/Script/AppMain/Emulator/MameEmulator/UniInterface/UniKeyboard.cs +++ b/AxibugEmuOnline.Client/Assets/Script/AppMain/Emulator/MameEmulator/UniInterface/UniKeyboard.cs @@ -2,7 +2,6 @@ using AxibugEmuOnline.Client.ClientCore; using AxibugEmuOnline.Client.Event; using AxibugEmuOnline.Client.Settings; -using AxiInputSP.Setting; using AxiReplay; using MAME.Core; using System; diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/AppInput.cs b/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/AppInput.cs deleted file mode 100644 index 1bde885a..00000000 --- a/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/AppInput.cs +++ /dev/null @@ -1,179 +0,0 @@ -using AxibugEmuOnline.Client.Common; -using AxiInputSP; -using AxiInputSP.Setting; -using System; -using System.Collections.Generic; -using System.Linq; - -namespace AxibugEmuOnline.Client.Manager -{ - public class AppInput - { - public XMBMultiKeysSetting xmb; - public GamingMultiKeysSetting gaming; - public UMAMEMultiKeysSetting mame; - public NESMultiKeysSetting nes; - public MasterSystemMultiKeysSetting sms; - public ColecoVisionMultiKeysSetting cv; - public GameBoyColorMultiKeysSetting gbc; - public GameBoyMultiKeysSetting gb; - public GameGearMultiKeysSetting gg; - public SC3000MultiKeysSetting sc3000; - public SG1000MultiKeysSetting sg1000; - public AppInput() - { - xmb = new XMBMultiKeysSetting(); - gaming = new GamingMultiKeysSetting(); - mame = new UMAMEMultiKeysSetting(); - nes = new NESMultiKeysSetting(); - sms = new MasterSystemMultiKeysSetting(); - cv = new ColecoVisionMultiKeysSetting(); - gbc = new GameBoyColorMultiKeysSetting(); - gb = new GameBoyMultiKeysSetting(); - gg = new GameGearMultiKeysSetting(); - sc3000 = new SC3000MultiKeysSetting(); - sg1000 = new SG1000MultiKeysSetting(); - LoadDefaultSetting(); - } - - public void LoadDefaultSetting() - { - xmb.LoadDefaultSetting(); - gaming.LoadDefaultSetting(); - mame.LoadDefaultSetting(); - nes.LoadDefaultSetting(); - sms.LoadDefaultSetting(); - cv.LoadDefaultSetting(); - gbc.LoadDefaultSetting(); - gb.LoadDefaultSetting(); - gg.LoadDefaultSetting(); - sc3000.LoadDefaultSetting(); - sg1000.LoadDefaultSetting(); - } - } - - public interface MultiKeysSetting - { - bool HadAnyKeyDown(int index); - void ClearAll(); - void LoadDefaultSetting(); - } - public interface SingleKeysSetting - { - void ClearAll(); - void SetKey(ulong Key, AxiInput input); - bool GetKey(ulong Key); - bool GetKeyDown(ulong Key); - bool GetKeyUp(ulong Key); - void ColletAllKey(); - bool HadAnyKeyDown(); - } - - public abstract class MultiKeysSettingBase : MultiKeysSetting - { - public SingleKeySettingBase[] controllers; - - public bool HadAnyKeyDown(int index) - { - if (index >= controllers.Length) - return false; - return controllers[index].HadAnyKeyDown(); - } - public void ClearAll() - { - for (int i = 0; i < controllers.Length; i++) - controllers[i].ClearAll(); - } - - public abstract void LoadDefaultSetting(); - } - - - public abstract class SingleKeySettingBase : SingleKeysSetting - { - protected Dictionary<ulong, List<AxiInput>> mDictSkey2AxiInput = new Dictionary<ulong, List<AxiInput>>(); - protected AxiInput[] AxiInputArr = null; - - public void SetKey(ulong Key, AxiInput input) - { - List<AxiInput> list; - if (!mDictSkey2AxiInput.TryGetValue(Key, out list)) - list = mDictSkey2AxiInput[Key] = ObjectPoolAuto.AcquireList<AxiInput>(); - list.Add(input); - } - - public bool GetKey(ulong Key) - { - List<AxiInput> list; - if (!mDictSkey2AxiInput.TryGetValue(Key, out list)) - return false; - for (int i = 0; i < list.Count; i++) - { - if (list[i].GetKey()) - return true; - } - return false; - } - public bool GetKeyUp(ulong Key) - { - List<AxiInput> list; - if (!mDictSkey2AxiInput.TryGetValue(Key, out list)) - return false; - for (int i = 0; i < list.Count; i++) - { - if (list[i].GetKeyUp()) - return true; - } - return false; - } - - public bool GetKeyDown(ulong Key) - { - List<AxiInput> list; - if (!mDictSkey2AxiInput.TryGetValue(Key, out list)) - return false; - for (int i = 0; i < list.Count; i++) - { - if (list[i].GetKeyDown()) - return true; - } - return false; - } - - public void ClearAll() - { - foreach (List<AxiInput> singlelist in mDictSkey2AxiInput.Values) - ObjectPoolAuto.Release(singlelist); - mDictSkey2AxiInput.Clear(); - AxiInputArr = null; - } - - public void ColletAllKey() - { - List<AxiInput> list = ObjectPoolAuto.AcquireList<AxiInput>(); - foreach (List<AxiInput> singlelist in mDictSkey2AxiInput.Values) - list.AddRange(singlelist); - AxiInputArr = list.ToArray(); - ObjectPoolAuto.Release(list); - } - - public bool HadAnyKeyDown() - { - if (AxiInputArr == null) - return false; - - for (int i = 0; i < AxiInputArr.Length; i++) - { - if (AxiInputArr[i].GetKey()) - return true; - } - return false; - } - - public T[] GetAllCmd<T>() - { - return mDictSkey2AxiInput.Keys.Select(k => (T)Enum.ToObject(typeof(T), k)).ToArray(); - } - } - -} \ No newline at end of file diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/AppInput.cs.meta b/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/AppInput.cs.meta deleted file mode 100644 index 496e3f97..00000000 --- a/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/AppInput.cs.meta +++ /dev/null @@ -1,2 +0,0 @@ -fileFormatVersion: 2 -guid: 5c0bc1cf4f411aa4da3ffa218db2c2aa \ No newline at end of file diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/AppSettings/KeyMapperSetting/EssgeeKeyBinding.cs b/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/AppSettings/KeyMapperSetting/EssgeeKeyBinding.cs index df56af03..8e859bd7 100644 --- a/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/AppSettings/KeyMapperSetting/EssgeeKeyBinding.cs +++ b/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/AppSettings/KeyMapperSetting/EssgeeKeyBinding.cs @@ -20,7 +20,7 @@ namespace AxibugEmuOnline.Client.Settings OPTION_2 = 1 << 9, } - public abstract class EssgeeKeyBinding : EmuCoreControllerKeyBinding<EssgeeSingleKey> + public abstract class EssgeeKeyBinding : EmuCoreBinder<EssgeeSingleKey> { public override void Bind(Keyboard_D device, ControllerBinder controller) { @@ -129,6 +129,24 @@ namespace AxibugEmuOnline.Client.Settings controller.SetBinding(EssgeeSingleKey.LEFT, device.LeftStick.Left, 1); controller.SetBinding(EssgeeSingleKey.RIGHT, device.LeftStick.Right, 1); } + public override void Bind(ScreenGamepad_D device, ControllerBinder controller) + { + controller.SetBinding(EssgeeSingleKey.OPTION_1, device.OPTION_1, 0); + controller.SetBinding(EssgeeSingleKey.OPTION_2, device.OPTION_2, 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.BTN_A, 0); + controller.SetBinding(EssgeeSingleKey.BTN_2, device.BTN_B, 0); + controller.SetBinding(EssgeeSingleKey.BTN_3, device.BTN_C, 0); + controller.SetBinding(EssgeeSingleKey.BTN_4, device.BTN_D, 0); + + controller.SetBinding(EssgeeSingleKey.UP, device.JOYSTICK.Up, 1); + controller.SetBinding(EssgeeSingleKey.DOWN, device.JOYSTICK.Down, 1); + controller.SetBinding(EssgeeSingleKey.LEFT, device.JOYSTICK.Left, 1); + controller.SetBinding(EssgeeSingleKey.RIGHT, device.JOYSTICK.Right, 1); + } } public class MasterSystemKeyBinding : EssgeeKeyBinding diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/AppSettings/KeyMapperSetting/IDeviceBinder.cs b/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/AppSettings/KeyMapperSetting/IDeviceBinder.cs deleted file mode 100644 index 3001ea39..00000000 --- a/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/AppSettings/KeyMapperSetting/IDeviceBinder.cs +++ /dev/null @@ -1,17 +0,0 @@ -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); - } -} \ No newline at end of file diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/AppSettings/KeyMapperSetting/KeyMapperSetting.cs b/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/AppSettings/KeyMapperSetting/KeyMapperSetting.cs index 81a80857..1447b390 100644 --- a/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/AppSettings/KeyMapperSetting/KeyMapperSetting.cs +++ b/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/AppSettings/KeyMapperSetting/KeyMapperSetting.cs @@ -1,10 +1,6 @@ -using AxibugEmuOnline.Client.ClientCore; -using AxibugEmuOnline.Client.InputDevices; -using AxibugProtobuf; +using AxibugProtobuf; using System; using System.Collections.Generic; -using System.Linq; -using UnityEngine; namespace AxibugEmuOnline.Client.Settings { @@ -13,321 +9,32 @@ namespace AxibugEmuOnline.Client.Settings /// </summary> public class KeyMapperSetting { - Dictionary<RomPlatformType, EmuCoreControllerKeyBinding> m_binders = new Dictionary<RomPlatformType, EmuCoreControllerKeyBinding>(); - Dictionary<Type, EmuCoreControllerKeyBinding> m_bindersByType = new Dictionary<Type, EmuCoreControllerKeyBinding>(); + Dictionary<RomPlatformType, InternalEmuCoreBinder> m_binders = new Dictionary<RomPlatformType, InternalEmuCoreBinder>(); + Dictionary<Type, InternalEmuCoreBinder> m_bindersByType = new Dictionary<Type, InternalEmuCoreBinder>(); public KeyMapperSetting() { - var baseType = typeof(EmuCoreControllerKeyBinding); + var baseType = typeof(InternalEmuCoreBinder); foreach (var t in baseType.Assembly.ExportedTypes) { if (t.IsAbstract) continue; if (!baseType.IsAssignableFrom(t)) continue; - var binderIns = Activator.CreateInstance(t) as EmuCoreControllerKeyBinding; + var binderIns = Activator.CreateInstance(t) as InternalEmuCoreBinder; m_binders.Add(binderIns.Platform, binderIns); m_bindersByType.Add(binderIns.GetType(), binderIns); } } - public T GetBinder<T>() where T : EmuCoreControllerKeyBinding + public T GetBinder<T>() where T : InternalEmuCoreBinder { m_bindersByType.TryGetValue(typeof(T), out var binder); return binder as T; } - public T GetBinder<T>(RomPlatformType romType) where T : EmuCoreControllerKeyBinding + public T GetBinder<T>(RomPlatformType romType) where T : InternalEmuCoreBinder { m_binders.TryGetValue(romType, out var binder); return binder as T; } } - - /// <summary> - /// 此类为内部继承, 请勿继承此类 - /// </summary> - public abstract class EmuCoreControllerKeyBinding - { - /// <summary> 所属核心 </summary> - public abstract RomPlatformType Platform { get; } - /// <summary> 控制器数量 </summary> - public abstract int ControllerCount { get; } - } - - /// <summary> - /// 模拟器核心控制器键位绑定器 - /// </summary> - /// <typeparam name="T"></typeparam> - 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<ControllerBinder> m_bindingPages = new List<ControllerBinder>(); - - public EmuCoreControllerKeyBinding() - { - var types = GetType().GetInterfaces(); - - for (int i = 0; i < ControllerCount; i++) - { - m_bindingPages.Add(new ControllerBinder(i, this)); - } - - foreach (var device in App.input.GetDevices()) - { - foreach (var binding in m_bindingPages) - { - binding.RegistInputDevice(device); - } - } - - App.input.OnDeviceLost += InputDevicesMgr_OnDeviceLost; - App.input.OnDeviceConnected += InputDevicesMgr_OnDeviceConnected; - } - - private void InputDevicesMgr_OnDeviceConnected(InputDevice_D connectDevice) - { - foreach (var binding in m_bindingPages) - { - binding.RegistInputDevice(connectDevice); - } - } - - private void InputDevicesMgr_OnDeviceLost(InputDevice_D lostDevice) - { - foreach (var binding in m_bindingPages) - { - binding.UnregistInputDevice(lostDevice); - } - } - - internal void RaiseDeviceRegist(InputDevice_D device, ControllerBinder binding) - { - if (device is Keyboard_D keyboard) Bind(keyboard, binding); - else if (device is GamePad_D gamePad) Bind(gamePad, binding); - else if (device is DualShockController_D dsC) Bind(dsC, binding); - else if (device is XboxController_D xbC) Bind(xbC, binding); - else if (device is PSVController_D psvC) Bind(psvC, binding); - else throw new NotImplementedException($"{device.GetType()}"); - } - - public bool Start(T emuControl, int controllerIndex) - { - var binding = m_bindingPages[controllerIndex]; - foreach (var key in binding.GetBinding(emuControl)) - { - if (key.Start) return true; - } - - return false; - } - - public bool Release(T emuControl, int controllerIndex) - { - var binding = m_bindingPages[controllerIndex]; - foreach (var key in binding.GetBinding(emuControl)) - { - if (key.Release) return true; - } - - return false; - } - - /// <summary> - /// 获取指定控件是否处于按下状态 - /// <para>如果绑定了多个物理按键,则只有这多个物理按键全部不处于按下状态时,才会返回false</para> - /// </summary> - /// <param name="emuControl"></param> - /// <param name="controllerIndex"></param> - /// <returns></returns> - public bool GetKey(T emuControl, int controllerIndex) - { - var binding = m_bindingPages[controllerIndex]; - foreach (var key in binding.GetBinding(emuControl)) - { - if (key.Performing) return true; - } - - return false; - } - - /// <summary> - /// 获取调用帧是否有任意按键触发了按下操作 - /// </summary> - /// <param name="controllerIndex"></param> - /// <returns></returns> - public bool AnyKeyDown(int controllerIndex) - { - var binding = m_bindingPages[controllerIndex]; - return binding.AnyKeyDown(); - } - - /// <summary> - /// 获取指定控件的向量值 - /// <para>通常用于摇杆类型的控件</para> - /// <para>如果同时绑定了多个物理输入设备,只会返回其中一个物理设备的向量值</para> - /// </summary> - /// <param name="emuControl">模拟器平台的具体键枚举</param> - /// <param name="controllerIndex">模拟器平台的控制器序号</param> - /// <returns></returns> - public Vector2 GetVector2(T emuControl, int controllerIndex) - { - var binding = m_bindingPages[controllerIndex]; - foreach (var control in binding.GetBinding(emuControl)) - { - if (!control.Performing) continue; - - return control.GetVector2(); - } - - return default(Vector2); - } - - /// <summary> - /// 获取指定控件的浮点值,取值范围为[0f,1f] - /// <para>通常用于线性类按键,例如PS手柄的扳机键</para> - /// <para>普通的按键也能读取这个值,但返回值只会有0f和1f两种值</para> - /// <para>如果同时绑定了多个物理控件,则会从所有处于按下状态的物理控件中取平均值</para> - /// </summary> - /// <param name="emuControl">模拟器平台的具体键枚举</param> - /// <param name="controllerIndex">模拟器平台的控制器序号</param> - /// <returns></returns> - public float GetFloat(T emuControl, int controllerIndex) - { - var totalFloat = 0f; - var totalControl = 0; - - var binding = m_bindingPages[controllerIndex]; - foreach (var key in binding.GetBinding(emuControl)) - { - if (!key.Performing) continue; - - totalControl++; - totalFloat += key.GetFlaot(); - } - - if (totalControl == 0) return default(float); - else return totalFloat / totalControl; - } - - public class MapSetting : Dictionary<T, List<InputControl_C>> { } - - 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>(); - - public int ControllerIndex { get; } - public EmuCoreControllerKeyBinding<T> Host { get; } - - internal ControllerBinder(int controllerIndex, EmuCoreControllerKeyBinding<T> host) - { - ControllerIndex = controllerIndex; - Host = host; - } - - internal bool IsRegisted<DEVICE>() where DEVICE : InputDevice_D - { - var type = typeof(T); - return IsRegisted(type); - } - internal bool IsRegisted(Type deviceType) - { - return m_registedDevices.ContainsKey(deviceType); - } - - internal void RegistInputDevice(InputDevice_D device) - { - var type = device.GetType(); - if (IsRegisted(type)) return; - - m_registedDevices.Add(type, device); - m_mapSetting[device] = new MapSetting(); - Host.RaiseDeviceRegist(device, this); - } - - internal void UnregistInputDevice(InputDevice_D device) - { - var type = device.GetType(); - if (!IsRegisted(type)) return; - - m_registedDevices.Remove(type); - m_mapSetting.Remove(device); - } - - public void SetBinding(T emuBtn, InputControl_C key, int settingSlot) - { - var device = key.Device; - m_registedDevices.TryGetValue(device.GetType(), out var inputDevice); - - Debug.Assert(inputDevice == device); - - var setting = m_mapSetting[inputDevice]; - if (!setting.TryGetValue(emuBtn, out var settingList)) - { - settingList = new List<InputControl_C>(); - setting[emuBtn] = settingList; - } - - int needFixCount = settingSlot - settingList.Count + 1; - if (needFixCount > 0) for (int i = 0; i < needFixCount; i++) settingList.Add(null); - - settingList[settingSlot] = key; - } - - public InputControl_C GetBinding(T emuBtn, InputDevice_D device, int settingSlot) - { - m_mapSetting.TryGetValue(device, out var mapSetting); - if (mapSetting == null) return null; - - mapSetting.TryGetValue(emuBtn, out var settingList); - if (settingList == null || settingSlot >= settingList.Count) return null; - - return settingList[settingSlot]; - } - - private List<InputControl_C> m_caches = new List<InputControl_C>(); - public IEnumerable<InputControl_C> GetBinding(T emuBtn) - { - m_caches.Clear(); - - foreach (var mapSettings in m_mapSetting.Values) - { - mapSettings.TryGetValue(emuBtn, out var bindControls); - if (bindControls != null) - { - m_caches.AddRange(bindControls); - } - } - - return m_caches; - } - - public bool AnyKeyDown() - { - foreach (var mapSettings in m_mapSetting.Values) - { - foreach (var keys in mapSettings.Values) - { - foreach (var key in keys) - { - if (key.Start) return true; - } - } - } - - return false; - } - } - - 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); - } } \ No newline at end of file diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/AppSettings/KeyMapperSetting/MAMEKeyBinding.cs b/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/AppSettings/KeyMapperSetting/MAMEKeyBinding.cs index 39a2fe40..7c6d6175 100644 --- a/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/AppSettings/KeyMapperSetting/MAMEKeyBinding.cs +++ b/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/AppSettings/KeyMapperSetting/MAMEKeyBinding.cs @@ -20,7 +20,7 @@ namespace AxibugEmuOnline.Client.Settings BTN_F } - public abstract class MAMEKeyBinding : EmuCoreControllerKeyBinding<UMAMEKSingleKey> + public abstract class MAMEKeyBinding : EmuCoreBinder<UMAMEKSingleKey> { public override int ControllerCount => 4; @@ -138,6 +138,26 @@ namespace AxibugEmuOnline.Client.Settings 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 diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiInputSP.Settings.meta b/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/AppSettings/KeyMapperSetting/Model.meta similarity index 77% rename from AxibugEmuOnline.Client/Assets/Script/AppMain/AxiInputSP.Settings.meta rename to AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/AppSettings/KeyMapperSetting/Model.meta index a924eaef..b7a6eef8 100644 --- a/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiInputSP.Settings.meta +++ b/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/AppSettings/KeyMapperSetting/Model.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 91746af636f351140a4796dc4e98be6d +guid: d3e856501fe4be94db55b29fc9e4dfdb folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/AppSettings/KeyMapperSetting/Model/EmuCoreBinder.cs b/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/AppSettings/KeyMapperSetting/Model/EmuCoreBinder.cs new file mode 100644 index 00000000..4fc1538e --- /dev/null +++ b/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/AppSettings/KeyMapperSetting/Model/EmuCoreBinder.cs @@ -0,0 +1,287 @@ +using AxibugEmuOnline.Client.ClientCore; +using AxibugEmuOnline.Client.InputDevices; +using AxibugEmuOnline.Client.Settings; +using System; +using System.Collections.Generic; +using UnityEngine; + +/// <summary> +/// 模拟器核心控制器键位绑定器 +/// </summary> +/// <typeparam name="T"></typeparam> +public abstract class EmuCoreBinder<T> : InternalEmuCoreBinder, + IDeviceBinder<T, Keyboard_D>, + IDeviceBinder<T, GamePad_D>, + IDeviceBinder<T, DualShockController_D>, + IDeviceBinder<T, XboxController_D>, + IDeviceBinder<T, PSVController_D>, + IDeviceBinder<T, ScreenGamepad_D> + where T : Enum +{ + //每一个实例代表一个对应模拟器平台的控制器索引 + List<ControllerBinder> m_bindingPages = new List<ControllerBinder>(); + + public EmuCoreBinder() + { + var types = GetType().GetInterfaces(); + + for (int i = 0; i < ControllerCount; i++) + { + m_bindingPages.Add(new ControllerBinder(i, this)); + } + + foreach (var device in App.input.GetDevices()) + { + foreach (var binding in m_bindingPages) + { + binding.RegistInputDevice(device); + } + } + + App.input.OnDeviceLost += InputDevicesMgr_OnDeviceLost; + App.input.OnDeviceConnected += InputDevicesMgr_OnDeviceConnected; + } + + private void InputDevicesMgr_OnDeviceConnected(InputDevice_D connectDevice) + { + foreach (var binding in m_bindingPages) + { + binding.RegistInputDevice(connectDevice); + } + } + + private void InputDevicesMgr_OnDeviceLost(InputDevice_D lostDevice) + { + foreach (var binding in m_bindingPages) + { + binding.UnregistInputDevice(lostDevice); + } + } + + internal void RaiseDeviceRegist(InputDevice_D device, ControllerBinder binding) + { + if (device is Keyboard_D keyboard) Bind(keyboard, binding); + else if (device is GamePad_D gamePad) Bind(gamePad, binding); + else if (device is DualShockController_D dsC) Bind(dsC, binding); + else if (device is XboxController_D xbC) Bind(xbC, binding); + else if (device is PSVController_D psvC) Bind(psvC, binding); + else if (device is ScreenGamepad_D screenGamepad) Bind(screenGamepad, binding); + else throw new NotImplementedException($"{device.GetType()}"); + } + + public bool Start(T emuControl, int controllerIndex) + { + var binding = m_bindingPages[controllerIndex]; + foreach (var key in binding.GetBinding(emuControl)) + { + if (key.Start) return true; + } + + return false; + } + + public bool Release(T emuControl, int controllerIndex) + { + var binding = m_bindingPages[controllerIndex]; + foreach (var key in binding.GetBinding(emuControl)) + { + if (key.Release) return true; + } + + return false; + } + + /// <summary> + /// 获取指定控件是否处于按下状态 + /// <para>如果绑定了多个物理按键,则只有这多个物理按键全部不处于按下状态时,才会返回false</para> + /// </summary> + /// <param name="emuControl"></param> + /// <param name="controllerIndex"></param> + /// <returns></returns> + public bool GetKey(T emuControl, int controllerIndex) + { + var binding = m_bindingPages[controllerIndex]; + foreach (var key in binding.GetBinding(emuControl)) + { + if (key.Performing) return true; + } + + return false; + } + + /// <summary> + /// 获取调用帧是否有任意按键触发了按下操作 + /// </summary> + /// <param name="controllerIndex"></param> + /// <returns></returns> + public bool AnyKeyDown(int controllerIndex) + { + var binding = m_bindingPages[controllerIndex]; + return binding.AnyKeyDown(); + } + + /// <summary> + /// 获取指定控件的向量值 + /// <para>通常用于摇杆类型的控件</para> + /// <para>如果同时绑定了多个物理输入设备,只会返回其中一个物理设备的向量值</para> + /// </summary> + /// <param name="emuControl">模拟器平台的具体键枚举</param> + /// <param name="controllerIndex">模拟器平台的控制器序号</param> + /// <returns></returns> + public Vector2 GetVector2(T emuControl, int controllerIndex) + { + var binding = m_bindingPages[controllerIndex]; + foreach (var control in binding.GetBinding(emuControl)) + { + if (!control.Performing) continue; + + return control.GetVector2(); + } + + return default(Vector2); + } + + /// <summary> + /// 获取指定控件的浮点值,取值范围为[0f,1f] + /// <para>通常用于线性类按键,例如PS手柄的扳机键</para> + /// <para>普通的按键也能读取这个值,但返回值只会有0f和1f两种值</para> + /// <para>如果同时绑定了多个物理控件,则会从所有处于按下状态的物理控件中取平均值</para> + /// </summary> + /// <param name="emuControl">模拟器平台的具体键枚举</param> + /// <param name="controllerIndex">模拟器平台的控制器序号</param> + /// <returns></returns> + public float GetFloat(T emuControl, int controllerIndex) + { + var totalFloat = 0f; + var totalControl = 0; + + var binding = m_bindingPages[controllerIndex]; + foreach (var key in binding.GetBinding(emuControl)) + { + if (!key.Performing) continue; + + totalControl++; + totalFloat += key.GetFlaot(); + } + + if (totalControl == 0) return default(float); + else return totalFloat / totalControl; + } + + public class MapSetting : Dictionary<T, List<InputControl_C>> { } + + 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>(); + + public int ControllerIndex { get; } + public EmuCoreBinder<T> Host { get; } + + internal ControllerBinder(int controllerIndex, EmuCoreBinder<T> host) + { + ControllerIndex = controllerIndex; + Host = host; + } + + internal bool IsRegisted<DEVICE>() where DEVICE : InputDevice_D + { + var type = typeof(T); + return IsRegisted(type); + } + internal bool IsRegisted(Type deviceType) + { + return m_registedDevices.ContainsKey(deviceType); + } + + internal void RegistInputDevice(InputDevice_D device) + { + var type = device.GetType(); + if (IsRegisted(type)) return; + + m_registedDevices.Add(type, device); + m_mapSetting[device] = new MapSetting(); + Host.RaiseDeviceRegist(device, this); + } + + internal void UnregistInputDevice(InputDevice_D device) + { + var type = device.GetType(); + if (!IsRegisted(type)) return; + + m_registedDevices.Remove(type); + m_mapSetting.Remove(device); + } + + public void SetBinding(T emuBtn, InputControl_C key, int settingSlot) + { + var device = key.Device; + m_registedDevices.TryGetValue(device.GetType(), out var inputDevice); + + Debug.Assert(inputDevice == device); + + var setting = m_mapSetting[inputDevice]; + if (!setting.TryGetValue(emuBtn, out var settingList)) + { + settingList = new List<InputControl_C>(); + setting[emuBtn] = settingList; + } + + int needFixCount = settingSlot - settingList.Count + 1; + if (needFixCount > 0) for (int i = 0; i < needFixCount; i++) settingList.Add(null); + + settingList[settingSlot] = key; + } + + public InputControl_C GetBinding(T emuBtn, InputDevice_D device, int settingSlot) + { + m_mapSetting.TryGetValue(device, out var mapSetting); + if (mapSetting == null) return null; + + mapSetting.TryGetValue(emuBtn, out var settingList); + if (settingList == null || settingSlot >= settingList.Count) return null; + + return settingList[settingSlot]; + } + + private List<InputControl_C> m_caches = new List<InputControl_C>(); + public IEnumerable<InputControl_C> GetBinding(T emuBtn) + { + m_caches.Clear(); + + foreach (var mapSettings in m_mapSetting.Values) + { + mapSettings.TryGetValue(emuBtn, out var bindControls); + if (bindControls != null) + { + m_caches.AddRange(bindControls); + } + } + + return m_caches; + } + + public bool AnyKeyDown() + { + foreach (var mapSettings in m_mapSetting.Values) + { + foreach (var keys in mapSettings.Values) + { + foreach (var key in keys) + { + if (key.Start) return true; + } + } + } + + return false; + } + } + + 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); + public abstract void Bind(ScreenGamepad_D device, ControllerBinder controller); +} \ No newline at end of file diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/AppSettings/KeyMapperSetting/Model/EmuCoreBinder.cs.meta b/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/AppSettings/KeyMapperSetting/Model/EmuCoreBinder.cs.meta new file mode 100644 index 00000000..704c0a32 --- /dev/null +++ b/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/AppSettings/KeyMapperSetting/Model/EmuCoreBinder.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: c593acacf7f38e244aa08283266f1a2e \ No newline at end of file diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/AppSettings/KeyMapperSetting/Model/IDeviceBinder.cs b/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/AppSettings/KeyMapperSetting/Model/IDeviceBinder.cs new file mode 100644 index 00000000..424304d4 --- /dev/null +++ b/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/AppSettings/KeyMapperSetting/Model/IDeviceBinder.cs @@ -0,0 +1,17 @@ +using AxibugEmuOnline.Client.InputDevices; +using System; + +namespace AxibugEmuOnline.Client.Settings +{ + /// <summary> + /// 在所有<see cref="EmuCoreBinder{T}"/>的派生类中实现此接口以支持一种设备的绑定 + /// <para>一种<see cref="EmuCoreBinder{T}"/> + /// 一个<see cref="EmuCoreBinder{T}.ControllerBinder"/>可以与多种设备建立绑定,但设备类型不可重复</para> + /// </summary> + public interface IDeviceBinder<ENUM, DEVICE> + where ENUM : Enum + where DEVICE : InputDevice_D + { + void Bind(DEVICE device, EmuCoreBinder<ENUM>.ControllerBinder controller); + } +} \ No newline at end of file diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/AppSettings/KeyMapperSetting/IDeviceBinder.cs.meta b/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/AppSettings/KeyMapperSetting/Model/IDeviceBinder.cs.meta similarity index 100% rename from AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/AppSettings/KeyMapperSetting/IDeviceBinder.cs.meta rename to AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/AppSettings/KeyMapperSetting/Model/IDeviceBinder.cs.meta diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/AppSettings/KeyMapperSetting/Model/InternalEmuCoreBinder.cs b/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/AppSettings/KeyMapperSetting/Model/InternalEmuCoreBinder.cs new file mode 100644 index 00000000..50d77b3e --- /dev/null +++ b/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/AppSettings/KeyMapperSetting/Model/InternalEmuCoreBinder.cs @@ -0,0 +1,12 @@ +using AxibugProtobuf; + +/// <summary> +/// 此类为内部继承, 请勿继承此类 +/// </summary> +public abstract class InternalEmuCoreBinder +{ + /// <summary> 所属核心 </summary> + public abstract RomPlatformType Platform { get; } + /// <summary> 控制器数量 </summary> + public abstract int ControllerCount { get; } +} \ No newline at end of file diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/AppSettings/KeyMapperSetting/Model/InternalEmuCoreBinder.cs.meta b/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/AppSettings/KeyMapperSetting/Model/InternalEmuCoreBinder.cs.meta new file mode 100644 index 00000000..22fa2e57 --- /dev/null +++ b/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/AppSettings/KeyMapperSetting/Model/InternalEmuCoreBinder.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 70fbaad26932617478d787c65e124da5 \ No newline at end of file diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/AppSettings/KeyMapperSetting/NesKeyBinding.cs b/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/AppSettings/KeyMapperSetting/NesKeyBinding.cs index 39ddbade..8a743318 100644 --- a/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/AppSettings/KeyMapperSetting/NesKeyBinding.cs +++ b/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/AppSettings/KeyMapperSetting/NesKeyBinding.cs @@ -4,7 +4,7 @@ using VirtualNes.Core; namespace AxibugEmuOnline.Client.Settings { - public class NesKeyBinding : EmuCoreControllerKeyBinding<EnumButtonType> + public class NesKeyBinding : EmuCoreBinder<EnumButtonType> { public override RomPlatformType Platform => RomPlatformType.Nes; public override int ControllerCount => 4; @@ -82,10 +82,10 @@ namespace AxibugEmuOnline.Client.Settings 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); + 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(XboxController_D device, ControllerBinder controller) { @@ -99,10 +99,27 @@ namespace AxibugEmuOnline.Client.Settings 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); + 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(ScreenGamepad_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.BTN_B, 0); + controller.SetBinding(EnumButtonType.B, device.BTN_A, 0); + controller.SetBinding(EnumButtonType.SELECT, device.OPTION_1, 0); + controller.SetBinding(EnumButtonType.START, device.OPTION_2, 0); + controller.SetBinding(EnumButtonType.MIC, device.OPTION_3, 0); + + controller.SetBinding(EnumButtonType.LEFT, device.JOYSTICK.Left, 1); + controller.SetBinding(EnumButtonType.RIGHT, device.JOYSTICK.Right, 1); + controller.SetBinding(EnumButtonType.UP, device.JOYSTICK.Up, 1); + controller.SetBinding(EnumButtonType.DOWN, device.JOYSTICK.Down, 1); } } } \ No newline at end of file diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/AppSettings/KeyMapperSetting/XMBKeyBinding.cs b/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/AppSettings/KeyMapperSetting/XMBKeyBinding.cs index f749e14b..a7bce802 100644 --- a/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/AppSettings/KeyMapperSetting/XMBKeyBinding.cs +++ b/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/AppSettings/KeyMapperSetting/XMBKeyBinding.cs @@ -1,10 +1,9 @@ using AxibugEmuOnline.Client.InputDevices; -using AxibugEmuOnline.Client.Settings; using AxibugProtobuf; namespace AxibugEmuOnline.Client { - public class XMBKeyBinding : EmuCoreControllerKeyBinding<EnumCommand> + public class XMBKeyBinding : EmuCoreBinder<EnumCommand> { public override RomPlatformType Platform => RomPlatformType.Invalid; public override int ControllerCount => 2; @@ -98,5 +97,20 @@ namespace AxibugEmuOnline.Client controller.SetBinding(EnumCommand.SelectItemRight, device.LeftStick.Right, 1); controller.SetBinding(EnumCommand.SelectItemUp, device.LeftStick.Up, 1); } + public override void Bind(ScreenGamepad_D device, ControllerBinder controller) + { + controller.SetBinding(EnumCommand.Back, device.BTN_A, 0); + controller.SetBinding(EnumCommand.Enter, device.BTN_B, 0); + controller.SetBinding(EnumCommand.OptionMenu, device.OPTION_1, 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.JOYSTICK.Down, 1); + controller.SetBinding(EnumCommand.SelectItemLeft, device.JOYSTICK.Left, 1); + controller.SetBinding(EnumCommand.SelectItemRight, device.JOYSTICK.Right, 1); + controller.SetBinding(EnumCommand.SelectItemUp, device.JOYSTICK.Up, 1); + } } } \ No newline at end of file diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/InputDevicesManager/Devices/InputControls/InputControl_C.cs b/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/InputDevicesManager/Devices/InputControls/InputControl_C.cs index ad1a5059..772d697e 100644 --- a/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/InputDevicesManager/Devices/InputControls/InputControl_C.cs +++ b/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/InputDevicesManager/Devices/InputControls/InputControl_C.cs @@ -68,7 +68,7 @@ namespace AxibugEmuOnline.Client.InputDevices { if (!typeof(InputControl_C).IsAssignableFrom(field.FieldType)) continue; - var controlIns = Activator.CreateInstance(field.FieldType, this, field.Name) as InputControl_C; + var controlIns = Activator.CreateInstance(field.FieldType, Device, field.Name) as InputControl_C; controlIns.Parent = this; field.SetValue(this, controlIns); diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/InputDevicesManager/Devices/InputControls/Stick_C.cs b/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/InputDevicesManager/Devices/InputControls/Stick_C.cs index 2243ef8a..023b1146 100644 --- a/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/InputDevicesManager/Devices/InputControls/Stick_C.cs +++ b/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/InputDevicesManager/Devices/InputControls/Stick_C.cs @@ -12,9 +12,7 @@ namespace AxibugEmuOnline.Client.InputDevices public VirtualButton Left; public VirtualButton Right; - public Stick_C(InputDevice_D device, string controlName) : base(device, controlName) - { - } + public Stick_C(InputDevice_D device, string controlName) : base(device, controlName) { } protected override void OnUpdate() { diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/InputDevicesManager/Devices/ScreenGamepad_D.cs b/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/InputDevicesManager/Devices/ScreenGamepad_D.cs new file mode 100644 index 00000000..7dd41c05 --- /dev/null +++ b/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/InputDevicesManager/Devices/ScreenGamepad_D.cs @@ -0,0 +1,74 @@ +using AxiInputSP; +using AxiInputSP.UGUI; +using System.Collections.Generic; +using UnityEngine; + +namespace AxibugEmuOnline.Client.InputDevices +{ + public class ScreenGamepad_D : InputDevice_D + { + public Button_C UP; + public Button_C DOWN; + public Button_C LEFT; + public Button_C RIGHT; + public Button_C BTN_A; + public Button_C BTN_B; + public Button_C BTN_C; + public Button_C BTN_D; + public Button_C BTN_E; + public Button_C BTN_F; + public Button_C OPTION_1; + public Button_C OPTION_2; + public Button_C OPTION_3; + public Button_C OPTION_4; + public Button_C HOME; + public Stick_C JOYSTICK; + + AxiScreenGamepad m_linkUnityImpl; + Dictionary<Button_C, AxiInputUGuiBtnType> m_buttonTypes = new Dictionary<Button_C, AxiInputUGuiBtnType>(); + + public ScreenGamepad_D(AxiScreenGamepad linkMono, InputResolver resolver) : base(resolver) + { + m_linkUnityImpl = linkMono; + m_buttonTypes[UP] = AxiInputUGuiBtnType.UP; + m_buttonTypes[DOWN] = AxiInputUGuiBtnType.DOWN; + m_buttonTypes[LEFT] = AxiInputUGuiBtnType.LEFT; + m_buttonTypes[RIGHT] = AxiInputUGuiBtnType.RIGHT; + m_buttonTypes[BTN_A] = AxiInputUGuiBtnType.BTN_A; + m_buttonTypes[BTN_B] = AxiInputUGuiBtnType.BTN_B; + m_buttonTypes[BTN_C] = AxiInputUGuiBtnType.BTN_C; + m_buttonTypes[BTN_D] = AxiInputUGuiBtnType.BTN_D; + m_buttonTypes[BTN_E] = AxiInputUGuiBtnType.BTN_E; + m_buttonTypes[BTN_F] = AxiInputUGuiBtnType.BTN_F; + m_buttonTypes[OPTION_1] = AxiInputUGuiBtnType.OPTION_1; + m_buttonTypes[OPTION_2] = AxiInputUGuiBtnType.OPTION_2; + m_buttonTypes[OPTION_3] = AxiInputUGuiBtnType.OPTION_3; + m_buttonTypes[OPTION_4] = AxiInputUGuiBtnType.OPTION_4; + m_buttonTypes[HOME] = AxiInputUGuiBtnType.HOME; + } + + public bool CheckPerforming<CONTROLLER>(CONTROLLER control) where CONTROLLER : InputControl_C + { + if (control is Button_C) + { + var type = m_buttonTypes[control as Button_C]; + return m_linkUnityImpl.GetKey(type); + } + else if (control is Stick_C) + { + var vec2 = GetVector2(control); + return vec2.x != 0 || vec2.y != 0; + } + else return false; + } + + public Vector2 GetVector2<CONTROLLER>(CONTROLLER control) where CONTROLLER : InputControl_C + { + if (control is Stick_C) + { + return m_linkUnityImpl.GetJoystickValue(); + } + else return default; + } + } +} \ No newline at end of file diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/InputDevicesManager/Devices/ScreenGamepad_D.cs.meta b/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/InputDevicesManager/Devices/ScreenGamepad_D.cs.meta new file mode 100644 index 00000000..abca699f --- /dev/null +++ b/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/InputDevicesManager/Devices/ScreenGamepad_D.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: dbfeb8011d9b4a8429a35bc162c72c57 \ No newline at end of file diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/InputDevicesManager/InputDevicesManager.cs b/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/InputDevicesManager/InputDevicesManager.cs index b41cc3cb..eb323aa1 100644 --- a/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/InputDevicesManager/InputDevicesManager.cs +++ b/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/InputDevicesManager/InputDevicesManager.cs @@ -13,14 +13,21 @@ namespace AxibugEmuOnline.Client.InputDevices public delegate void OnDeviceLostHandle(InputDevice_D lostDevice); public event OnDeviceLostHandle OnDeviceLost; + bool m_quiting; public InputDevicesManager() { + Application.quitting += Application_quitting; m_inputResolver.OnDeviceConnected += Resolver_OnDeviceConnected; m_inputResolver.OnDeviceLost += Resolver_OnDeviceLost; foreach (var device in m_inputResolver.GetDevices()) AddDevice(device); } + private void Application_quitting() + { + m_quiting = true; + } + private void Resolver_OnDeviceLost(InputDevice_D lostDevice) { RemoveDevice(lostDevice); @@ -39,6 +46,8 @@ namespace AxibugEmuOnline.Client.InputDevices void RemoveDevice(InputDevice_D device) { + if (m_quiting) return; + m_devices.Remove(device.UniqueName); OnDeviceLost?.Invoke(device); } diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/InputDevicesManager/InputResolver/InputResolver.cs b/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/InputDevicesManager/InputResolver/InputResolver.cs index 4efbdeb9..c681bb0a 100644 --- a/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/InputDevicesManager/InputResolver/InputResolver.cs +++ b/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/InputDevicesManager/InputResolver/InputResolver.cs @@ -1,6 +1,6 @@ -using System.Collections.Generic; +using AxiInputSP.UGUI; +using System.Collections.Generic; using UnityEngine; -using UnityEngine.InputSystem; namespace AxibugEmuOnline.Client.InputDevices { @@ -18,25 +18,64 @@ namespace AxibugEmuOnline.Client.InputDevices throw new System.NotImplementedException(); #endif } + + DualWayDictionary<AxiScreenGamepad, ScreenGamepad_D> m_devices = new DualWayDictionary<AxiScreenGamepad, ScreenGamepad_D>(); + /// <summary> 禁止外部构造 </summary> protected InputResolver() { + AxiScreenGamepad.OnGamepadActive += AxiScreenGamepad_OnGamepadActive; + AxiScreenGamepad.OnGamepadDisactive += AxiScreenGamepad_OnGamepadDisactive; OnInit(); } + private void AxiScreenGamepad_OnGamepadDisactive(AxiScreenGamepad sender) + { + if (m_devices.TryGetValue(sender, out var device)) + { + m_devices.Remove(sender); + RaiseDeviceLost(device); + } + } + + private void AxiScreenGamepad_OnGamepadActive(AxiScreenGamepad sender) + { + var newDevice = new ScreenGamepad_D(sender, this); + m_devices[sender] = newDevice; + RaiseDeviceConnected(newDevice); + } + protected abstract void OnInit(); + List<InputDevice_D> m_devicesResultCache = new List<InputDevice_D>(); /// <summary> /// 获得所有当前已连入的输入设备 /// </summary> /// <returns></returns> - public abstract IEnumerable<InputDevice_D> GetDevices(); + public IEnumerable<InputDevice_D> GetDevices() + { + m_devicesResultCache.Clear(); + m_devicesResultCache.AddRange(m_devices.Values); + m_devicesResultCache.AddRange(OnGetDevices()); + return m_devicesResultCache; + } + /// <inheritdoc cref="GetDevices"/> + protected abstract IEnumerable<InputDevice_D> OnGetDevices(); - /// <summary> - /// 检查指定输入设备是否还保持着连接 - /// </summary> - /// <returns></returns> - public abstract bool CheckOnline(InputDevice_D device); + /// <summary> 检查指定输入设备是否还保持着连接 </summary> + public bool CheckOnline(InputDevice_D device) + { + if (device is ScreenGamepad_D) + { + return m_devices.TryGetKey(device as ScreenGamepad_D, out var _); + } + else + { + return OnCheckOnline(device); + } + } + /// <inheritdoc cref="CheckOnline(InputDevice_D)"/> + protected abstract bool OnCheckOnline(InputDevice_D device); /// <param name="lostDevice">丢失的设备</param> public delegate void OnDeviceLostHandle(InputDevice_D lostDevice); @@ -56,14 +95,51 @@ namespace AxibugEmuOnline.Client.InputDevices OnDeviceConnected?.Invoke(connectDevice); } - public abstract bool CheckPerforming<CONTROLLER>(CONTROLLER control) where CONTROLLER : InputControl_C; - public abstract Vector2 GetVector2<CONTROLLER>(CONTROLLER control) where CONTROLLER : InputControl_C; - public abstract float GetFloat<CONTROLLER>(CONTROLLER control) where CONTROLLER : InputControl_C; + public bool CheckPerforming<CONTROLLER>(CONTROLLER control) where CONTROLLER : InputControl_C + { + if (control.Device is ScreenGamepad_D) + { + ScreenGamepad_D device = control.Device as ScreenGamepad_D; + + return device.CheckPerforming(control); + } + else return OnCheckPerforming(control); + } + protected abstract bool OnCheckPerforming<CONTROLLER>(CONTROLLER control) where CONTROLLER : InputControl_C; + + public Vector2 GetVector2<CONTROLLER>(CONTROLLER control) where CONTROLLER : InputControl_C + { + if (control.Device is ScreenGamepad_D) + { + ScreenGamepad_D device = control.Device as ScreenGamepad_D; + + return device.GetVector2(control); + } + return OnGetVector2(control); + } + protected abstract Vector2 OnGetVector2<CONTROLLER>(CONTROLLER control) where CONTROLLER : InputControl_C; + + public float GetFloat<CONTROLLER>(CONTROLLER control) where CONTROLLER : InputControl_C + { + return OnGetFloat(control); + } + protected abstract float OnGetFloat<CONTROLLER>(CONTROLLER control) where CONTROLLER : InputControl_C; + /// <summary> /// 获得输入设备的唯一名称 /// </summary> /// <param name="inputDevice">这个设备必须是由resolver提供,并且保持着连接</param> /// <returns></returns> - public abstract string GetDeviceName(InputDevice_D inputDevice); + public string GetDeviceName(InputDevice_D inputDevice) + { + if (inputDevice is ScreenGamepad_D) + { + m_devices.TryGetKey(inputDevice as ScreenGamepad_D, out var realDeviceScript); + return $"{realDeviceScript.GetType().Name}_{realDeviceScript.GetHashCode()}"; + } + else return OnGetDeviceName(inputDevice); + } + /// <inheritdoc cref="GetDeviceName(InputDevice_D)"/> + protected abstract string OnGetDeviceName(InputDevice_D inputDevice); } } \ No newline at end of file diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/InputDevicesManager/InputResolver/InputSystemResolver.cs b/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/InputDevicesManager/InputResolver/InputSystemResolver.cs index 6f2c76ab..02eec3fd 100644 --- a/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/InputDevicesManager/InputResolver/InputSystemResolver.cs +++ b/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/InputDevicesManager/InputResolver/InputSystemResolver.cs @@ -51,7 +51,7 @@ namespace AxibugEmuOnline.Client.InputDevices.ForInputSystem return ipDev as T; } - public override string GetDeviceName(InputDevice_D inputDevice) + protected override string OnGetDeviceName(InputDevice_D inputDevice) { var ipdev = GetInputSystemDevice<InputDevice>(inputDevice); Debug.Assert(ipdev != null, "不能对已离线的设备获取名称"); @@ -59,7 +59,7 @@ namespace AxibugEmuOnline.Client.InputDevices.ForInputSystem return $"{ipdev.description.deviceClass}_{ipdev.description.interfaceName}_{ipdev.deviceId}"; } - public override bool CheckOnline(InputDevice_D device) + protected override bool OnCheckOnline(InputDevice_D device) { return m_devices.TryGetKey(device, out var _); } @@ -73,24 +73,24 @@ namespace AxibugEmuOnline.Client.InputDevices.ForInputSystem } } - public override IEnumerable<InputDevice_D> GetDevices() + protected override IEnumerable<InputDevice_D> OnGetDevices() { return m_devices.Values; } - public override bool CheckPerforming<CONTROLLER>(CONTROLLER control) + protected override bool OnCheckPerforming<CONTROLLER>(CONTROLLER control) { var ipControl = GetInputSystemControl(control); return ipControl.IsPressed(); } - public override Vector2 GetVector2<CONTROLLER>(CONTROLLER control) + protected override Vector2 OnGetVector2<CONTROLLER>(CONTROLLER control) { var ipControl = GetInputSystemControl(control); return (ipControl as InputControl<Vector2>).value; } - public override float GetFloat<CONTROLLER>(CONTROLLER control) + protected override float OnGetFloat<CONTROLLER>(CONTROLLER control) { var ipControl = GetInputSystemControl(control); return (ipControl as InputControl<float>).value; diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/InputDevicesManager/InputResolver/PSVResolver.cs b/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/InputDevicesManager/InputResolver/PSVResolver.cs index f97a973a..b13ac075 100644 --- a/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/InputDevicesManager/InputResolver/PSVResolver.cs +++ b/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/InputDevicesManager/InputResolver/PSVResolver.cs @@ -15,24 +15,24 @@ namespace AxibugEmuOnline.Client.InputDevices.ForPSV m_devices.Add(m_psvController); } - public override IEnumerable<InputDevice_D> GetDevices() + protected override IEnumerable<InputDevice_D> OnGetDevices() { return m_devices; } - public override bool CheckOnline(InputDevice_D device) + protected override bool OnCheckOnline(InputDevice_D device) { return device == m_psvController; } - public override string GetDeviceName(InputDevice_D inputDevice) + protected override string OnGetDeviceName(InputDevice_D inputDevice) { Debug.Assert(inputDevice == m_psvController, "只支持psv控制器"); return nameof(PSVController_D); } - public override bool CheckPerforming<CONTROLLER>(CONTROLLER control) + protected override bool OnCheckPerforming<CONTROLLER>(CONTROLLER control) { if (control.Device is PSVController_D psvCon) { @@ -58,7 +58,7 @@ namespace AxibugEmuOnline.Client.InputDevices.ForPSV throw new System.NotImplementedException(); } - public override Vector2 GetVector2<CONTROLLER>(CONTROLLER control) + protected override Vector2 OnGetVector2<CONTROLLER>(CONTROLLER control) { if (control.Device is PSVController_D psvCon) { @@ -75,7 +75,7 @@ namespace AxibugEmuOnline.Client.InputDevices.ForPSV throw new System.NotImplementedException(); } - public override float GetFloat<CONTROLLER>(CONTROLLER control) + protected override float OnGetFloat<CONTROLLER>(CONTROLLER control) { throw new System.NotImplementedException(); } diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/UI/Joystick/FloatingJoystick.cs b/AxibugEmuOnline.Client/Assets/Script/AppMain/UI/Joystick/FloatingJoystick.cs index f0a05222..5df7fd7b 100644 --- a/AxibugEmuOnline.Client/Assets/Script/AppMain/UI/Joystick/FloatingJoystick.cs +++ b/AxibugEmuOnline.Client/Assets/Script/AppMain/UI/Joystick/FloatingJoystick.cs @@ -1,5 +1,4 @@ -using AxiInputSP.UGUI; -using UnityEngine; +using UnityEngine; using UnityEngine.EventSystems; using UnityEngine.UI; @@ -13,7 +12,6 @@ public class FloatingJoystick : Joystick readonly static Color ShowColor = new Color(1F, 1f, 1F, 0.7f); readonly static Color HideColor = new Color(1F, 1f, 1F, 0.3f); - AxiIptJoystick mAxiIptJoystick; //一次新的摇杆移动 public static bool bNewTouchWithSkill = false; @@ -34,24 +32,7 @@ public class FloatingJoystick : Joystick mIsMounseDown = false; } - void OnEnable() - { - if (mAxiIptJoystick == null) - { - mAxiIptJoystick = new AxiIptJoystick(GetJoyRaw); - } - } - - private void OnDisable() - { - if (mAxiIptJoystick != null) - { - mAxiIptJoystick.Dispose(); - mAxiIptJoystick = null; - } - } - - private Vector2Int GetJoyRaw() + public Vector2Int GetJoyRaw() { return this.RawInputV2; } diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/UI/OverlayUI/OverlayManager.cs b/AxibugEmuOnline.Client/Assets/Script/AppMain/UI/OverlayUI/OverlayManager.cs index ae613c67..08f2ad08 100644 --- a/AxibugEmuOnline.Client/Assets/Script/AppMain/UI/OverlayUI/OverlayManager.cs +++ b/AxibugEmuOnline.Client/Assets/Script/AppMain/UI/OverlayUI/OverlayManager.cs @@ -1,4 +1,5 @@ using AxibugEmuOnline.Client.ClientCore; +using AxiInputSP.UGUI; using System; using System.Collections.Generic; using UnityEngine; @@ -12,7 +13,7 @@ namespace AxibugEmuOnline.Client [SerializeField] InputUI m_InputUI; [SerializeField] OptionUI m_OptionUI; - [SerializeField] Transform m_Joystick; + [SerializeField] AxiScreenGamepad m_screenGamepad; [SerializeField] PopTipsUI m_popTipsUI; private void Awake() @@ -21,7 +22,7 @@ namespace AxibugEmuOnline.Client m_InputUI.gameObject.SetActive(false); - m_Joystick.gameObject.SetActive(App.bUseGUIButton); + m_screenGamepad.gameObject.SetActive(App.bUseGUIButton); } public static void Input(Action<string> callback, string placeHolder, string defaultText)