diff --git a/AquaMai/AquaMai.csproj b/AquaMai/AquaMai.csproj index a509da8a..bd63a1d7 100644 --- a/AquaMai/AquaMai.csproj +++ b/AquaMai/AquaMai.csproj @@ -275,6 +275,7 @@ + diff --git a/AquaMai/AquaMai.toml b/AquaMai/AquaMai.toml index e82ffda1..b4ac7e07 100644 --- a/AquaMai/AquaMai.toml +++ b/AquaMai/AquaMai.toml @@ -22,6 +22,8 @@ LoadJacketPng=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 [Performance] # Disable some useless delays to speed up the game boot process diff --git a/AquaMai/README.md b/AquaMai/README.md index 6e22f3f1..e0392764 100644 --- a/AquaMai/README.md +++ b/AquaMai/README.md @@ -16,6 +16,7 @@ This mod is heavily WIP. More details will be added as the development progresse * Disable daily automatic reboot * Customize version text * Skip the current song by holding 7 +* Skip "new event" and "information" screen for new players. **Bug Fixes** diff --git a/AquaMai/UX/SkipEventInfo.cs b/AquaMai/UX/SkipEventInfo.cs new file mode 100644 index 00000000..330cfbdc --- /dev/null +++ b/AquaMai/UX/SkipEventInfo.cs @@ -0,0 +1,38 @@ +using HarmonyLib; +using MelonLoader; +using Monitor.Information; +using UnityEngine.Assertions; + +namespace AquaMai.UX +{ + public class SkipEventInfo + { + // public override void Initialize(int monIndex, bool active) + // Postfix: Set this.state to DispState.End + [HarmonyPostfix] + [HarmonyPatch(typeof(InformationMonitor), "Initialize", new []{typeof(int), typeof(bool)})] + public static void Initialize(InformationMonitor __instance, int monIndex, bool active) + { + // State is private, cannot access directly + // __instance.state = InformationMonitor.DispState.End; + + // Use reflection to set the state + // var stateField = typeof(InformationMonitor).GetField("state", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance); + // if (stateField == null) + // { + // MelonLogger.Msg("Failed to get state field"); + // return; + // } + // stateField.SetValue(__instance, InformationMonitor.DispState.End); + + // Use reflection to set _dispTime to 0 + var dispTimeField = typeof(InformationMonitor).GetField("_dispTime", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance); + if (dispTimeField == null) + { + MelonLogger.Msg("Failed to get _dispTime field"); + return; + } + dispTimeField.SetValue(__instance, 0); + } + } +} \ No newline at end of file