mirror of
https://github.com/MewoLab/AquaDX.git
synced 2026-02-08 13:57:26 +08:00
更新了配置文件格式,原有的配置文件将被自动无缝迁移,详情请见新的配置文件中的注释(例外:`SlideJudgeTweak` 不再默认启用) 旧配置文件将被重命名备份,如果更新到此版本遇到 Bug 请联系我们 Updated configuration file schema. The old config file will be migrated automatically and seamlessly. See the comments in the new configuration file for details. (Except for `SlideJudgeTweak` is no longer enabled by default) Your old configuration file will be renamed as a backup. If you encounter any bug with this version, please contact us.
66 lines
2.5 KiB
C#
66 lines
2.5 KiB
C#
using System.Collections.Generic;
|
|
using AquaMai.Config.Attributes;
|
|
using AquaMai.Config.Types;
|
|
using AquaMai.Core.Helpers;
|
|
using HarmonyLib;
|
|
using Mai2.Mai2Cue;
|
|
using Main;
|
|
using Manager;
|
|
using MelonLoader;
|
|
using Process;
|
|
|
|
namespace AquaMai.Mods.UX;
|
|
|
|
[ConfigSection(
|
|
en: "One key to proceed to music select (during entry) or end current PC (during music select).",
|
|
zh: "一键跳过登录过程直接进入选歌界面,或在选歌界面直接结束本局游戏")]
|
|
public class OneKeyEntryEnd
|
|
{
|
|
[ConfigEntry]
|
|
public static readonly KeyCodeOrName key = KeyCodeOrName.Service;
|
|
|
|
[ConfigEntry]
|
|
public static readonly bool longPress = true;
|
|
|
|
[HarmonyPrefix]
|
|
[HarmonyPatch(typeof(GameMainObject), "Update")]
|
|
public static void OnGameMainObjectUpdate()
|
|
{
|
|
if (!KeyListener.GetKeyDownOrLongPress(key, longPress)) return;
|
|
MelonLogger.Msg("[QuickSkip] Activated");
|
|
|
|
var traverse = Traverse.Create(SharedInstances.ProcessDataContainer.processManager);
|
|
var processList = traverse.Field("_processList").GetValue<LinkedList<ProcessManager.ProcessControle>>();
|
|
|
|
ProcessBase processToRelease = null;
|
|
|
|
foreach (ProcessManager.ProcessControle process in processList)
|
|
{
|
|
switch (process.Process.ToString())
|
|
{
|
|
// After login
|
|
case "Process.ModeSelect.ModeSelectProcess":
|
|
case "Process.LoginBonus.LoginBonusProcess":
|
|
case "Process.RegionalSelectProcess":
|
|
case "Process.CharacterSelectProcess":
|
|
case "Process.TicketSelect.TicketSelectProcess":
|
|
processToRelease = process.Process;
|
|
break;
|
|
|
|
case "Process.MusicSelectProcess":
|
|
// Skip to save
|
|
SoundManager.PreviewEnd();
|
|
SoundManager.PlayBGM(Cue.BGM_COLLECTION, 2);
|
|
SharedInstances.ProcessDataContainer.processManager.AddProcess(new FadeProcess(SharedInstances.ProcessDataContainer, process.Process, new UnlockMusicProcess(SharedInstances.ProcessDataContainer)));
|
|
break;
|
|
}
|
|
}
|
|
|
|
if (processToRelease != null)
|
|
{
|
|
GameManager.SetMaxTrack();
|
|
SharedInstances.ProcessDataContainer.processManager.AddProcess(new FadeProcess(SharedInstances.ProcessDataContainer, processToRelease, new MusicSelectProcess(SharedInstances.ProcessDataContainer)));
|
|
}
|
|
}
|
|
}
|