1
0
forked from akanyan/mu3-mods

feat(SkipCutscenes): full postgame skip

This commit is contained in:
2025-01-26 14:08:14 +00:00
parent fefadfc243
commit 8d2d9a3d43
4 changed files with 31 additions and 7 deletions

View File

@ -4,5 +4,6 @@ namespace MU3.Mod;
class State: Singleton<State> { class State: Singleton<State> {
public bool SkipItemFrame { get; set; } public bool SkipItemFrame { get; set; }
public bool SkipEntry { get; set; } public bool SkipMusicIntro { get; set; }
public bool SkipMusicOutro { get; set; }
} }

View File

@ -8,8 +8,6 @@ using UnityEngine;
namespace MU3.Sequence; namespace MU3.Sequence;
class patch_PlayMusic: PlayMusic { class patch_PlayMusic: PlayMusic {
public class CutscenePatch { };
private GameEngine _gameEngine; private GameEngine _gameEngine;
private bool _quickStart = false; private bool _quickStart = false;
@ -28,9 +26,10 @@ class patch_PlayMusic: PlayMusic {
private void Execute_StartCutscene() { private void Execute_StartCutscene() {
orig_Execute_StartCutscene(); orig_Execute_StartCutscene();
Singleton<Mod.State>.instance.SkipEntry = false; Singleton<Mod.State>.instance.SkipMusicIntro = false;
Singleton<Mod.State>.instance.SkipMusicOutro = false;
if(_quickStart || Singleton<UIInput>.instance.getTriggerOn(UIInput.Key.MenuLeft)) { if(_quickStart || Singleton<UIInput>.instance.getTriggerOn(UIInput.Key.MenuLeft)) {
Singleton<Mod.State>.instance.SkipEntry = true; Singleton<Mod.State>.instance.SkipMusicIntro = true;
_gameEngine.skipStartCutscene(); _gameEngine.skipStartCutscene();
if(isPartyPlay()) { if(isPartyPlay()) {
setNextState(EState.PartyWaitReady); setNextState(EState.PartyWaitReady);
@ -58,10 +57,11 @@ class patch_PlayMusic: PlayMusic {
if(Singleton<UIInput>.instance.getTriggerOn(UIInput.Key.MenuLeft)) { if(Singleton<UIInput>.instance.getTriggerOn(UIInput.Key.MenuLeft)) {
if(!isPartyPlay() || state > EState.CalcResult) { if(!isPartyPlay() || state > EState.CalcResult) {
enabled = true; enabled = true;
Singleton<Mod.State>.instance.SkipMusicOutro = true;
} }
} }
if(enabled) { if(enabled) {
Singleton<Mod.State>.instance.SkipItemFrame = true; Singleton<Mod.State>.instance.SkipItemFrame = false;
if(state < EState.CalcResult) { if(state < EState.CalcResult) {
setNextState(EState.CalcResult); setNextState(EState.CalcResult);
} }

View File

@ -24,7 +24,7 @@ class patch_BattleUI: BattleUI {
} }
public new void playReady(Action onFinish) { public new void playReady(Action onFinish) {
if(Singleton<Mod.State>.instance.SkipEntry) { if(Singleton<Mod.State>.instance.SkipMusicIntro) {
StartCoroutine(playReadyProcSkipped(onFinish)); StartCoroutine(playReadyProcSkipped(onFinish));
} else { } else {
StartCoroutine(playReadyProc(onFinish)); StartCoroutine(playReadyProc(onFinish));

View File

@ -0,0 +1,23 @@
using MonoMod;
using MU3.Util;
namespace MU3;
class patch_Scene_37_Result: Scene_37_Result {
[MonoModIgnore]
private enum State { End = 11 };
private Mode<Scene_37_Result, State> mode_;
private extern void orig_Assignment_Init();
private void Assignment_Init() {
if(Singleton<Mod.State>.instance.SkipMusicOutro) {
SystemUI instance = SingletonMonoBehaviour<SystemUI>.instance;
instance.removeCanvas(Graphics.Const.SortOrder.Dialog);
Singleton<Mod.State>.instance.SkipMusicOutro = false;
mode_.set(State.End);
} else {
orig_Assignment_Init();
}
}
}