From ff8bdbdd22221345dda26889e49fcf93f3060fd3 Mon Sep 17 00:00:00 2001 From: akanyan Date: Thu, 9 Jan 2025 23:49:03 +0000 Subject: [PATCH] feat(SkipCutscenes): autocontinue Also fix the "continue?" screen --- .../BetterGiveUp/MU3/patch_Scene_38_End.cs | 11 +++--- .../SkipCutscenes/MU3/patch_Scene_38_End.cs | 36 +++++++++++++++++++ .../MU3.Mod/TestModePageModConfig.cs | 14 +++++++- 3 files changed, 56 insertions(+), 5 deletions(-) create mode 100644 Extras/SkipCutscenes/MU3/patch_Scene_38_End.cs diff --git a/Enhancements/BetterGiveUp/MU3/patch_Scene_38_End.cs b/Enhancements/BetterGiveUp/MU3/patch_Scene_38_End.cs index c876c31..44be11c 100644 --- a/Enhancements/BetterGiveUp/MU3/patch_Scene_38_End.cs +++ b/Enhancements/BetterGiveUp/MU3/patch_Scene_38_End.cs @@ -23,12 +23,15 @@ class patch_Scene_38_End: Scene_38_End { } } + private extern void orig_End_Init(); private void End_Init() { - SystemUI instance = SingletonMonoBehaviour.instance; - instance.Panel.popState(); if(!Singleton.instance.SkipPlay) { - instance.fadeOut(); + orig_End_Init(); + } else { + SystemUI instance = SingletonMonoBehaviour.instance; + instance.Panel.popState(); + commonWindow_.transform.localScale = new UnityEngine.Vector3(0, 0, 0); + commonWindow_.end(); } - commonWindow_.end(); } } \ No newline at end of file diff --git a/Extras/SkipCutscenes/MU3/patch_Scene_38_End.cs b/Extras/SkipCutscenes/MU3/patch_Scene_38_End.cs new file mode 100644 index 0000000..8a19aac --- /dev/null +++ b/Extras/SkipCutscenes/MU3/patch_Scene_38_End.cs @@ -0,0 +1,36 @@ +using MonoMod; +using MU3.Util; + +namespace MU3; + +class patch_Scene_38_End: Scene_38_End { + private Mode mode_; + private int result_; + private UICommonWindow commonWindow_; + private UIContinueDialog uiContinueDialog_; + + [MonoModIgnore] + private enum State { + SendResultContinue = 2, + End = 6 + } + + [MonoModIgnore] + private extern void destroy(int result); + + private void Init_Term() { + using IniFile ini = new IniFile("mu3.ini"); + if(ini.getValue("Sequence", "AutoContinue", false) && mode_.get() != (int)State.End) { + mode_.set(State.SendResultContinue); + commonWindow_.transform.localScale = new UnityEngine.Vector3(0, 0, 0); + } + } + + private void EndContinue_Proc() { + if(commonWindow_ != null && commonWindow_.IsEnd) { + destroy(result_); + } else if(uiContinueDialog_ != null && uiContinueDialog_.IsEnd) { + destroy(result_); + } + } +} \ No newline at end of file diff --git a/Extras/TestMenuConfig/MU3.Mod/TestModePageModConfig.cs b/Extras/TestMenuConfig/MU3.Mod/TestModePageModConfig.cs index 19f8f30..c498831 100644 --- a/Extras/TestMenuConfig/MU3.Mod/TestModePageModConfig.cs +++ b/Extras/TestMenuConfig/MU3.Mod/TestModePageModConfig.cs @@ -1,4 +1,5 @@ using MU3.TestMode; +using MU3.Util; using System.Collections.Generic; using System.IO; using System.Linq; @@ -45,6 +46,7 @@ class TestModePageModConfig: TestModePage { private List