diff --git a/AquaMai/AquaMai.csproj b/AquaMai/AquaMai.csproj index fbf2fafa..b467f26d 100644 --- a/AquaMai/AquaMai.csproj +++ b/AquaMai/AquaMai.csproj @@ -305,6 +305,7 @@ + diff --git a/AquaMai/AquaMai.toml b/AquaMai/AquaMai.toml index ce63191e..6b7387ca 100644 --- a/AquaMai/AquaMai.toml +++ b/AquaMai/AquaMai.toml @@ -84,3 +84,49 @@ JudgeAdjustA=0.0 JudgeAdjustB=0.0 # Touch screen delay, unit is milliseconds, one second = 1000 milliseconds. Must be an integer TouchDelay=0 + +[TouchSensitivity] +# Enable custom sensitivity +# When enabled, the settings in Test mode will not take effect +# When disabled, the settings in Test mode can still be used +Enable=false +# Sensitivity adjustments in Test mode are not linear +# Default sensitivity in area A: 90, 80, 70, 60, 50, 40, 30, 26, 23, 20, 10 +# Default sensitivity in other areas: 70, 60, 50, 40, 30, 20, 15, 10, 5, 1, 1 +# A setting of 0 in Test mode corresponds to 40, 20 here, -5 corresponds to 90, 70, +5 corresponds to 10, 1 +# The higher the number in Test mode, the lower the number here, resulting in higher sensitivity for official machines +# For ADX, the sensitivity is reversed, so the higher the number here, the higher the sensitivity +A1=40 +A2=40 +A3=40 +A4=40 +A5=40 +A6=40 +A7=40 +A8=40 +B1=20 +B2=20 +B3=20 +B4=20 +B5=20 +B6=20 +B7=20 +B8=20 +C1=20 +C2=20 +D1=20 +D2=20 +D3=20 +D4=20 +D5=20 +D6=20 +D7=20 +D8=20 +E1=20 +E2=20 +E3=20 +E4=20 +E5=20 +E6=20 +E7=20 +E8=20 diff --git a/AquaMai/AquaMai.zh.toml b/AquaMai/AquaMai.zh.toml index bba8df4a..8622c96e 100644 --- a/AquaMai/AquaMai.zh.toml +++ b/AquaMai/AquaMai.zh.toml @@ -100,3 +100,49 @@ JudgeAdjustA=0.0 JudgeAdjustB=0.0 # 触摸屏延迟,单位为毫秒,一秒 = 1000 毫秒。必须是整数 TouchDelay=0 + +[TouchSensitivity] +# 是否启用自定义灵敏度 +# 这里启用之后 Test 里的就不再起作用了 +# 这里禁用之后就还是可以用 Test 里的调 +Enable=false +# 在 Test 模式下调整的灵敏度不是线性的 +# A 区默认灵敏度 90, 80, 70, 60, 50, 40, 30, 26, 23, 20, 10 +# 其他区域默认灵敏度 70, 60, 50, 40, 30, 20, 15, 10, 5, 1, 1 +# Test 里设置的 0 对应的是 40, 20 这一档,-5 是 90, 70,+5 是 10, 1 +# Test 里的数字越大,这里的数字越小,对于官机来说,灵敏度更大 +# 而 ADX 的灵敏度是反的,所以对于 ADX,这里的数字越大,灵敏度越大 +A1=40 +A2=40 +A3=40 +A4=40 +A5=40 +A6=40 +A7=40 +A8=40 +B1=20 +B2=20 +B3=20 +B4=20 +B5=20 +B6=20 +B7=20 +B8=20 +C1=20 +C2=20 +D1=20 +D2=20 +D3=20 +D4=20 +D5=20 +D6=20 +D7=20 +D8=20 +E1=20 +E2=20 +E3=20 +E4=20 +E5=20 +E6=20 +E7=20 +E8=20 diff --git a/AquaMai/Config.cs b/AquaMai/Config.cs index df3d4e91..7cd7c8e6 100644 --- a/AquaMai/Config.cs +++ b/AquaMai/Config.cs @@ -6,11 +6,12 @@ namespace AquaMai [SuppressMessage("ReSharper", "ClassNeverInstantiated.Global")] public class Config { - public UXConfig UX { get; set; } - public CheatConfig Cheat { get; set; } - public PerformanceConfig Performance { get; set; } - public FixConfig Fix { get; set; } - public UtilsConfig Utils { get; set; } + public UXConfig UX { get; set; } = new(); + public CheatConfig Cheat { get; set; } = new(); + public PerformanceConfig Performance { get; set; } = new(); + public FixConfig Fix { get; set; } = new(); + public UtilsConfig Utils { get; set; } = new(); + public TouchSensitivityConfig TouchSensitivity { get; set; } = new(); public class CheatConfig { @@ -66,5 +67,44 @@ namespace AquaMai public float JudgeAdjustB { get; set; } public int TouchDelay { get; set; } } + + public class TouchSensitivityConfig + { + public bool Enable { get; set; } + public byte A1 { get; set; } = 40; + public byte A2 { get; set; } = 40; + public byte A3 { get; set; } = 40; + public byte A4 { get; set; } = 40; + public byte A5 { get; set; } = 40; + public byte A6 { get; set; } = 40; + public byte A7 { get; set; } = 40; + public byte A8 { get; set; } = 40; + public byte B1 { get; set; } = 20; + public byte B2 { get; set; } = 20; + public byte B3 { get; set; } = 20; + public byte B4 { get; set; } = 20; + public byte B5 { get; set; } = 20; + public byte B6 { get; set; } = 20; + public byte B7 { get; set; } = 20; + public byte B8 { get; set; } = 20; + public byte C1 { get; set; } = 20; + public byte C2 { get; set; } = 20; + public byte D1 { get; set; } = 20; + public byte D2 { get; set; } = 20; + public byte D3 { get; set; } = 20; + public byte D4 { get; set; } = 20; + public byte D5 { get; set; } = 20; + public byte D6 { get; set; } = 20; + public byte D7 { get; set; } = 20; + public byte D8 { get; set; } = 20; + public byte E1 { get; set; } = 20; + public byte E2 { get; set; } = 20; + public byte E3 { get; set; } = 20; + public byte E4 { get; set; } = 20; + public byte E5 { get; set; } = 20; + public byte E6 { get; set; } = 20; + public byte E7 { get; set; } = 20; + public byte E8 { get; set; } = 20; + } } } diff --git a/AquaMai/TouchSensitivity/Enable.cs b/AquaMai/TouchSensitivity/Enable.cs new file mode 100644 index 00000000..c7d4b1f6 --- /dev/null +++ b/AquaMai/TouchSensitivity/Enable.cs @@ -0,0 +1,25 @@ +using System.Collections.Generic; +using HarmonyLib; +using IO; +using Manager; +using MelonLoader; + +namespace AquaMai.TouchSensitivity; + +public class Enable +{ + [HarmonyPrefix] + [HarmonyPatch(typeof(NewTouchPanel), "SetTouchPanelSensitivity")] + public static void SetTouchPanelSensitivityPrefix(List sensitivity) + { + var configType = AquaMai.AppConfig.TouchSensitivity.GetType(); + for (var i = 0; i < 34; i++) + { + var area = (InputManager.TouchPanelArea)i; + var field = configType.GetProperty(area.ToString()); + var value = (byte)field.GetValue(AquaMai.AppConfig.TouchSensitivity); + sensitivity[i] = value; + } + MelonLogger.Msg("[TouchSensitivity] Applied"); + } +}