diff --git a/AquaMai/AquaMai.csproj b/AquaMai/AquaMai.csproj
index 4c891cf5..815e02d6 100644
--- a/AquaMai/AquaMai.csproj
+++ b/AquaMai/AquaMai.csproj
@@ -270,6 +270,7 @@
+
diff --git a/AquaMai/Config.cs b/AquaMai/Config.cs
index 0a1e0c98..a9b8fb56 100644
--- a/AquaMai/Config.cs
+++ b/AquaMai/Config.cs
@@ -7,16 +7,17 @@ namespace AquaMai
{
public UXConfig UX { get; set; }
public CheatConfig Cheat { get; set; }
-
+
public class CheatConfig
{
public bool TicketUnlock { get; set; }
}
-
+
public class UXConfig
{
public bool SkipWarningScreen { get; set; }
public bool SinglePlayer { get; set; }
+ public bool SkipToMusicSelection { get; set; }
}
}
-}
\ No newline at end of file
+}
diff --git a/AquaMai/Main.cs b/AquaMai/Main.cs
index c613eb4f..472533f0 100644
--- a/AquaMai/Main.cs
+++ b/AquaMai/Main.cs
@@ -20,41 +20,46 @@ namespace AquaMai
public class AquaMai : MelonMod
{
public static Config AppConfig { get; private set; }
-
+
private void Patch(Type type)
{
MelonLogger.Msg($"> Patching {type}");
HarmonyLib.Harmony.CreateAndPatchAll(type);
}
-
- public override void OnInitializeMelon()
+
+ public override void OnInitializeMelon()
{
MelonLogger.Msg("Loading mod settings...");
-
+
// Check if AquaMai.toml exists
if (!System.IO.File.Exists("AquaMai.toml"))
{
MelonLogger.Error("AquaMai.toml not found! Please create it.");
return;
}
-
+
// Read AquaMai.toml to load settings
AppConfig = TomletMain.To(System.IO.File.ReadAllText("AquaMai.toml"));
-
+
if (AppConfig.UX.SkipWarningScreen)
Patch(typeof(SkipWarningScreen));
-
+
if (AppConfig.UX.SinglePlayer)
Patch(typeof(SinglePlayer));
if (AppConfig.Cheat.TicketUnlock)
Patch(typeof(TicketUnlock));
-
+
+ if (AppConfig.UX.SkipToMusicSelection)
+ {
+ Patch(typeof(SkipToMusicSelection));
+ }
+
// Fixes that does not have side effects
// These don't need to be configurable
Patch(typeof(FixCharaCrash));
-
+
MelonLogger.Msg("Loaded!");
}
}
-}
\ No newline at end of file
+}
diff --git a/AquaMai/UX/SinglePlayer.cs b/AquaMai/UX/SinglePlayer.cs
index eb9c2c1e..d9a5e026 100644
--- a/AquaMai/UX/SinglePlayer.cs
+++ b/AquaMai/UX/SinglePlayer.cs
@@ -6,11 +6,11 @@ namespace AquaMai.UX
{
// Hides the 2p (right hand side) UI.
// Note: this is not my original work. I simply interpreted the code and rewrote it as a mod.
- public class SinglePlayer
+ public class SinglePlayer
{
[HarmonyPrefix]
[HarmonyPatch(typeof(Main.GameMain), "LateInitialize", new Type[] { typeof(MonoBehaviour), typeof(Transform), typeof(Transform) })]
- public static bool LateInitialize(MonoBehaviour gameMainObject, ref Transform left, ref Transform right)
+ public static bool LateInitialize(MonoBehaviour gameMainObject, ref Transform left, ref Transform right)
{
left.transform.position = Vector3.zero;
right.localScale = Vector3.zero;
diff --git a/AquaMai/UX/SkipToMusicSelection.cs b/AquaMai/UX/SkipToMusicSelection.cs
new file mode 100644
index 00000000..42e4de48
--- /dev/null
+++ b/AquaMai/UX/SkipToMusicSelection.cs
@@ -0,0 +1,26 @@
+using HarmonyLib;
+using Manager;
+using Process;
+using Process.Information;
+
+namespace AquaMai.UX
+{
+ public class SkipToMusicSelection
+ {
+ /*
+ * Highly experimental, may well break some stuff
+ * Works by overriding the info screen (where it shows new events and stuff)
+ * to directly exit to the music selection screen, skipping character and
+ * event selection, among others
+ */
+ [HarmonyPrefix]
+ [HarmonyPatch(typeof(InformationProcess), "OnUpdate")]
+ public static bool OnUpdate(InformationProcess __instance, ProcessDataContainer ___container)
+ {
+ GameManager.SetMaxTrack();
+ ___container.processManager.AddProcess(new MusicSelectProcess(___container), 50);
+ ___container.processManager.ReleaseProcess(__instance);
+ return false;
+ }
+ }
+}