XMB界面Input也统一设置
This commit is contained in:
parent
49875351c3
commit
7832b9979c
AxibugEmuOnline.Client/Assets/Script/AppMain
App.csAxiInput.Settings.meta
AxiInput.Settings
GamingMultiKeysSetting.csGamingMultiKeysSetting.cs.metaUMAMEMultiKeysSetting.csUMAMEMultiKeysSetting.cs.metaXMBMultiKeysSetting.csXMBMultiKeysSetting.cs.meta
AxiInput
Common
Emulator/MameEmulator/UniInterface
IkeyMapperChanger
Manager
UI/CommandDispatcher
@ -72,19 +72,18 @@ namespace AxibugEmuOnline.Client.ClientCore
|
|||||||
public static void Init(bool isTest = false, string testSrvIP = "", bool bUseLocalWebApi = false, string mLocalWebApi = "")
|
public static void Init(bool isTest = false, string testSrvIP = "", bool bUseLocalWebApi = false, string mLocalWebApi = "")
|
||||||
{
|
{
|
||||||
log = new LogManager(OnLogOut);
|
log = new LogManager(OnLogOut);
|
||||||
|
|
||||||
//其他平台必要的初始化
|
//其他平台必要的初始化
|
||||||
if (UnityEngine.Application.platform == RuntimePlatform.PSP2)
|
if (UnityEngine.Application.platform == RuntimePlatform.PSP2)
|
||||||
{
|
{
|
||||||
PSP2Init();
|
PSP2Init();
|
||||||
}
|
}
|
||||||
|
input = new AppInput();
|
||||||
FileDownloader = new FileDownloader();
|
FileDownloader = new FileDownloader();
|
||||||
settings = new AppSettings();
|
settings = new AppSettings();
|
||||||
network = new NetworkHelper();
|
network = new NetworkHelper();
|
||||||
login = new AppLogin();
|
login = new AppLogin();
|
||||||
chat = new AppChat();
|
chat = new AppChat();
|
||||||
user = new UserDataManager();
|
user = new UserDataManager();
|
||||||
input = new AppInput();
|
|
||||||
emu = new AppEmu();
|
emu = new AppEmu();
|
||||||
httpAPI = new HttpAPI();
|
httpAPI = new HttpAPI();
|
||||||
if (bUseLocalWebApi)
|
if (bUseLocalWebApi)
|
||||||
|
@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 91746af636f351140a4796dc4e98be6d
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
@ -0,0 +1,124 @@
|
|||||||
|
using AxibugEmuOnline.Client;
|
||||||
|
using AxibugEmuOnline.Client.Common;
|
||||||
|
using AxibugEmuOnline.Client.Manager;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
namespace Assets.Script.AppMain.AxiInput.Settings
|
||||||
|
{
|
||||||
|
public class GamingMultiKeysSetting : MultiKeysSetting
|
||||||
|
{
|
||||||
|
public GamingSingleKeysSeting[] controllers;
|
||||||
|
|
||||||
|
public GamingMultiKeysSetting()
|
||||||
|
{
|
||||||
|
controllers = new GamingSingleKeysSeting[1];
|
||||||
|
for (int i = 0; i < controllers.Length; i++)
|
||||||
|
controllers[i] = new GamingSingleKeysSeting();
|
||||||
|
}
|
||||||
|
|
||||||
|
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 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].ColletAllKey();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public class GamingSingleKeysSeting : SingleKeysSetting
|
||||||
|
{
|
||||||
|
Dictionary<EnumCommand, List<AxiInput>> DictSkey2AxiInput = new Dictionary<EnumCommand, List<AxiInput>>();
|
||||||
|
AxiInput[] AxiInputArr = null;
|
||||||
|
|
||||||
|
public void SetKey(ulong Key, AxiInput input)
|
||||||
|
{
|
||||||
|
List<AxiInput> list;
|
||||||
|
if (!DictSkey2AxiInput.TryGetValue((EnumCommand)Key, out list))
|
||||||
|
list = DictSkey2AxiInput[(EnumCommand)Key] = ObjectPoolAuto.AcquireList<AxiInput>();
|
||||||
|
list.Add(input);
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool GetKey(EnumCommand Key)
|
||||||
|
{
|
||||||
|
List<AxiInput> list;
|
||||||
|
if (!DictSkey2AxiInput.TryGetValue(Key, out list))
|
||||||
|
return false;
|
||||||
|
for (int i = 0; i < list.Count; i++)
|
||||||
|
{
|
||||||
|
if (list[i].IsKey())
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void ClearAll()
|
||||||
|
{
|
||||||
|
foreach (List<AxiInput> singlelist in DictSkey2AxiInput.Values)
|
||||||
|
ObjectPoolAuto.Release(singlelist);
|
||||||
|
DictSkey2AxiInput.Clear();
|
||||||
|
AxiInputArr = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void ColletAllKey()
|
||||||
|
{
|
||||||
|
List<AxiInput> list = ObjectPoolAuto.AcquireList<AxiInput>();
|
||||||
|
foreach (List<AxiInput> singlelist in DictSkey2AxiInput.Values)
|
||||||
|
list.AddRange(singlelist);
|
||||||
|
AxiInputArr = list.ToArray();
|
||||||
|
ObjectPoolAuto.Release(list);
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool HadAnyKeyDown()
|
||||||
|
{
|
||||||
|
if (AxiInputArr == null)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
for (int i = 0; AxiInputArr.Length > 0; i++)
|
||||||
|
{
|
||||||
|
if (AxiInputArr[i].IsKey())
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool GetKey(ulong Key)
|
||||||
|
{
|
||||||
|
return GetKey((EnumCommand)Key);
|
||||||
|
}
|
||||||
|
|
||||||
|
internal EnumCommand[] GetAllCmd()
|
||||||
|
{
|
||||||
|
return DictSkey2AxiInput.Keys.ToArray();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,2 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 47f6f518d357c334c802a7aac4d507dc
|
@ -0,0 +1,174 @@
|
|||||||
|
using AxibugEmuOnline.Client.Common;
|
||||||
|
using AxibugEmuOnline.Client.Manager;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
namespace Assets.Script.AppMain.AxiInput.Settings
|
||||||
|
{
|
||||||
|
public enum UMAMEKSingleKey
|
||||||
|
{
|
||||||
|
INSERT_COIN,
|
||||||
|
GAMESTART,
|
||||||
|
UP,
|
||||||
|
DOWN,
|
||||||
|
LEFT,
|
||||||
|
RIGHT,
|
||||||
|
BTN_A,
|
||||||
|
BTN_B,
|
||||||
|
BTN_C,
|
||||||
|
BTN_D,
|
||||||
|
BTN_E,
|
||||||
|
BTN_F
|
||||||
|
}
|
||||||
|
public class UMAMEMultiKeysSetting : MultiKeysSetting
|
||||||
|
{
|
||||||
|
public UMAMEKSingleKeysSeting[] controllers;
|
||||||
|
|
||||||
|
public UMAMEMultiKeysSetting()
|
||||||
|
{
|
||||||
|
controllers = new UMAMEKSingleKeysSeting[4];
|
||||||
|
for (int i = 0; i < controllers.Length; i++)
|
||||||
|
controllers[i] = new UMAMEKSingleKeysSeting();
|
||||||
|
}
|
||||||
|
|
||||||
|
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 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_1));
|
||||||
|
controllers[0].SetKey((ulong)UMAMEKSingleKey.BTN_B, AxiInputEx.ByUGUIBtn(AxiInputUGuiBtnType.BTN_2));
|
||||||
|
controllers[0].SetKey((ulong)UMAMEKSingleKey.BTN_C, AxiInputEx.ByUGUIBtn(AxiInputUGuiBtnType.BTN_3));
|
||||||
|
controllers[0].SetKey((ulong)UMAMEKSingleKey.BTN_D, AxiInputEx.ByUGUIBtn(AxiInputUGuiBtnType.BTN_4));
|
||||||
|
controllers[0].SetKey((ulong)UMAMEKSingleKey.BTN_E, AxiInputEx.ByUGUIBtn(AxiInputUGuiBtnType.BTN_5));
|
||||||
|
controllers[0].SetKey((ulong)UMAMEKSingleKey.BTN_F, AxiInputEx.ByUGUIBtn(AxiInputUGuiBtnType.BTN_6));
|
||||||
|
|
||||||
|
controllers[0].ColletAllKey();
|
||||||
|
#endregion
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public class UMAMEKSingleKeysSeting : SingleKeysSetting
|
||||||
|
{
|
||||||
|
Dictionary<UMAMEKSingleKey, List<AxiInput>> DictSkey2AxiInput = new Dictionary<UMAMEKSingleKey, List<AxiInput>>();
|
||||||
|
AxiInput[] AxiInputArr = null;
|
||||||
|
|
||||||
|
public void SetKey(ulong Key, AxiInput input)
|
||||||
|
{
|
||||||
|
List<AxiInput> list;
|
||||||
|
if (!DictSkey2AxiInput.TryGetValue((UMAMEKSingleKey)Key, out list))
|
||||||
|
list = DictSkey2AxiInput[(UMAMEKSingleKey)Key] = ObjectPoolAuto.AcquireList<AxiInput>();
|
||||||
|
list.Add(input);
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool GetKey(UMAMEKSingleKey Key)
|
||||||
|
{
|
||||||
|
List<AxiInput> list;
|
||||||
|
if (!DictSkey2AxiInput.TryGetValue(Key, out list))
|
||||||
|
return false;
|
||||||
|
for (int i = 0; i < list.Count; i++)
|
||||||
|
{
|
||||||
|
if (list[i].IsKey())
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool GetKey(ulong Key)
|
||||||
|
{
|
||||||
|
return GetKey((UMAMEKSingleKey)Key);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void ClearAll()
|
||||||
|
{
|
||||||
|
foreach (List<AxiInput> singlelist in DictSkey2AxiInput.Values)
|
||||||
|
ObjectPoolAuto.Release(singlelist);
|
||||||
|
DictSkey2AxiInput.Clear();
|
||||||
|
AxiInputArr = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void ColletAllKey()
|
||||||
|
{
|
||||||
|
List<AxiInput> list = ObjectPoolAuto.AcquireList<AxiInput>();
|
||||||
|
foreach (List<AxiInput> singlelist in DictSkey2AxiInput.Values)
|
||||||
|
list.AddRange(singlelist);
|
||||||
|
AxiInputArr = list.ToArray();
|
||||||
|
ObjectPoolAuto.Release(list);
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool HadAnyKeyDown()
|
||||||
|
{
|
||||||
|
if (AxiInputArr == null)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
for (int i = 0; AxiInputArr.Length > 0; i++)
|
||||||
|
{
|
||||||
|
if (AxiInputArr[i].IsKey())
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,2 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 486aed2afcba6b94f86c1ae4e4aeaf02
|
@ -0,0 +1,154 @@
|
|||||||
|
using AxibugEmuOnline.Client;
|
||||||
|
using AxibugEmuOnline.Client.Common;
|
||||||
|
using AxibugEmuOnline.Client.Manager;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Reflection;
|
||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
namespace Assets.Script.AppMain.AxiInput.Settings
|
||||||
|
{
|
||||||
|
public class XMBMultiKeysSetting : MultiKeysSetting
|
||||||
|
{
|
||||||
|
public XMBSingleKeysSeting[] controllers;
|
||||||
|
|
||||||
|
public XMBMultiKeysSetting()
|
||||||
|
{
|
||||||
|
controllers = new XMBSingleKeysSeting[1];
|
||||||
|
for (int i = 0; i < controllers.Length; i++)
|
||||||
|
controllers[i] = new XMBSingleKeysSeting();
|
||||||
|
}
|
||||||
|
|
||||||
|
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 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.Back, AxiInputEx.ByKeyCode(KeyCode.K));
|
||||||
|
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_1));
|
||||||
|
controllers[0].SetKey((ulong)EnumCommand.Back, AxiInputEx.ByUGUIBtn(AxiInputUGuiBtnType.BTN_2));
|
||||||
|
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 : SingleKeysSetting
|
||||||
|
{
|
||||||
|
Dictionary<EnumCommand, List<AxiInput>> DictSkey2AxiInput = new Dictionary<EnumCommand, List<AxiInput>>();
|
||||||
|
AxiInput[] AxiInputArr = null;
|
||||||
|
|
||||||
|
public void SetKey(ulong Key, AxiInput input)
|
||||||
|
{
|
||||||
|
List<AxiInput> list;
|
||||||
|
if (!DictSkey2AxiInput.TryGetValue((EnumCommand)Key, out list))
|
||||||
|
list = DictSkey2AxiInput[(EnumCommand)Key] = ObjectPoolAuto.AcquireList<AxiInput>();
|
||||||
|
list.Add(input);
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool GetKey(EnumCommand Key)
|
||||||
|
{
|
||||||
|
List<AxiInput> list;
|
||||||
|
if (!DictSkey2AxiInput.TryGetValue(Key, out list))
|
||||||
|
return false;
|
||||||
|
for (int i = 0; i < list.Count; i++)
|
||||||
|
{
|
||||||
|
if (list[i].IsKey())
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void ClearAll()
|
||||||
|
{
|
||||||
|
foreach (List<AxiInput> singlelist in DictSkey2AxiInput.Values)
|
||||||
|
ObjectPoolAuto.Release(singlelist);
|
||||||
|
DictSkey2AxiInput.Clear();
|
||||||
|
AxiInputArr = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void ColletAllKey()
|
||||||
|
{
|
||||||
|
List<AxiInput> list = ObjectPoolAuto.AcquireList<AxiInput>();
|
||||||
|
foreach (List<AxiInput> singlelist in DictSkey2AxiInput.Values)
|
||||||
|
list.AddRange(singlelist);
|
||||||
|
AxiInputArr = list.ToArray();
|
||||||
|
ObjectPoolAuto.Release(list);
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool HadAnyKeyDown()
|
||||||
|
{
|
||||||
|
if (AxiInputArr == null)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
for (int i = 0; AxiInputArr.Length > 0; i++)
|
||||||
|
{
|
||||||
|
if (AxiInputArr[i].IsKey())
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool GetKey(ulong Key)
|
||||||
|
{
|
||||||
|
return GetKey((EnumCommand)Key);
|
||||||
|
}
|
||||||
|
|
||||||
|
internal EnumCommand[] GetAllCmd()
|
||||||
|
{
|
||||||
|
return DictSkey2AxiInput.Keys.ToArray();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,2 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 90bd1ccb53a0ddd4b814030f1ae218a2
|
@ -50,5 +50,6 @@ namespace Assets.Script.AppMain.AxiInput
|
|||||||
POTION_2,
|
POTION_2,
|
||||||
POTION_3,
|
POTION_3,
|
||||||
POTION_4,
|
POTION_4,
|
||||||
|
HOME,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -15,5 +15,6 @@ namespace AxibugEmuOnline.Client.Common
|
|||||||
public static KeyCode L3 => KeyCode.Joystick1Button8;
|
public static KeyCode L3 => KeyCode.Joystick1Button8;
|
||||||
public static KeyCode R3 => KeyCode.Joystick1Button9;
|
public static KeyCode R3 => KeyCode.Joystick1Button9;
|
||||||
public static KeyCode L => KeyCode.Joystick1Button10;
|
public static KeyCode L => KeyCode.Joystick1Button10;
|
||||||
|
public static KeyCode R => KeyCode.Joystick1Button11;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,14 +1,13 @@
|
|||||||
|
using Assets.Script.AppMain.AxiInput.Settings;
|
||||||
using AxibugEmuOnline.Client;
|
using AxibugEmuOnline.Client;
|
||||||
using AxibugEmuOnline.Client.ClientCore;
|
using AxibugEmuOnline.Client.ClientCore;
|
||||||
using AxibugEmuOnline.Client.Event;
|
using AxibugEmuOnline.Client.Event;
|
||||||
using AxibugEmuOnline.Client.Manager;
|
|
||||||
using AxiReplay;
|
using AxiReplay;
|
||||||
using MAME.Core;
|
using MAME.Core;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
using static AxibugEmuOnline.Client.Manager.MAMEKSingleKeysSeting;
|
|
||||||
|
|
||||||
public class UniKeyboard : MonoBehaviour, IKeyboard
|
public class UniKeyboard : MonoBehaviour, IKeyboard
|
||||||
{
|
{
|
||||||
@ -335,19 +334,19 @@ public class MameSingleConoller : IController
|
|||||||
return 0;
|
return 0;
|
||||||
CurrLocalSingleAllInput = 0;
|
CurrLocalSingleAllInput = 0;
|
||||||
|
|
||||||
MAMEKSingleKeysSeting keys = App.input.mame.controllers[ControllerIndex];
|
var keys = App.input.mame.controllers[ControllerIndex];
|
||||||
if (keys.GetKey(MAMEKSingleKey.INSERT_COIN)) CurrLocalSingleAllInput |= (ulong)tg_INSERT_COIN;
|
if (keys.GetKey(UMAMEKSingleKey.INSERT_COIN)) CurrLocalSingleAllInput |= (ulong)tg_INSERT_COIN;
|
||||||
if (keys.GetKey(MAMEKSingleKey.GAMESTART)) CurrLocalSingleAllInput |= (ulong)tg_GAMESTART;
|
if (keys.GetKey(UMAMEKSingleKey.GAMESTART)) CurrLocalSingleAllInput |= (ulong)tg_GAMESTART;
|
||||||
if (keys.GetKey(MAMEKSingleKey.UP)) CurrLocalSingleAllInput |= (ulong)tg_UP;
|
if (keys.GetKey(UMAMEKSingleKey.UP)) CurrLocalSingleAllInput |= (ulong)tg_UP;
|
||||||
if (keys.GetKey(MAMEKSingleKey.DOWN)) CurrLocalSingleAllInput |= (ulong)tg_DOWN;
|
if (keys.GetKey(UMAMEKSingleKey.DOWN)) CurrLocalSingleAllInput |= (ulong)tg_DOWN;
|
||||||
if (keys.GetKey(MAMEKSingleKey.LEFT)) CurrLocalSingleAllInput |= (ulong)tg_LEFT;
|
if (keys.GetKey(UMAMEKSingleKey.LEFT)) CurrLocalSingleAllInput |= (ulong)tg_LEFT;
|
||||||
if (keys.GetKey(MAMEKSingleKey.RIGHT)) CurrLocalSingleAllInput |= (ulong)tg_RIGHT;
|
if (keys.GetKey(UMAMEKSingleKey.RIGHT)) CurrLocalSingleAllInput |= (ulong)tg_RIGHT;
|
||||||
if (keys.GetKey(MAMEKSingleKey.BTN_A)) CurrLocalSingleAllInput |= (ulong)tg_BTN_A;
|
if (keys.GetKey(UMAMEKSingleKey.BTN_A)) CurrLocalSingleAllInput |= (ulong)tg_BTN_A;
|
||||||
if (keys.GetKey(MAMEKSingleKey.BTN_B)) CurrLocalSingleAllInput |= (ulong)tg_BTN_B;
|
if (keys.GetKey(UMAMEKSingleKey.BTN_B)) CurrLocalSingleAllInput |= (ulong)tg_BTN_B;
|
||||||
if (keys.GetKey(MAMEKSingleKey.BTN_C)) CurrLocalSingleAllInput |= (ulong)tg_BTN_C;
|
if (keys.GetKey(UMAMEKSingleKey.BTN_C)) CurrLocalSingleAllInput |= (ulong)tg_BTN_C;
|
||||||
if (keys.GetKey(MAMEKSingleKey.BTN_D)) CurrLocalSingleAllInput |= (ulong)tg_BTN_D;
|
if (keys.GetKey(UMAMEKSingleKey.BTN_D)) CurrLocalSingleAllInput |= (ulong)tg_BTN_D;
|
||||||
if (keys.GetKey(MAMEKSingleKey.BTN_E)) CurrLocalSingleAllInput |= (ulong)tg_BTN_E;
|
if (keys.GetKey(UMAMEKSingleKey.BTN_E)) CurrLocalSingleAllInput |= (ulong)tg_BTN_E;
|
||||||
if (keys.GetKey(MAMEKSingleKey.BTN_F)) CurrLocalSingleAllInput |= (ulong)tg_BTN_F;
|
if (keys.GetKey(UMAMEKSingleKey.BTN_F)) CurrLocalSingleAllInput |= (ulong)tg_BTN_F;
|
||||||
|
|
||||||
//if (Input.GetKey(INSERT_COIN)) CurrLocalSingleAllInput |= (ulong)tg_INSERT_COIN;
|
//if (Input.GetKey(INSERT_COIN)) CurrLocalSingleAllInput |= (ulong)tg_INSERT_COIN;
|
||||||
//if (Input.GetKey(GAMESTART)) CurrLocalSingleAllInput |= (ulong)tg_GAMESTART;
|
//if (Input.GetKey(GAMESTART)) CurrLocalSingleAllInput |= (ulong)tg_GAMESTART;
|
||||||
|
@ -1,8 +1,13 @@
|
|||||||
namespace AxibugEmuOnline.Client
|
using AxibugEmuOnline.Client.Manager;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
|
||||||
|
namespace AxibugEmuOnline.Client
|
||||||
{
|
{
|
||||||
public abstract class CommandChanger : IKeyMapperChanger
|
public abstract class CommandChanger : IKeyMapperChanger
|
||||||
{
|
{
|
||||||
public string Name => GetType().Name;
|
public string Name => GetType().Name;
|
||||||
public abstract object GetConfig();
|
public abstract EnumCommand[] GetConfig();
|
||||||
|
|
||||||
|
public abstract SingleKeysSetting GetKeySetting();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,26 +1,35 @@
|
|||||||
using System.Collections.Generic;
|
using AxibugEmuOnline.Client.ClientCore;
|
||||||
using UnityEngine;
|
using AxibugEmuOnline.Client.Manager;
|
||||||
|
|
||||||
namespace AxibugEmuOnline.Client
|
namespace AxibugEmuOnline.Client
|
||||||
{
|
{
|
||||||
public class GamingChanger : CommandChanger
|
public class GamingChanger : CommandChanger
|
||||||
{
|
{
|
||||||
|
public override EnumCommand[] GetConfig()
|
||||||
Dictionary<KeyCode, EnumCommand> m_uiKeyMapper = new Dictionary<KeyCode, EnumCommand>();
|
|
||||||
public GamingChanger()
|
|
||||||
{
|
{
|
||||||
m_uiKeyMapper[KeyCode.Escape] = EnumCommand.OptionMenu;
|
return App.input.gaming.controllers[0].GetAllCmd();
|
||||||
|
|
||||||
if (Application.platform == RuntimePlatform.PSP2)
|
|
||||||
{
|
|
||||||
m_uiKeyMapper[Common.PSVitaKey.L] = EnumCommand.OptionMenu;
|
|
||||||
m_uiKeyMapper[Common.PSVitaKey.R] = EnumCommand.OptionMenu;
|
|
||||||
}
|
|
||||||
|
|
||||||
//PC XBOX
|
|
||||||
m_uiKeyMapper[Common.PC_XBOXKEY.Y] = EnumCommand.OptionMenu;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public override object GetConfig() => m_uiKeyMapper;
|
public override SingleKeysSetting GetKeySetting()
|
||||||
|
{
|
||||||
|
return App.input.gaming.controllers[0];
|
||||||
|
}
|
||||||
|
|
||||||
|
//Dictionary<KeyCode, EnumCommand> m_uiKeyMapper = new Dictionary<KeyCode, EnumCommand>();
|
||||||
|
//public GamingChanger()
|
||||||
|
//{
|
||||||
|
// m_uiKeyMapper[KeyCode.Escape] = EnumCommand.OptionMenu;
|
||||||
|
|
||||||
|
// if (Application.platform == RuntimePlatform.PSP2)
|
||||||
|
// {
|
||||||
|
// m_uiKeyMapper[Common.PSVitaKey.L] = EnumCommand.OptionMenu;
|
||||||
|
// m_uiKeyMapper[Common.PSVitaKey.R] = EnumCommand.OptionMenu;
|
||||||
|
// }
|
||||||
|
|
||||||
|
// //PC XBOX
|
||||||
|
// m_uiKeyMapper[Common.PC_XBOXKEY.Y] = EnumCommand.OptionMenu;
|
||||||
|
//}
|
||||||
|
|
||||||
|
//public override object GetConfig() => m_uiKeyMapper;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,54 +1,64 @@
|
|||||||
using System.Collections.Generic;
|
using AxibugEmuOnline.Client.ClientCore;
|
||||||
using UnityEngine;
|
using AxibugEmuOnline.Client.Manager;
|
||||||
|
|
||||||
namespace AxibugEmuOnline.Client
|
namespace AxibugEmuOnline.Client
|
||||||
{
|
{
|
||||||
|
|
||||||
public class NormalChanger : CommandChanger
|
public class NormalChanger : CommandChanger
|
||||||
{
|
{
|
||||||
Dictionary<KeyCode, EnumCommand> m_uiKeyMapper = new Dictionary<KeyCode, EnumCommand>();
|
public override EnumCommand[] GetConfig()
|
||||||
public NormalChanger()
|
|
||||||
{
|
{
|
||||||
m_uiKeyMapper[KeyCode.A] = EnumCommand.SelectItemLeft;
|
return App.input.xmb.controllers[0].GetAllCmd();
|
||||||
m_uiKeyMapper[KeyCode.D] = EnumCommand.SelectItemRight;
|
|
||||||
m_uiKeyMapper[KeyCode.W] = EnumCommand.SelectItemUp;
|
|
||||||
m_uiKeyMapper[KeyCode.S] = EnumCommand.SelectItemDown;
|
|
||||||
m_uiKeyMapper[KeyCode.K] = EnumCommand.Enter;
|
|
||||||
m_uiKeyMapper[KeyCode.L] = EnumCommand.Back;
|
|
||||||
m_uiKeyMapper[KeyCode.I] = EnumCommand.OptionMenu;
|
|
||||||
|
|
||||||
m_uiKeyMapper[KeyCode.LeftArrow] = EnumCommand.SelectItemLeft;
|
|
||||||
m_uiKeyMapper[KeyCode.RightArrow] = EnumCommand.SelectItemRight;
|
|
||||||
m_uiKeyMapper[KeyCode.UpArrow] = EnumCommand.SelectItemUp;
|
|
||||||
m_uiKeyMapper[KeyCode.DownArrow] = EnumCommand.SelectItemDown;
|
|
||||||
m_uiKeyMapper[KeyCode.Return] = EnumCommand.Enter;
|
|
||||||
m_uiKeyMapper[KeyCode.Escape] = EnumCommand.Back;
|
|
||||||
m_uiKeyMapper[KeyCode.RightShift] = EnumCommand.OptionMenu;
|
|
||||||
m_uiKeyMapper[KeyCode.LeftShift] = EnumCommand.OptionMenu;
|
|
||||||
|
|
||||||
if (Application.platform == RuntimePlatform.PSP2)
|
|
||||||
{
|
|
||||||
m_uiKeyMapper[Common.PSVitaKey.Left] = EnumCommand.SelectItemLeft;
|
|
||||||
m_uiKeyMapper[Common.PSVitaKey.Right] = EnumCommand.SelectItemRight;
|
|
||||||
m_uiKeyMapper[Common.PSVitaKey.Up] = EnumCommand.SelectItemUp;
|
|
||||||
m_uiKeyMapper[Common.PSVitaKey.Down] = EnumCommand.SelectItemDown;
|
|
||||||
m_uiKeyMapper[Common.PSVitaKey.Circle] = EnumCommand.Enter;
|
|
||||||
m_uiKeyMapper[Common.PSVitaKey.Cross] = EnumCommand.Back;
|
|
||||||
m_uiKeyMapper[Common.PSVitaKey.Triangle] = EnumCommand.OptionMenu;
|
|
||||||
}
|
|
||||||
|
|
||||||
//PC XBOX
|
|
||||||
|
|
||||||
//m_uiKeyMapper[Common.PC_XBOXKEY.Left] = EnumCommand.SelectItemLeft;
|
|
||||||
//m_uiKeyMapper[Common.PSVitaKey.Right] = EnumCommand.SelectItemRight;
|
|
||||||
//m_uiKeyMapper[Common.PSVitaKey.Up] = EnumCommand.SelectItemUp;
|
|
||||||
//m_uiKeyMapper[Common.PSVitaKey.Down] = EnumCommand.SelectItemDown;
|
|
||||||
m_uiKeyMapper[Common.PC_XBOXKEY.MenuBtn] = EnumCommand.Enter;
|
|
||||||
m_uiKeyMapper[Common.PC_XBOXKEY.ViewBtn] = EnumCommand.Back;
|
|
||||||
m_uiKeyMapper[Common.PC_XBOXKEY.Y] = EnumCommand.OptionMenu;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public override object GetConfig() => m_uiKeyMapper;
|
public override SingleKeysSetting GetKeySetting()
|
||||||
|
{
|
||||||
|
return App.input.xmb.controllers[0];
|
||||||
|
}
|
||||||
|
|
||||||
|
//Dictionary<KeyCode, EnumCommand> m_uiKeyMapper = new Dictionary<KeyCode, EnumCommand>();
|
||||||
|
//public NormalChanger()
|
||||||
|
//{
|
||||||
|
// m_uiKeyMapper[KeyCode.A] = EnumCommand.SelectItemLeft;
|
||||||
|
// m_uiKeyMapper[KeyCode.D] = EnumCommand.SelectItemRight;
|
||||||
|
// m_uiKeyMapper[KeyCode.W] = EnumCommand.SelectItemUp;
|
||||||
|
// m_uiKeyMapper[KeyCode.S] = EnumCommand.SelectItemDown;
|
||||||
|
// m_uiKeyMapper[KeyCode.K] = EnumCommand.Enter;
|
||||||
|
// m_uiKeyMapper[KeyCode.L] = EnumCommand.Back;
|
||||||
|
// m_uiKeyMapper[KeyCode.I] = EnumCommand.OptionMenu;
|
||||||
|
|
||||||
|
// m_uiKeyMapper[KeyCode.LeftArrow] = EnumCommand.SelectItemLeft;
|
||||||
|
// m_uiKeyMapper[KeyCode.RightArrow] = EnumCommand.SelectItemRight;
|
||||||
|
// m_uiKeyMapper[KeyCode.UpArrow] = EnumCommand.SelectItemUp;
|
||||||
|
// m_uiKeyMapper[KeyCode.DownArrow] = EnumCommand.SelectItemDown;
|
||||||
|
// m_uiKeyMapper[KeyCode.Return] = EnumCommand.Enter;
|
||||||
|
// m_uiKeyMapper[KeyCode.Escape] = EnumCommand.Back;
|
||||||
|
// m_uiKeyMapper[KeyCode.RightShift] = EnumCommand.OptionMenu;
|
||||||
|
// m_uiKeyMapper[KeyCode.LeftShift] = EnumCommand.OptionMenu;
|
||||||
|
|
||||||
|
// if (Application.platform == RuntimePlatform.PSP2)
|
||||||
|
// {
|
||||||
|
// m_uiKeyMapper[Common.PSVitaKey.Left] = EnumCommand.SelectItemLeft;
|
||||||
|
// m_uiKeyMapper[Common.PSVitaKey.Right] = EnumCommand.SelectItemRight;
|
||||||
|
// m_uiKeyMapper[Common.PSVitaKey.Up] = EnumCommand.SelectItemUp;
|
||||||
|
// m_uiKeyMapper[Common.PSVitaKey.Down] = EnumCommand.SelectItemDown;
|
||||||
|
// m_uiKeyMapper[Common.PSVitaKey.Circle] = EnumCommand.Enter;
|
||||||
|
// m_uiKeyMapper[Common.PSVitaKey.Cross] = EnumCommand.Back;
|
||||||
|
// m_uiKeyMapper[Common.PSVitaKey.Triangle] = EnumCommand.OptionMenu;
|
||||||
|
// }
|
||||||
|
|
||||||
|
// //PC XBOX
|
||||||
|
|
||||||
|
// //m_uiKeyMapper[Common.PC_XBOXKEY.Left] = EnumCommand.SelectItemLeft;
|
||||||
|
// //m_uiKeyMapper[Common.PSVitaKey.Right] = EnumCommand.SelectItemRight;
|
||||||
|
// //m_uiKeyMapper[Common.PSVitaKey.Up] = EnumCommand.SelectItemUp;
|
||||||
|
// //m_uiKeyMapper[Common.PSVitaKey.Down] = EnumCommand.SelectItemDown;
|
||||||
|
// m_uiKeyMapper[Common.PC_XBOXKEY.MenuBtn] = EnumCommand.Enter;
|
||||||
|
// m_uiKeyMapper[Common.PC_XBOXKEY.ViewBtn] = EnumCommand.Back;
|
||||||
|
// m_uiKeyMapper[Common.PC_XBOXKEY.Y] = EnumCommand.OptionMenu;
|
||||||
|
//}
|
||||||
|
|
||||||
|
//public override object GetConfig() => m_uiKeyMapper;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,22 +1,26 @@
|
|||||||
using Assets.Script.AppMain.AxiInput;
|
using Assets.Script.AppMain.AxiInput;
|
||||||
using AxibugEmuOnline.Client.Common;
|
using Assets.Script.AppMain.AxiInput.Settings;
|
||||||
using System.Collections.Generic;
|
using UnityEngine.UIElements.Experimental;
|
||||||
using UnityEngine;
|
|
||||||
using static AxibugEmuOnline.Client.Manager.MAMEKSingleKeysSeting;
|
|
||||||
|
|
||||||
namespace AxibugEmuOnline.Client.Manager
|
namespace AxibugEmuOnline.Client.Manager
|
||||||
{
|
{
|
||||||
public class AppInput
|
public class AppInput
|
||||||
{
|
{
|
||||||
public MAMEKMultiKeysSetting mame;
|
public XMBMultiKeysSetting xmb;
|
||||||
|
public GamingMultiKeysSetting gaming;
|
||||||
|
public UMAMEMultiKeysSetting mame;
|
||||||
public AppInput()
|
public AppInput()
|
||||||
{
|
{
|
||||||
mame = new MAMEKMultiKeysSetting();
|
xmb = new XMBMultiKeysSetting();
|
||||||
|
gaming = new GamingMultiKeysSetting();
|
||||||
|
mame = new UMAMEMultiKeysSetting();
|
||||||
LoadDefaultSetting();
|
LoadDefaultSetting();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void LoadDefaultSetting()
|
public void LoadDefaultSetting()
|
||||||
{
|
{
|
||||||
|
xmb.LoadDefaultSetting();
|
||||||
|
gaming.LoadDefaultSetting();
|
||||||
mame.LoadDefaultSetting();
|
mame.LoadDefaultSetting();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -32,180 +36,9 @@ namespace AxibugEmuOnline.Client.Manager
|
|||||||
{
|
{
|
||||||
void ClearAll();
|
void ClearAll();
|
||||||
void SetKey(ulong Key, AxiInput input);
|
void SetKey(ulong Key, AxiInput input);
|
||||||
|
bool GetKey(ulong Key);
|
||||||
void ColletAllKey();
|
void ColletAllKey();
|
||||||
bool HadAnyKeyDown();
|
bool HadAnyKeyDown();
|
||||||
}
|
}
|
||||||
|
|
||||||
public class MAMEKMultiKeysSetting : MultiKeysSetting
|
|
||||||
{
|
|
||||||
public MAMEKSingleKeysSeting[] controllers;
|
|
||||||
|
|
||||||
public MAMEKMultiKeysSetting()
|
|
||||||
{
|
|
||||||
controllers = new MAMEKSingleKeysSeting[4];
|
|
||||||
for (int i = 0; i < controllers.Length; i++)
|
|
||||||
controllers[i] = new MAMEKSingleKeysSeting();
|
|
||||||
}
|
|
||||||
|
|
||||||
public bool HadAnyKeyDown(int index)
|
|
||||||
{
|
|
||||||
if (index >= controllers.Length)
|
|
||||||
return false;
|
|
||||||
return controllers[index].HadAnyKeyDown();
|
|
||||||
}
|
|
||||||
public void ClearAll()
|
|
||||||
{
|
|
||||||
controllers[0].ClearAll();
|
|
||||||
controllers[1].ClearAll();
|
|
||||||
controllers[2].ClearAll();
|
|
||||||
controllers[3].ClearAll();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public 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)MAMEKSingleKey.GAMESTART, AxiInputEx.ByKeyCode(KeyCode.Alpha1));
|
|
||||||
controllers[0].SetKey((ulong)MAMEKSingleKey.INSERT_COIN, AxiInputEx.ByKeyCode(KeyCode.Alpha5));
|
|
||||||
|
|
||||||
controllers[0].SetKey((ulong)MAMEKSingleKey.UP, AxiInputEx.ByKeyCode(KeyCode.W));
|
|
||||||
controllers[0].SetKey((ulong)MAMEKSingleKey.DOWN, AxiInputEx.ByKeyCode(KeyCode.S));
|
|
||||||
controllers[0].SetKey((ulong)MAMEKSingleKey.LEFT, AxiInputEx.ByKeyCode(KeyCode.A));
|
|
||||||
controllers[0].SetKey((ulong)MAMEKSingleKey.RIGHT, AxiInputEx.ByKeyCode(KeyCode.D));
|
|
||||||
|
|
||||||
|
|
||||||
controllers[0].SetKey((ulong)MAMEKSingleKey.UP, AxiInputEx.ByKeyCode(KeyCode.G));
|
|
||||||
controllers[0].SetKey((ulong)MAMEKSingleKey.DOWN, AxiInputEx.ByKeyCode(KeyCode.V));
|
|
||||||
controllers[0].SetKey((ulong)MAMEKSingleKey.LEFT, AxiInputEx.ByKeyCode(KeyCode.C));
|
|
||||||
controllers[0].SetKey((ulong)MAMEKSingleKey.RIGHT, AxiInputEx.ByKeyCode(KeyCode.B));
|
|
||||||
|
|
||||||
controllers[0].SetKey((ulong)MAMEKSingleKey.BTN_A, AxiInputEx.ByKeyCode(KeyCode.J));
|
|
||||||
controllers[0].SetKey((ulong)MAMEKSingleKey.BTN_B, AxiInputEx.ByKeyCode(KeyCode.K));
|
|
||||||
controllers[0].SetKey((ulong)MAMEKSingleKey.BTN_C, AxiInputEx.ByKeyCode(KeyCode.L));
|
|
||||||
controllers[0].SetKey((ulong)MAMEKSingleKey.BTN_D, AxiInputEx.ByKeyCode(KeyCode.U));
|
|
||||||
controllers[0].SetKey((ulong)MAMEKSingleKey.BTN_E, AxiInputEx.ByKeyCode(KeyCode.I));
|
|
||||||
controllers[0].SetKey((ulong)MAMEKSingleKey.BTN_F, AxiInputEx.ByKeyCode(KeyCode.O));
|
|
||||||
|
|
||||||
//Axis
|
|
||||||
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));
|
|
||||||
|
|
||||||
//P1 UGUI
|
|
||||||
controllers[0].SetKey((ulong)MAMEKSingleKey.GAMESTART, AxiInputEx.ByUGUIBtn(AxiInputUGuiBtnType.POTION_1));
|
|
||||||
controllers[0].SetKey((ulong)MAMEKSingleKey.INSERT_COIN, AxiInputEx.ByUGUIBtn(AxiInputUGuiBtnType.POTION_2));
|
|
||||||
controllers[0].SetKey((ulong)MAMEKSingleKey.UP, AxiInputEx.ByUGUIBtn(AxiInputUGuiBtnType.UP));
|
|
||||||
controllers[0].SetKey((ulong)MAMEKSingleKey.DOWN, AxiInputEx.ByUGUIBtn(AxiInputUGuiBtnType.DOWN));
|
|
||||||
controllers[0].SetKey((ulong)MAMEKSingleKey.LEFT, AxiInputEx.ByUGUIBtn(AxiInputUGuiBtnType.LEFT));
|
|
||||||
controllers[0].SetKey((ulong)MAMEKSingleKey.RIGHT, AxiInputEx.ByUGUIBtn(AxiInputUGuiBtnType.RIGHT));
|
|
||||||
controllers[0].SetKey((ulong)MAMEKSingleKey.BTN_A, AxiInputEx.ByUGUIBtn(AxiInputUGuiBtnType.BTN_1));
|
|
||||||
controllers[0].SetKey((ulong)MAMEKSingleKey.BTN_B, AxiInputEx.ByUGUIBtn(AxiInputUGuiBtnType.BTN_2));
|
|
||||||
controllers[0].SetKey((ulong)MAMEKSingleKey.BTN_C, AxiInputEx.ByUGUIBtn(AxiInputUGuiBtnType.BTN_3));
|
|
||||||
controllers[0].SetKey((ulong)MAMEKSingleKey.BTN_D, AxiInputEx.ByUGUIBtn(AxiInputUGuiBtnType.BTN_4));
|
|
||||||
controllers[0].SetKey((ulong)MAMEKSingleKey.BTN_E, AxiInputEx.ByUGUIBtn(AxiInputUGuiBtnType.BTN_5));
|
|
||||||
controllers[0].SetKey((ulong)MAMEKSingleKey.BTN_F, AxiInputEx.ByUGUIBtn(AxiInputUGuiBtnType.BTN_6));
|
|
||||||
|
|
||||||
controllers[0].ColletAllKey();
|
|
||||||
#endregion
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public class MAMEKSingleKeysSeting : SingleKeysSetting
|
|
||||||
{
|
|
||||||
public enum MAMEKSingleKey
|
|
||||||
{
|
|
||||||
INSERT_COIN,
|
|
||||||
GAMESTART,
|
|
||||||
UP,
|
|
||||||
DOWN,
|
|
||||||
LEFT,
|
|
||||||
RIGHT,
|
|
||||||
BTN_A,
|
|
||||||
BTN_B,
|
|
||||||
BTN_C,
|
|
||||||
BTN_D,
|
|
||||||
BTN_E,
|
|
||||||
BTN_F
|
|
||||||
}
|
|
||||||
|
|
||||||
Dictionary<MAMEKSingleKey, List<AxiInput>> DictSkey2AxiInput = new Dictionary<MAMEKSingleKey, List<AxiInput>>();
|
|
||||||
AxiInput[] AxiInputArr = null;
|
|
||||||
|
|
||||||
public void SetKey(ulong Key, AxiInput input)
|
|
||||||
{
|
|
||||||
List<AxiInput> list;
|
|
||||||
if (!DictSkey2AxiInput.TryGetValue((MAMEKSingleKey)Key, out list))
|
|
||||||
list = DictSkey2AxiInput[(MAMEKSingleKey)Key] = ObjectPoolAuto.AcquireList<AxiInput>();
|
|
||||||
list.Add(input);
|
|
||||||
}
|
|
||||||
|
|
||||||
public bool GetKey(MAMEKSingleKey Key)
|
|
||||||
{
|
|
||||||
List<AxiInput> list;
|
|
||||||
if (!DictSkey2AxiInput.TryGetValue(Key, out list))
|
|
||||||
return false;
|
|
||||||
for (int i = 0; i < list.Count; i++)
|
|
||||||
{
|
|
||||||
if (list[i].IsKey())
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void ClearAll()
|
|
||||||
{
|
|
||||||
foreach (List<AxiInput> singlelist in DictSkey2AxiInput.Values)
|
|
||||||
ObjectPoolAuto.Release(singlelist);
|
|
||||||
DictSkey2AxiInput.Clear();
|
|
||||||
AxiInputArr = null;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void ColletAllKey()
|
|
||||||
{
|
|
||||||
List<AxiInput> list = ObjectPoolAuto.AcquireList<AxiInput>();
|
|
||||||
foreach (List<AxiInput> singlelist in DictSkey2AxiInput.Values)
|
|
||||||
list.AddRange(singlelist);
|
|
||||||
AxiInputArr = list.ToArray();
|
|
||||||
ObjectPoolAuto.Release(list);
|
|
||||||
}
|
|
||||||
|
|
||||||
public bool HadAnyKeyDown()
|
|
||||||
{
|
|
||||||
if (AxiInputArr == null)
|
|
||||||
return false;
|
|
||||||
|
|
||||||
for (int i = 0; AxiInputArr.Length > 0; i++)
|
|
||||||
{
|
|
||||||
if (AxiInputArr[i].IsKey())
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
}
|
@ -1,27 +1,53 @@
|
|||||||
using System.Collections.Generic;
|
using AxibugEmuOnline.Client.ClientCore;
|
||||||
|
using AxibugEmuOnline.Client.Manager;
|
||||||
|
using System.Collections.Generic;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
using static UnityEditor.Progress;
|
||||||
|
|
||||||
namespace AxibugEmuOnline.Client
|
namespace AxibugEmuOnline.Client
|
||||||
{
|
{
|
||||||
public class CommandListener : ICommandListener
|
public class CommandListener : ICommandListener
|
||||||
{
|
{
|
||||||
Dictionary<KeyCode, EnumCommand> m_keyMapper = new Dictionary<KeyCode, EnumCommand>();
|
//Dictionary<KeyCode, EnumCommand> m_keyMapper = new Dictionary<KeyCode, EnumCommand>();
|
||||||
|
SingleKeysSetting singleKeysSetting;
|
||||||
|
Dictionary<EnumCommand, bool> m_dictLastState = new Dictionary<EnumCommand, bool>();
|
||||||
|
EnumCommand[] m_checkCmds;
|
||||||
List<CommandState> m_commands = new List<CommandState>();
|
List<CommandState> m_commands = new List<CommandState>();
|
||||||
IEnumerable<CommandState> GetCommand()
|
IEnumerable<CommandState> GetCommand()
|
||||||
{
|
{
|
||||||
m_commands.Clear();
|
m_commands.Clear();
|
||||||
foreach (var item in m_keyMapper)
|
//foreach (var item in m_keyMapper)
|
||||||
|
//{
|
||||||
|
// if (Input.GetKeyDown(item.Key)) m_commands.Add(new CommandState { Cmd = item.Value, Cancel = false });
|
||||||
|
// if (Input.GetKeyUp(item.Key)) m_commands.Add(new CommandState { Cmd = item.Value, Cancel = true });
|
||||||
|
//}
|
||||||
|
if (m_checkCmds != null)
|
||||||
{
|
{
|
||||||
if (Input.GetKeyDown(item.Key)) m_commands.Add(new CommandState { Cmd = item.Value, Cancel = false });
|
foreach (var cmd in m_checkCmds)
|
||||||
if (Input.GetKeyUp(item.Key)) m_commands.Add(new CommandState { Cmd = item.Value, Cancel = true });
|
{
|
||||||
|
bool oldstate = m_dictLastState[cmd];
|
||||||
|
bool newstate = singleKeysSetting.GetKey((ulong)cmd);
|
||||||
|
m_dictLastState[cmd] = newstate;
|
||||||
|
if (oldstate != newstate)
|
||||||
|
{
|
||||||
|
m_commands.Add(new CommandState { Cmd = cmd, Cancel = !newstate });
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return m_commands;
|
return m_commands;
|
||||||
}
|
}
|
||||||
public void ApplyKeyMapper(IKeyMapperChanger changer)
|
public void ApplyKeyMapper(IKeyMapperChanger changer)
|
||||||
{
|
{
|
||||||
var cfg = (Dictionary<KeyCode, EnumCommand>)changer.GetConfig();
|
//var cfg = (Dictionary<KeyCode, EnumCommand>)changer.GetConfig();
|
||||||
m_keyMapper = cfg;
|
singleKeysSetting = changer.GetKeySetting();
|
||||||
|
m_dictLastState.Clear();
|
||||||
|
EnumCommand[] arr = changer.GetConfig();
|
||||||
|
for (int i = 0; i < arr.Length; i++)
|
||||||
|
{
|
||||||
|
m_dictLastState[arr[i]] = false;
|
||||||
|
}
|
||||||
|
m_checkCmds = arr;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Update(IEnumerable<CommandExecuter> executers)
|
public void Update(IEnumerable<CommandExecuter> executers)
|
||||||
@ -30,6 +56,7 @@ namespace AxibugEmuOnline.Client
|
|||||||
{
|
{
|
||||||
foreach (var executer in executers)
|
foreach (var executer in executers)
|
||||||
{
|
{
|
||||||
|
App.log.Debug($"{cmd.Cmd}|{cmd.Cancel}");
|
||||||
executer.ExecuteCommand(cmd.Cmd, cmd.Cancel);
|
executer.ExecuteCommand(cmd.Cmd, cmd.Cancel);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,11 +1,13 @@
|
|||||||
using System.Collections.Generic;
|
using AxibugEmuOnline.Client.Manager;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
|
||||||
namespace AxibugEmuOnline.Client
|
namespace AxibugEmuOnline.Client
|
||||||
{
|
{
|
||||||
public interface IKeyMapperChanger
|
public interface IKeyMapperChanger
|
||||||
{
|
{
|
||||||
string Name { get; }
|
string Name { get; }
|
||||||
object GetConfig();
|
EnumCommand[] GetConfig();
|
||||||
|
SingleKeysSetting GetKeySetting();
|
||||||
}
|
}
|
||||||
public interface ICommandListener
|
public interface ICommandListener
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user