[+] Restore AutoPlay(Home) and Pause(Enter) for SDGA
Build AquaMai / build (SDEZ141) (push) Has been cancelled Details
Build AquaMai / build (SDGA145) (push) Has been cancelled Details

pull/52/head
Clansty 2024-09-02 17:35:31 +08:00
parent 489c00ebb0
commit 8db9580ff5
No known key found for this signature in database
GPG Key ID: 3A6BE8BAF2EDE134
6 changed files with 48 additions and 9 deletions

View File

@ -277,6 +277,7 @@
</Reference> </Reference>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Compile Include="Cheat\DebugFeature.cs" />
<Compile Include="Cheat\MapUnlock.cs" /> <Compile Include="Cheat\MapUnlock.cs" />
<Compile Include="Cheat\TicketUnlock.cs" /> <Compile Include="Cheat\TicketUnlock.cs" />
<Compile Include="Cheat\UnlockUtage.cs" /> <Compile Include="Cheat\UnlockUtage.cs" />

View File

@ -8,6 +8,8 @@ TicketUnlock=true
MapUnlock=true MapUnlock=true
# Unlock Utage without the need of DXRating 10000 # Unlock Utage without the need of DXRating 10000
UnlockUtage=true UnlockUtage=true
# Restore AutoPlay(Home) and Pause(Enter) for SDGA
DebugFeature=true
# =================================== # ===================================
# UX: User Experience Improvements # UX: User Experience Improvements

View File

@ -8,6 +8,8 @@ TicketUnlock=true
MapUnlock=true MapUnlock=true
# 不需要万分也可以进宴会场 # 不需要万分也可以进宴会场
UnlockUtage=true UnlockUtage=true
# 恢复 SDGA 的自动播放Home和暂停Enter按键
DebugFeature=true
# =================================== # ===================================
# 用户体验改进 # 用户体验改进

View File

@ -0,0 +1,33 @@
using System;
using HarmonyLib;
using Manager;
using Process;
using UnityEngine;
namespace AquaMai.Cheat;
public class DebugFeature
{
# if SDGA145
private static bool isPause = false;
[HarmonyPostfix]
[HarmonyPatch(typeof(GameProcess), "OnUpdate")]
public static void PostGameProcessUpdate(GameProcess __instance, byte ____sequence, MovieController ____gameMovie)
{
if (____sequence != 4) return;
// GameSequence.Play
if (Input.GetKeyDown(KeyCode.Home))
{
GameManager.AutoPlay = (GameManager.AutoPlayMode)((int)(GameManager.AutoPlay + 1) % Enum.GetNames(typeof(GameManager.AutoPlayMode)).Length);
}
else if (DebugInput.GetKeyDown(KeyCode.Return))
{
isPause = !isPause;
SoundManager.PauseMusic(isPause);
____gameMovie.Pause(isPause);
NotesManager.Pause(isPause);
}
}
# endif
}

View File

@ -15,6 +15,7 @@ namespace AquaMai
public bool TicketUnlock { get; set; } public bool TicketUnlock { get; set; }
public bool MapUnlock { get; set; } public bool MapUnlock { get; set; }
public bool UnlockUtage { get; set; } public bool UnlockUtage { get; set; }
public bool DebugFeature { get; set; }
} }
public class UXConfig public class UXConfig

View File

@ -12,20 +12,20 @@ namespace AquaMai
public const string Description = "Mod for Sinmai"; public const string Description = "Mod for Sinmai";
public const string Author = "Aza"; public const string Author = "Aza";
public const string Company = null; public const string Company = null;
public const string Version = "1.0.0"; public const string Version = "1.0.1";
public const string DownloadLink = null; public const string DownloadLink = null;
} }
public class AquaMai : MelonMod public class AquaMai : MelonMod
{ {
public static Config AppConfig { get; private set; } public static Config AppConfig { get; private set; }
private static void Patch(Type type) private static void Patch(Type type)
{ {
MelonLogger.Msg($"> Patching {type}"); MelonLogger.Msg($"> Patching {type}");
HarmonyLib.Harmony.CreateAndPatchAll(type); HarmonyLib.Harmony.CreateAndPatchAll(type);
} }
/** /**
* Apply patches using reflection, based on the settings * Apply patches using reflection, based on the settings
*/ */
@ -44,10 +44,10 @@ namespace AquaMai
{ {
// The property should be a boolean // The property should be a boolean
if (settingProp.PropertyType != typeof(bool)) continue; if (settingProp.PropertyType != typeof(bool)) continue;
// Check if the boolean value is true // Check if the boolean value is true
if (!(bool) settingProp.GetValue(categoryValue)) continue; if (!(bool) settingProp.GetValue(categoryValue)) continue;
// Get the Type from the config directive name // Get the Type from the config directive name
var directiveType = Type.GetType($"AquaMai.{categoryProp.Name}.{settingProp.Name}"); var directiveType = Type.GetType($"AquaMai.{categoryProp.Name}.{settingProp.Name}");
@ -57,8 +57,8 @@ namespace AquaMai
} }
} }
} }
public override void OnInitializeMelon() public override void OnInitializeMelon()
{ {
MelonLogger.Msg("Loading mod settings..."); MelonLogger.Msg("Loading mod settings...");
@ -71,10 +71,10 @@ namespace AquaMai
// Read AquaMai.toml to load settings // Read AquaMai.toml to load settings
AppConfig = TomletMain.To<Config>(System.IO.File.ReadAllText("AquaMai.toml")); AppConfig = TomletMain.To<Config>(System.IO.File.ReadAllText("AquaMai.toml"));
// Apply patches based on the settings // Apply patches based on the settings
ApplyPatches(); ApplyPatches();
// Fixes that does not have side effects // Fixes that does not have side effects
// These don't need to be configurable // These don't need to be configurable
Patch(typeof(FixCharaCrash)); Patch(typeof(FixCharaCrash));