From 9605264b9a605dfc1b716370d01384a30890418e Mon Sep 17 00:00:00 2001 From: Clansty Date: Fri, 27 Sep 2024 19:13:53 +0800 Subject: [PATCH] [RF] Move some settings to TimeSavingConfig --- AquaMai/AquaMai.csproj | 13 +++-- AquaMai/AquaMai.toml | 26 +++++---- AquaMai/AquaMai.zh.toml | 33 ++++++----- AquaMai/Config.cs | 20 ++++--- .../TimeSaving/IWontTapOrSlideVigorously.cs | 15 +++++ .../ImproveLoadSpeed.cs | 4 +- AquaMai/{UX => TimeSaving}/SkipEventInfo.cs | 4 +- AquaMai/TimeSaving/SkipGameOverScreen.cs | 26 +++++++++ .../SkipToMusicSelection.cs | 4 +- .../{UX => TimeSaving}/SkipWarningScreen.cs | 56 +++++++++---------- AquaMai/UX/ExtendTimer.cs | 26 --------- 11 files changed, 131 insertions(+), 96 deletions(-) create mode 100644 AquaMai/TimeSaving/IWontTapOrSlideVigorously.cs rename AquaMai/{Performance => TimeSaving}/ImproveLoadSpeed.cs (95%) rename AquaMai/{UX => TimeSaving}/SkipEventInfo.cs (95%) create mode 100644 AquaMai/TimeSaving/SkipGameOverScreen.cs rename AquaMai/{UX => TimeSaving}/SkipToMusicSelection.cs (97%) rename AquaMai/{UX => TimeSaving}/SkipWarningScreen.cs (92%) diff --git a/AquaMai/AquaMai.csproj b/AquaMai/AquaMai.csproj index b467f26d..84782a7a 100644 --- a/AquaMai/AquaMai.csproj +++ b/AquaMai/AquaMai.csproj @@ -302,9 +302,14 @@ - + + + + + + @@ -322,9 +327,6 @@ - - - @@ -338,6 +340,9 @@ + + + diff --git a/AquaMai/AquaMai.toml b/AquaMai/AquaMai.toml index 6b7387ca..2029efba 100644 --- a/AquaMai/AquaMai.toml +++ b/AquaMai/AquaMai.toml @@ -14,12 +14,8 @@ DebugFeature=true # =================================== # UX: User Experience Improvements [UX] -# Skip the warning screen and logo shown after the POST sequence -SkipWarningScreen=true # Single player: Show 1P only, at the center of the screen SinglePlayer=true -# !!EXPERIMENTAL!! Skip from the card-scanning screen directly to music selection screen -SkipToMusicSelection=false # Set the version string displayed at the top-right corner of the screen CustomVersionString="" # Deprecated: Use `LoadAssetsPng` instead @@ -33,8 +29,6 @@ LoadLocalBga=true QuickSkip=true # Add ".ab" image resources without the need of rebuilding a manifest LoadAssetBundleWithoutManifest=true -# Skip "New Event" and "Information" text boxes for new users -SkipEventInfo=true # Random BGM, put Mai2Cue.{acb,awb} of old version of the game in `LocalAssets\Mai2Cue` and rename them # Do not enable when SinglePlayer is off RandomBgm=false @@ -59,10 +53,6 @@ HideSelfMadeCharts=true # Show detail of selected song in music selection screen SelectionDetail=true -[Performance] -# Disable some useless delays to speed up the game boot process -ImproveLoadSpeed=true - [Fix] # Allow login with higher data version SkipVersionCheck=true @@ -85,6 +75,22 @@ JudgeAdjustB=0.0 # Touch screen delay, unit is milliseconds, one second = 1000 milliseconds. Must be an integer TouchDelay=0 +# =================================== +# Save some potentially unnecessary time +[TimeSaving] +# Skip the warning screen and logo shown after the POST sequence +SkipWarningScreen=true +# Disable some useless delays to speed up the game boot process +ImproveLoadSpeed=true +# Directly enter the song selection screen after login +SkipToMusicSelection=false +# Skip possible prompts like "New area discovered", "New songs added", "There are events" during game login/registration +SkipEventInfo=true +# Skip the "Do not tap or slide vigorously" screen, immediately proceed to the next screen once data is loaded +IWontTapOrSlideVigorously=true +# Skip the "Goodbye" screen at the end of the game +SkipGameOverScreen=true + [TouchSensitivity] # Enable custom sensitivity # When enabled, the settings in Test mode will not take effect diff --git a/AquaMai/AquaMai.zh.toml b/AquaMai/AquaMai.zh.toml index 8622c96e..50811964 100644 --- a/AquaMai/AquaMai.zh.toml +++ b/AquaMai/AquaMai.zh.toml @@ -1,4 +1,7 @@ +# 试试使用 MaiChartManager 图形化配置 AquaMai 吧! +# https://github.com/clansty/MaiChartManager + # =================================== # “作弊”功能 [Cheat] @@ -14,12 +17,8 @@ DebugFeature=true # =================================== # 用户体验改进 [UX] -# 跳过日服启动时候的 WARNING 界面 -SkipWarningScreen=true # 单人模式,不显示 2P SinglePlayer=true -# 登录完成后直接进入选歌界面 -SkipToMusicSelection=false # 把右上角的版本更改为自定义文本 CustomVersionString="" # 已弃用,请使用 LoadAssetsPng @@ -38,8 +37,6 @@ QuickSkip=true # 优化图片资源的加载,就算没有 AssetBundleImages.manifest 也可以正常加载 ab 格式的图片资源 # 导入了删除曲包之类的话,应该需要开启这个 LoadAssetBundleWithoutManifest=true -# 跳过登录 / 注册游戏时候可能的 “发现了新的区域哟” “乐曲增加” “有活动哟” 之类的提示 -SkipEventInfo=true # 在 `LocalAssets\Mai2Cue` 这个目录下放置了旧版游戏的 Mai2Cue.{acb,awb} 并重命名的话,可以在播放游戏 BGM 的时候随机播放这里面的旧版游戏 BGM # 和 2P 模式有冲突,如果你没有开启 'SinglePlayer' 的话,请关闭这个 RandomBgm=false @@ -65,13 +62,6 @@ HideSelfMadeCharts=true # 选歌界面显示选择的歌曲的详情 SelectionDetail=true -# =================================== -# 一些性能优化 -[Performance] -# 在自检界面,每个屏幕结束的时候都会等两秒才进入下一个屏幕,很浪费时间 -# 开了这个选项之后就不会等了 -ImproveLoadSpeed=true - # =================================== # 修复一些潜在的问题 [Fix] @@ -101,6 +91,23 @@ JudgeAdjustB=0.0 # 触摸屏延迟,单位为毫秒,一秒 = 1000 毫秒。必须是整数 TouchDelay=0 +# =================================== +# 节省一些不知道有用没用的时间 +[TimeSaving] +# 跳过日服启动时候的 WARNING 界面 +SkipWarningScreen=true +# 在自检界面,每个屏幕结束的时候都会等两秒才进入下一个屏幕,很浪费时间 +# 开了这个选项之后就不会等了 +ImproveLoadSpeed=true +# 登录完成后直接进入选歌界面 +SkipToMusicSelection=false +# 跳过登录 / 注册游戏时候可能的 “发现了新的区域哟” “乐曲增加” “有活动哟” 之类的提示 +SkipEventInfo=true +# 跳过“不要大力拍打或滑动哦”这个界面,数据一旦加载完就立马进入下一个界面 +IWontTapOrSlideVigorously=true +# 跳过游戏结束的“再见”界面 +SkipGameOverScreen=true + [TouchSensitivity] # 是否启用自定义灵敏度 # 这里启用之后 Test 里的就不再起作用了 diff --git a/AquaMai/Config.cs b/AquaMai/Config.cs index 927cf329..7874e1f6 100644 --- a/AquaMai/Config.cs +++ b/AquaMai/Config.cs @@ -8,9 +8,9 @@ public class Config { 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 TimeSavingConfig TimeSaving { get; set; } = new(); public TouchSensitivityConfig TouchSensitivity { get; set; } = new(); public class CheatConfig @@ -23,9 +23,7 @@ public class CheatConfig public class UXConfig { - public bool SkipWarningScreen { get; set; } public bool SinglePlayer { get; set; } - public bool SkipToMusicSelection { get; set; } public bool LoadAssetsPng { get; set; } public bool LoadJacketPng { get; set; } public bool LoadAssetBundleWithoutManifest { get; set; } @@ -33,7 +31,6 @@ public class UXConfig public bool RandomBgm { get; set; } public bool DemoMaster { get; set; } public bool ExtendTimer { get; set; } - public bool SkipEventInfo { get; set; } public bool ImmediateSave { get; set; } public bool LoadLocalBga { get; set; } public bool TestProof { get; set; } @@ -45,11 +42,6 @@ public class UXConfig public string ExecOnEntry { get; set; } = ""; } - public class PerformanceConfig - { - public bool ImproveLoadSpeed { get; set; } - } - public class FixConfig { public bool SkipVersionCheck { get; set; } @@ -68,6 +60,16 @@ public class UtilsConfig public int TouchDelay { get; set; } } + public class TimeSavingConfig + { + public bool SkipWarningScreen { get; set; } + public bool ImproveLoadSpeed { get; set; } + public bool SkipToMusicSelection { get; set; } + public bool SkipEventInfo { get; set; } + public bool IWontTapOrSlideVigorously { get; set; } + public bool SkipGameOverScreen { get; set; } + } + public class TouchSensitivityConfig { public bool Enable { get; set; } diff --git a/AquaMai/TimeSaving/IWontTapOrSlideVigorously.cs b/AquaMai/TimeSaving/IWontTapOrSlideVigorously.cs new file mode 100644 index 00000000..3f6e9d32 --- /dev/null +++ b/AquaMai/TimeSaving/IWontTapOrSlideVigorously.cs @@ -0,0 +1,15 @@ +using HarmonyLib; +using Monitor; + +namespace AquaMai.TimeSaving; + +public class IWontTapOrSlideVigorously +{ + [HarmonyPrefix] + [HarmonyPatch(typeof(PlInformationMonitor), "IsPlayPlInfoEnd")] + public static bool Patch(ref bool __result) + { + __result = true; + return false; + } +} diff --git a/AquaMai/Performance/ImproveLoadSpeed.cs b/AquaMai/TimeSaving/ImproveLoadSpeed.cs similarity index 95% rename from AquaMai/Performance/ImproveLoadSpeed.cs rename to AquaMai/TimeSaving/ImproveLoadSpeed.cs index 31b5ba82..359cc6f3 100644 --- a/AquaMai/Performance/ImproveLoadSpeed.cs +++ b/AquaMai/TimeSaving/ImproveLoadSpeed.cs @@ -2,7 +2,7 @@ using HarmonyLib; using Process; -namespace AquaMai.Performance +namespace AquaMai.TimeSaving { public class ImproveLoadSpeed { @@ -23,4 +23,4 @@ public static void PreStartupUpdate(byte ____state, ref Stopwatch ___timer) } } } -} \ No newline at end of file +} diff --git a/AquaMai/UX/SkipEventInfo.cs b/AquaMai/TimeSaving/SkipEventInfo.cs similarity index 95% rename from AquaMai/UX/SkipEventInfo.cs rename to AquaMai/TimeSaving/SkipEventInfo.cs index 908aaff1..3dd7ef24 100644 --- a/AquaMai/UX/SkipEventInfo.cs +++ b/AquaMai/TimeSaving/SkipEventInfo.cs @@ -3,7 +3,7 @@ using Process; using Process.Information; -namespace AquaMai.UX +namespace AquaMai.TimeSaving { public class SkipEventInfo { @@ -21,4 +21,4 @@ public static void RegionalSelectProcessPreStart(ref Queue[] ____discoverLi ____discoverList = new Queue[] { new Queue(), new Queue() }; } } -} \ No newline at end of file +} diff --git a/AquaMai/TimeSaving/SkipGameOverScreen.cs b/AquaMai/TimeSaving/SkipGameOverScreen.cs new file mode 100644 index 00000000..17e65c89 --- /dev/null +++ b/AquaMai/TimeSaving/SkipGameOverScreen.cs @@ -0,0 +1,26 @@ +using HarmonyLib; +using Monitor; +using Process; + +namespace AquaMai.TimeSaving; + +public class SkipGameOverScreen +{ + [HarmonyPrefix] + [HarmonyPatch(typeof(GameOverMonitor), "IsPlayEnd")] + public static bool GameOverMonitorPlayEnd(ref bool __result) + { + __result = true; + return false; + } + + [HarmonyPrefix] + [HarmonyPatch(typeof(GameOverProcess), "OnUpdate")] + public static void GameOverProcessOnUpdate(ref GameOverProcess.GameOverSequence ____state) + { + if (____state == GameOverProcess.GameOverSequence.SkyChange) + { + ____state = GameOverProcess.GameOverSequence.Disp; + } + } +} diff --git a/AquaMai/UX/SkipToMusicSelection.cs b/AquaMai/TimeSaving/SkipToMusicSelection.cs similarity index 97% rename from AquaMai/UX/SkipToMusicSelection.cs rename to AquaMai/TimeSaving/SkipToMusicSelection.cs index 7f73b439..7f134e80 100644 --- a/AquaMai/UX/SkipToMusicSelection.cs +++ b/AquaMai/TimeSaving/SkipToMusicSelection.cs @@ -5,7 +5,7 @@ using Process; using Process.Information; -namespace AquaMai.UX +namespace AquaMai.TimeSaving { public class SkipToMusicSelection { @@ -35,4 +35,4 @@ public static void MapResultMonitorPreInitialize(int monIndex) userData.MapList.Clear(); } } -} \ No newline at end of file +} diff --git a/AquaMai/UX/SkipWarningScreen.cs b/AquaMai/TimeSaving/SkipWarningScreen.cs similarity index 92% rename from AquaMai/UX/SkipWarningScreen.cs rename to AquaMai/TimeSaving/SkipWarningScreen.cs index dd34bc0f..3b0a6428 100644 --- a/AquaMai/UX/SkipWarningScreen.cs +++ b/AquaMai/TimeSaving/SkipWarningScreen.cs @@ -1,28 +1,28 @@ -using HarmonyLib; -using Monitor; - -namespace AquaMai.UX -{ - public class SkipWarningScreen - { - /* - * Patch PlayLogo to disable the warning screen - */ - [HarmonyPrefix] - [HarmonyPatch(typeof (WarningMonitor), "PlayLogo")] - public static bool PlayLogo() - { - // Return false to block the original method - return false; - } - - [HarmonyPrefix] - [HarmonyPatch(typeof (WarningMonitor), "IsLogoAnimationEnd")] - public static bool IsLogoAnimationEnd(ref bool __result) - { - // Always return true to indicate the animation has ended - __result = true; - return false; - } - } -} \ No newline at end of file +using HarmonyLib; +using Monitor; + +namespace AquaMai.TimeSaving +{ + public class SkipWarningScreen + { + /* + * Patch PlayLogo to disable the warning screen + */ + [HarmonyPrefix] + [HarmonyPatch(typeof (WarningMonitor), "PlayLogo")] + public static bool PlayLogo() + { + // Return false to block the original method + return false; + } + + [HarmonyPrefix] + [HarmonyPatch(typeof (WarningMonitor), "IsLogoAnimationEnd")] + public static bool IsLogoAnimationEnd(ref bool __result) + { + // Always return true to indicate the animation has ended + __result = true; + return false; + } + } +} diff --git a/AquaMai/UX/ExtendTimer.cs b/AquaMai/UX/ExtendTimer.cs index 5e7f8e1a..e91238a2 100644 --- a/AquaMai/UX/ExtendTimer.cs +++ b/AquaMai/UX/ExtendTimer.cs @@ -52,31 +52,5 @@ public static void PhotoEditProcess(PhotoEditMonitor[] ____monitors, PhotoEditPr ____monitors[0].SetButtonPressed(InputManager.ButtonSetting.Button04); Traverse.Create(__instance).Method("OnTimeUp").GetValue(); } - - [HarmonyPrefix] - [HarmonyPatch(typeof(PlInformationMonitor), "IsPlayPlInfoEnd")] - public static bool IWontTapOrSlideVigorously(ref bool __result) - { - __result = true; - return false; - } - - [HarmonyPrefix] - [HarmonyPatch(typeof(GameOverMonitor), "IsPlayEnd")] - public static bool GameOverMonitorPlayEnd(ref bool __result) - { - __result = true; - return false; - } - - [HarmonyPrefix] - [HarmonyPatch(typeof(GameOverProcess), "OnUpdate")] - public static void GameOverProcessOnUpdate(ref GameOverProcess.GameOverSequence ____state) - { - if (____state == GameOverProcess.GameOverSequence.SkyChange) - { - ____state = GameOverProcess.GameOverSequence.Disp; - } - } } }