From 076fb75a6dae32a81243eaaa14007dd03ac0c82a Mon Sep 17 00:00:00 2001 From: akanyan Date: Wed, 25 Dec 2024 19:34:02 +0000 Subject: [PATCH] feat: rework reward skip; move it to SkipCutscenes --- .../MU3/patch_Scene_30_NoticeReward.cs | 15 +++-------- Extras/SkipCutscenes/MU3.Mod/State.cs | 8 ++++++ .../MU3.Sequence/patch_PlayMusic.cs | 6 ++--- Extras/SkipCutscenes/MU3/patch_ANM_Frame.cs | 17 ++++++++++++ Extras/SkipCutscenes/MU3/patch_BattleUI.cs | 2 +- .../SkipCutscenes}/MU3/patch_DailyBonus.cs | 17 +++++++++--- Extras/SkipCutscenes/MU3/patch_UIGetItem.cs | 27 +++++++++++++++++++ .../MU3/patch_UIPurchaseCardDialog.cs | 25 +++++++++++++++++ 8 files changed, 96 insertions(+), 21 deletions(-) create mode 100644 Extras/SkipCutscenes/MU3.Mod/State.cs create mode 100644 Extras/SkipCutscenes/MU3/patch_ANM_Frame.cs rename {Enhancements/SkipNotices => Extras/SkipCutscenes}/MU3/patch_DailyBonus.cs (55%) create mode 100644 Extras/SkipCutscenes/MU3/patch_UIGetItem.cs create mode 100644 Extras/SkipCutscenes/MU3/patch_UIPurchaseCardDialog.cs diff --git a/Enhancements/SkipNotices/MU3/patch_Scene_30_NoticeReward.cs b/Enhancements/SkipNotices/MU3/patch_Scene_30_NoticeReward.cs index f202896..36c61df 100644 --- a/Enhancements/SkipNotices/MU3/patch_Scene_30_NoticeReward.cs +++ b/Enhancements/SkipNotices/MU3/patch_Scene_30_NoticeReward.cs @@ -8,20 +8,11 @@ class patch_Scene_30_NoticeReward: Scene_30_NoticeReward { [MonoModIgnore] private enum State { - RankingReward = 2, - FadeOut = 8, + RankingReward = 2 } private void Start() { - using IniFile iniFile = new("mu3.ini"); - - var quickLogin = iniFile.getValue("Sequence", "QuickLogin", false); - _mode = new Mode(this); - if(quickLogin) { - _mode.set(State.FadeOut); - } else { - _mode.set(State.RankingReward); - SingletonMonoBehaviour.instance.Panel.pushState(0, show: true); - } + _mode.set(State.RankingReward); + SingletonMonoBehaviour.instance.Panel.pushState(0, show: true); } } \ No newline at end of file diff --git a/Extras/SkipCutscenes/MU3.Mod/State.cs b/Extras/SkipCutscenes/MU3.Mod/State.cs new file mode 100644 index 0000000..6450e73 --- /dev/null +++ b/Extras/SkipCutscenes/MU3.Mod/State.cs @@ -0,0 +1,8 @@ +using MU3.Util; + +namespace MU3.Mod; + +class State: Singleton { + public bool SkipItemFrame { get; set; } + public bool SkipEntry { get; set; } +} diff --git a/Extras/SkipCutscenes/MU3.Sequence/patch_PlayMusic.cs b/Extras/SkipCutscenes/MU3.Sequence/patch_PlayMusic.cs index 9a02040..705219a 100644 --- a/Extras/SkipCutscenes/MU3.Sequence/patch_PlayMusic.cs +++ b/Extras/SkipCutscenes/MU3.Sequence/patch_PlayMusic.cs @@ -3,7 +3,6 @@ using MU3.Battle; using MU3.Data; using MU3.Game; using MU3.Util; -using UnityEngine; namespace MU3.Sequence; @@ -11,7 +10,6 @@ class patch_PlayMusic: PlayMusic { private GameEngine _gameEngine; private SessionInfo _sessionInfo; private bool _nuclearSkip = false; - public static bool ForceSkipped { get; private set; } [MonoModIgnore] private extern bool isPartyPlay(); @@ -19,9 +17,9 @@ class patch_PlayMusic: PlayMusic { private extern void orig_Execute_StartCutscene(); private void Execute_StartCutscene() { orig_Execute_StartCutscene(); - ForceSkipped = false; + Singleton.instance.SkipEntry = false; if(Singleton.instance.config.isQuickStart || Singleton.instance.getTriggerOn(UIInput.Key.MenuLeft)) { - ForceSkipped = true; + Singleton.instance.SkipEntry = true; _gameEngine.skipStartCutscene(); if(isPartyPlay()) { setNextState(EState.PartyWaitReady); diff --git a/Extras/SkipCutscenes/MU3/patch_ANM_Frame.cs b/Extras/SkipCutscenes/MU3/patch_ANM_Frame.cs new file mode 100644 index 0000000..c5475d8 --- /dev/null +++ b/Extras/SkipCutscenes/MU3/patch_ANM_Frame.cs @@ -0,0 +1,17 @@ +using MU3.Util; +using UnityEngine; + +namespace MU3; + +class patch_ANM_Frame: ANM_Frame { + private GameObject currentBonus; + + public extern bool orig_isStampAnimEnd(); + public new bool isStampAnimEnd() { + if(!Singleton.instance.SkipItemFrame) { + return orig_isStampAnimEnd(); + } else { + return currentBonus.GetComponent().GetCurrentAnimatorStateInfo(0).normalizedTime > 0.4; + } + } +} diff --git a/Extras/SkipCutscenes/MU3/patch_BattleUI.cs b/Extras/SkipCutscenes/MU3/patch_BattleUI.cs index 636fa00..9fd205b 100644 --- a/Extras/SkipCutscenes/MU3/patch_BattleUI.cs +++ b/Extras/SkipCutscenes/MU3/patch_BattleUI.cs @@ -25,7 +25,7 @@ class patch_BattleUI: BattleUI { } public new void playReady(Action onFinish) { - if(patch_PlayMusic.ForceSkipped) { + if(Singleton.instance.SkipEntry) { StartCoroutine(playReadyProcSkipped(onFinish)); } else { StartCoroutine(playReadyProc(onFinish)); diff --git a/Enhancements/SkipNotices/MU3/patch_DailyBonus.cs b/Extras/SkipCutscenes/MU3/patch_DailyBonus.cs similarity index 55% rename from Enhancements/SkipNotices/MU3/patch_DailyBonus.cs rename to Extras/SkipCutscenes/MU3/patch_DailyBonus.cs index 4e4584d..671984c 100644 --- a/Enhancements/SkipNotices/MU3/patch_DailyBonus.cs +++ b/Extras/SkipCutscenes/MU3/patch_DailyBonus.cs @@ -12,17 +12,26 @@ class patch_DailyBonus: DailyBonus { private float waitCount; private State _state; + private extern void orig_Update(); private void Update() { if(_state < State.ItemWindow) { - if(Singleton.instance.getTriggerOn(UIInput.Key.Decision)) { - waitCount = 100.0f; - } if(Singleton.instance.getTriggerOn(UIInput.Key.MenuLeft)) { waitCount = 100.0f; - _state = State.ExitWait; + Singleton.instance.SkipItemFrame = true; } } orig_Update(); } + + private extern void orig_onFinishDialog(); + private void onFinishDialog() { + if(!Singleton.instance.SkipItemFrame) { + orig_onFinishDialog(); + } else { + _state = State.ExitWait; + waitCount = 100f; + Singleton.instance.SkipItemFrame = false; + } + } } diff --git a/Extras/SkipCutscenes/MU3/patch_UIGetItem.cs b/Extras/SkipCutscenes/MU3/patch_UIGetItem.cs new file mode 100644 index 0000000..6ea5861 --- /dev/null +++ b/Extras/SkipCutscenes/MU3/patch_UIGetItem.cs @@ -0,0 +1,27 @@ +using MU3.Util; + +namespace MU3; + +class patch_UIGetItem: UIGetItem { + private int state_; + private float time_; + + public extern bool orig_isOutEnd(); + public new bool isOutEnd() { + if(!Singleton.instance.SkipItemFrame) { + return orig_isOutEnd(); + } else { + return true; + } + } + + public extern void orig_start(Kind kind); + private void start(Kind kind) { + if(!Singleton.instance.SkipItemFrame) { + orig_start(kind); + } else { + state_ = 3; + time_ = 100f; + } + } +} diff --git a/Extras/SkipCutscenes/MU3/patch_UIPurchaseCardDialog.cs b/Extras/SkipCutscenes/MU3/patch_UIPurchaseCardDialog.cs new file mode 100644 index 0000000..b6a8a17 --- /dev/null +++ b/Extras/SkipCutscenes/MU3/patch_UIPurchaseCardDialog.cs @@ -0,0 +1,25 @@ +using MU3.Util; +using MU3.ViewData; + +namespace MU3; + +class patch_UIPurchaseCardDialog: UIPurchaseCardDialog { + private ChapterCardViewData cardViewData_; + private OnFinish onFinish_; + private int state_; + + private extern void orig_Start(); + private void Start() { + if(!Singleton.instance.SkipItemFrame) { + orig_Start(); + } else { + state_ = 5; + Destroy(gameObject, 0.1f); + gameObject.transform.SetParent(null); + if(onFinish_ != null) { + onFinish_(cardViewData_, 0); + onFinish_ = null; + } + } + } +}