From 4006438d930dc008bf53f2fcbb65cd651cefe8ea Mon Sep 17 00:00:00 2001 From: WYH2004 <32890512+WYH2004-MC@users.noreply.github.com> Date: Sun, 13 Oct 2024 23:36:28 +0800 Subject: [PATCH] [+] TouchToButtonInput On Aquamai (#58) Co-authored-by: Clansty --- AquaMai/AquaMai.toml | 2 ++ AquaMai/AquaMai.zh.toml | 2 ++ AquaMai/Config.cs | 1 + AquaMai/UX/TouchToButtonInput.cs | 50 ++++++++++++++++++++++++++++++++ 4 files changed, 55 insertions(+) create mode 100644 AquaMai/UX/TouchToButtonInput.cs diff --git a/AquaMai/AquaMai.toml b/AquaMai/AquaMai.toml index 0316f9f0..c053743a 100644 --- a/AquaMai/AquaMai.toml +++ b/AquaMai/AquaMai.toml @@ -56,6 +56,8 @@ HideSelfMadeCharts=true CustomFont=false # Provide the ability to use custom note skins (advanced feature) CustomNoteSkin=false +# Map touch actions to buttons +TouchToButtonInput=false # Delayed the animation of the song start screen # Hide "TRACK X" text and DX/Standard chart display box # For recording chart confirmation diff --git a/AquaMai/AquaMai.zh.toml b/AquaMai/AquaMai.zh.toml index dfea5712..d75dcc3c 100644 --- a/AquaMai/AquaMai.zh.toml +++ b/AquaMai/AquaMai.zh.toml @@ -65,6 +65,8 @@ HideSelfMadeCharts=true CustomFont=false # 提供自定义音符皮肤的能力(高级功能) CustomNoteSkin=false +# 映射触摸操作至实体按键 +TouchToButtonInput=false # 推迟了歌曲开始界面的动画 # 隐藏“TRACK X”字样和 DX/标准谱面的显示框 # 录制谱面确认用 diff --git a/AquaMai/Config.cs b/AquaMai/Config.cs index de88c4d0..6aae80c8 100644 --- a/AquaMai/Config.cs +++ b/AquaMai/Config.cs @@ -40,6 +40,7 @@ namespace AquaMai public bool HideSelfMadeCharts { get; set; } public bool CustomFont { get; set; } public bool CustomNoteSkin { get; set; } + public bool TouchToButtonInput { get; set; } public bool TrackStartProcessTweak { get; set; } public bool HideHanabi { get; set; } public string CustomVersionString { get; set; } = ""; diff --git a/AquaMai/UX/TouchToButtonInput.cs b/AquaMai/UX/TouchToButtonInput.cs new file mode 100644 index 00000000..8e62c82d --- /dev/null +++ b/AquaMai/UX/TouchToButtonInput.cs @@ -0,0 +1,50 @@ +using HarmonyLib; +using Manager; +using Process; +using static Manager.InputManager; + +namespace AquaMai.UX; + +public class TouchToButtonInput +{ + private static bool _isPlaying = false; + + [HarmonyPostfix] + [HarmonyPatch(typeof(GameProcess),"OnUpdate")] + public static void OnUpdate(GameProcess __instance) + { + var notesManager = new NotesManager(); + _isPlaying = notesManager.IsPlaying(); + } + + [HarmonyPostfix] + [HarmonyPatch(typeof(Manager.InputManager), "GetButtonDown")] + public static void GetButtonDown(ref bool __result, int monitorId, ButtonSetting button) + { + if (_isPlaying || __result) return; + if (button.ToString().StartsWith("Button")) + { + __result = GetTouchPanelAreaDown(monitorId, (TouchPanelArea)button); + } + else if (button.ToString().Equals("Select")) + { + __result = GetTouchPanelAreaLongPush(monitorId, TouchPanelArea.C1, 500L) || GetTouchPanelAreaLongPush(monitorId, TouchPanelArea.C2, 500L); + } + } + + [HarmonyPostfix] + [HarmonyPatch(typeof(Manager.InputManager), "GetButtonPush")] + public static void GetButtonPush(ref bool __result, int monitorId, ButtonSetting button) + { + if (_isPlaying || __result) return; + if (button.ToString().StartsWith("Button")) __result = GetTouchPanelAreaPush(monitorId, (TouchPanelArea)button); + } + + [HarmonyPostfix] + [HarmonyPatch(typeof(Manager.InputManager), "GetButtonLongPush")] + public static void GetButtonLongPush(ref bool __result, int monitorId, ButtonSetting button, long msec) + { + if (_isPlaying || __result) return; + if (button.ToString().StartsWith("Button")) __result = GetTouchPanelAreaLongPush(monitorId, (TouchPanelArea)button, msec); + } +} \ No newline at end of file