diff --git a/Extras/SkipCutscenes/MU3.Sequence/patch_PlayMusic.cs b/Extras/SkipCutscenes/MU3.Sequence/patch_PlayMusic.cs index 1d516c5..3226c7d 100644 --- a/Extras/SkipCutscenes/MU3.Sequence/patch_PlayMusic.cs +++ b/Extras/SkipCutscenes/MU3.Sequence/patch_PlayMusic.cs @@ -1,6 +1,5 @@ using MonoMod; using MU3.Battle; -using MU3.Data; using MU3.Game; using MU3.Util; @@ -10,15 +9,24 @@ class patch_PlayMusic: PlayMusic { private GameEngine _gameEngine; private SessionInfo _sessionInfo; private bool _nuclearSkip = false; + private bool _quickStart = false; [MonoModIgnore] private extern bool isPartyPlay(); + [MonoModIgnore] + private extern void Enter_ShowBonusStart(); + + private void Leave_LoadScene() { + using IniFile iniFile = new("mu3.ini"); + _quickStart = iniFile.getValue("Sequence", "QuickStart", false); + } + private extern void orig_Execute_StartCutscene(); private void Execute_StartCutscene() { orig_Execute_StartCutscene(); Singleton.instance.SkipEntry = false; - if(Singleton.instance.config.isQuickStart || Singleton.instance.getTriggerOn(UIInput.Key.MenuLeft)) { + if(_quickStart || Singleton.instance.getTriggerOn(UIInput.Key.MenuLeft)) { Singleton.instance.SkipEntry = true; _gameEngine.skipStartCutscene(); if(isPartyPlay()) { @@ -45,8 +53,8 @@ class patch_PlayMusic: PlayMusic { setNextState(EState.CalcResult); } if(state > EState.CalcResult) { - int selectorID = SingletonStateMachine.instance.getMemoryChapterData(_sessionInfo.chapterSelection.memoryChapterId)?.getMemoryChapterSelectorID() ?? 4; - Singleton.instance.gameBGM.playBGM(236, selectorID); + Enter_ShowBonusStart(); + SingletonMonoBehaviour.instance.destroySkipButton(true); setNextState(EState.End); } } diff --git a/Extras/TestMenuConfig/MU3.Mod/TestModePageModConfig.cs b/Extras/TestMenuConfig/MU3.Mod/TestModePageModConfig.cs new file mode 100644 index 0000000..5bf80df --- /dev/null +++ b/Extras/TestMenuConfig/MU3.Mod/TestModePageModConfig.cs @@ -0,0 +1,247 @@ +using MU3.TestMode; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Reflection; +using UnityEngine; + +namespace MU3.Mod; + +class TestModePageModConfig: TestModePage { + class Option { + public int selection; + public string sectionName; + public string fieldName; + public ItemDefine itemDefine; + public List> values; + + public Option(string label, string fieldName, Dictionary values, int indexDefault, bool selectable, string sectionName = "Extra") { + this.values = values.ToList(); + this.fieldName = fieldName; + this.sectionName = sectionName; + + itemDefine = new ItemDefine { + lineNumber = 0, + label = label, + isSelectable = selectable, + hasValueField = true, + numValueField = 1, + nextPagePrefab = null, + isFinishOnSelect = false, + isDefaultSelection = false, + }; + + using IniFile iniFile = new("mu3.ini"); + var previous = iniFile.getValue(sectionName, fieldName, values.ElementAt(indexDefault).Value); + var found = this.values.FindIndex(i => i.Value == previous); + if(found == -1) { + itemDefine.isSelectable = false; + } else { + selection = found == -1 ? indexDefault : found; + } + } + } + + private List