mirror of
https://github.com/hykilpikonna/AquaDX.git
synced 2026-08-08 03:57:22 -05:00
[O] legacy version support
This commit is contained in:
parent
c7ea71ca70
commit
3cfcab097b
|
|
@ -35,7 +35,17 @@ public class Config : IConfig
|
|||
|
||||
foreach (var section in reflectionManager.SectionValues)
|
||||
{
|
||||
InitializeSection(section);
|
||||
try
|
||||
{
|
||||
InitializeSection(section);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Utility.Log($"Failed to initialize config section {section.Path}");
|
||||
#if DEBUG
|
||||
Utility.Log(ex.ToString());
|
||||
#endif
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -36,7 +36,10 @@
|
|||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Reference Include="mscorlib" />
|
||||
<Reference Include="mscorlib">
|
||||
<HintPath>../Libs/mscorlib.dll</HintPath>
|
||||
<Private>False</Private>
|
||||
</Reference>
|
||||
<Reference Include="0Harmony" />
|
||||
<Reference Include="AMDaemon.NET" />
|
||||
<Reference Include="Assembly-CSharp" />
|
||||
|
|
|
|||
18
AquaMai.Core/Extensions.cs
Normal file
18
AquaMai.Core/Extensions.cs
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
using System.Collections.Generic;
|
||||
|
||||
namespace AquaMai.Core;
|
||||
|
||||
// Unity 2017 兼容
|
||||
public static class Extensions
|
||||
{
|
||||
public static TValue GetValueOrDefault<TKey, TValue>(this Dictionary<TKey, TValue> dic, TKey key, TValue defaultValue = default)
|
||||
{
|
||||
return dic.TryGetValue(key, out var value) ? value : defaultValue;
|
||||
}
|
||||
|
||||
public static void Deconstruct<TKey, TValue>(this KeyValuePair<TKey, TValue> kvp, out TKey key, out TValue value)
|
||||
{
|
||||
key = kvp.Key;
|
||||
value = kvp.Value;
|
||||
}
|
||||
}
|
||||
|
|
@ -55,6 +55,17 @@ public class EnableConditionHelper
|
|||
# endif
|
||||
return true;
|
||||
}
|
||||
return ShouldSkipMethodOrClassByGameVersion(getCustomAttribute, type, displayName);
|
||||
}
|
||||
|
||||
public static bool ShouldSkipClassByGameVersion(Type type)
|
||||
{
|
||||
return ShouldSkipMethodOrClassByGameVersion(type.GetCustomAttribute, type);
|
||||
}
|
||||
|
||||
private static bool ShouldSkipMethodOrClassByGameVersion(Func<Type, object> getCustomAttribute, Type type, string methodName = "")
|
||||
{
|
||||
var displayName = type.FullName + (string.IsNullOrEmpty(methodName) ? "" : $".{methodName}");
|
||||
var enableGameVersion = (EnableGameVersionAttribute)getCustomAttribute(typeof(EnableGameVersionAttribute));
|
||||
if (enableGameVersion != null && !enableGameVersion.ShouldEnable(GameInfo.GameVersion))
|
||||
{
|
||||
|
|
|
|||
|
|
@ -18,7 +18,16 @@ public class MessageHelper
|
|||
_genericManager = genericManager;
|
||||
}
|
||||
|
||||
public static void ShowMessage(string message, WindowSizeID size = WindowSizeID.Middle, string title = null, Sprite sprite = null, bool retain = false)
|
||||
public delegate void ShowMessageDelegate(string message, WindowSizeID size = WindowSizeID.Middle, string title = null, Sprite sprite = null, bool retain = false);
|
||||
|
||||
public static ShowMessageDelegate ShowMessage = GameInfo.GameVersion > 22000
|
||||
? _ShowMessage
|
||||
: (string message, WindowSizeID size = WindowSizeID.Middle, string title = null, Sprite sprite = null, bool retain = false) =>
|
||||
{
|
||||
MelonLogger.Warning($"[MessageHelper] ShowMessage is not supported in this game version. {title}: {message}");
|
||||
};
|
||||
|
||||
private static void _ShowMessage(string message, WindowSizeID size = WindowSizeID.Middle, string title = null, Sprite sprite = null, bool retain = false)
|
||||
{
|
||||
if (_genericManager is null)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -84,6 +84,11 @@ public class Startup
|
|||
|
||||
private static void CollectWantedPatches(List<Type> wantedPatches, Type type)
|
||||
{
|
||||
if (EnableConditionHelper.ShouldSkipClassByGameVersion(type))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
InvokeLifecycleMethod(type, ModLifecycleMethod.OnBeforeEnableCheck);
|
||||
|
||||
if (EnableConditionHelper.ShouldSkipClass(type))
|
||||
|
|
|
|||
|
|
@ -37,7 +37,10 @@
|
|||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Reference Include="mscorlib" />
|
||||
<Reference Include="mscorlib">
|
||||
<HintPath>../Libs/mscorlib.dll</HintPath>
|
||||
<Private>False</Private>
|
||||
</Reference>
|
||||
<Reference Include="0Harmony" />
|
||||
<Reference Include="AMDaemon.NET" />
|
||||
<Reference Include="Assembly-CSharp" />
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
using System.Collections;
|
||||
using System.Linq;
|
||||
using AquaMai.Config.Attributes;
|
||||
using AquaMai.Core.Attributes;
|
||||
using AquaMai.Core.Helpers;
|
||||
using AquaMai.Mods.Types;
|
||||
using DB;
|
||||
|
|
@ -25,6 +26,7 @@ namespace AquaMai.Mods.Enhancement;
|
|||
显示来自兼容服务端的公告
|
||||
(对其他服务器无副作用,不会发出额外请求)
|
||||
""")]
|
||||
[EnableGameVersion(23000)]
|
||||
public static class ServerAnnouncement
|
||||
{
|
||||
private class ServerAnnouncementEntry : ConditionalMessage
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
using System.Linq;
|
||||
using AquaMai.Config.Attributes;
|
||||
using AquaMai.Core.Attributes;
|
||||
using AquaMai.Core.Helpers;
|
||||
using AquaMai.Mods.Types;
|
||||
using JetBrains.Annotations;
|
||||
|
|
@ -19,6 +20,7 @@ namespace AquaMai.Mods.Enhancement;
|
|||
在用户登录之类的时候,显示来自兼容服务器的额外信息
|
||||
(对其他服务器无副作用,不会发出额外请求)
|
||||
""")]
|
||||
[EnableGameVersion(23000)]
|
||||
public class ServerNotice
|
||||
{
|
||||
private const string FieldName = "_aquaMaiServerNotice";
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@ using System.Linq;
|
|||
using System.Reflection;
|
||||
using System.Security.Cryptography;
|
||||
using AquaMai.Config.Attributes;
|
||||
using AquaMai.Core.Attributes;
|
||||
using AquaMai.Core.Helpers;
|
||||
using AquaMai.Mods.Types;
|
||||
using HarmonyLib;
|
||||
|
|
@ -24,6 +25,7 @@ namespace AquaMai.Mods.Enhancement;
|
|||
defaultOn: true,
|
||||
exampleHidden: true,
|
||||
zh: "加载服务器下发的资源(如果支持)")]
|
||||
[EnableGameVersion(23000)]
|
||||
public class ServerResources
|
||||
{
|
||||
[ConfigEntry]
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
using System.Collections.Generic;
|
||||
using AquaMai.Config.Attributes;
|
||||
using AquaMai.Core.Attributes;
|
||||
using HarmonyLib;
|
||||
using Monitor;
|
||||
using UI;
|
||||
|
|
@ -20,6 +21,7 @@ namespace AquaMai.Mods.Fancy;
|
|||
需要启用自定义皮肤功能
|
||||
会通过自定义皮肤加载四个图片资源: musicBase, musicTab, musicLvBase, musicLvText
|
||||
""")]
|
||||
[EnableGameVersion(23000)]
|
||||
public class CustomTrackStartDiff
|
||||
{
|
||||
// 自定义在歌曲开始界面上显示的难度 (并不是真的自定义难度)
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@ using System.Linq;
|
|||
using System.Reflection;
|
||||
using System.Reflection.Emit;
|
||||
using AquaMai.Config.Attributes;
|
||||
using AquaMai.Core.Attributes;
|
||||
using DB;
|
||||
using HarmonyLib;
|
||||
using MAI2.Util;
|
||||
|
|
@ -20,6 +21,7 @@ namespace AquaMai.Mods.Fancy.GamePlay.CustomNoteTypes;
|
|||
name: "自定义 Note 类型",
|
||||
en: "Custom Note Types."
|
||||
)]
|
||||
[EnableGameVersion(23000)]
|
||||
public class CustomNoteTypes
|
||||
{
|
||||
/*
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
using AquaMai.Config.Attributes;
|
||||
using AquaMai.Core.Attributes;
|
||||
using HarmonyLib;
|
||||
using Monitor;
|
||||
using TMPro;
|
||||
|
|
@ -17,6 +18,7 @@ namespace AquaMai.Mods.Fancy.GamePlay;
|
|||
在歌曲开始界面, 把 TRACK X 字样, DX/标准谱面的显示框, 以及画面下方的滴蜡熊隐藏掉
|
||||
录制谱面确认用
|
||||
""")]
|
||||
[EnableGameVersion(23000)]
|
||||
public class DisableTrackStartTabs
|
||||
{
|
||||
// 在歌曲开始界面, 把 TRACK X 字样, DX/标准谱面的显示框, 以及画面下方的滴蜡熊隐藏掉, 让他看起来不那么 sinmai, 更像是 majdata
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@ namespace AquaMai.Mods.Fancy.GamePlay;
|
|||
en: "Enable the game to correctly judge Touch Hold outside the C zone. Experimental implementation, reported to be unstable",
|
||||
zh: "使游戏可以正常判定非 C 区的 Touch Hold。实验性实现,据反馈不稳定"
|
||||
)]
|
||||
[EnableGameVersion(maxVersion: 25699)]
|
||||
[EnableGameVersion(23000, 25699)]
|
||||
public class FixJudgeTouchHoldInNormalArea
|
||||
{
|
||||
// This patch fixes the issue in GameVersion <= 1.56 where Touch Hold could appear in any zone but were only judged in C zone
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
using System.Collections.Generic;
|
||||
using AquaMai.Config.Attributes;
|
||||
using AquaMai.Core.Attributes;
|
||||
using HarmonyLib;
|
||||
using Manager;
|
||||
using Monitor;
|
||||
|
|
@ -13,6 +14,7 @@ namespace AquaMai.Mods.Fancy.GamePlay;
|
|||
name: "星星缩入动画",
|
||||
en: "Make the Slide Track disappear with an inward-shrinking animation, similar to AstroDX.",
|
||||
zh: "使 Slide Track 消失时有类似 AstroDX 一样的向内缩入的动画")]
|
||||
[EnableGameVersion(23000)]
|
||||
public class SlideArrowAnimation
|
||||
{
|
||||
private static List<SpriteRenderer> _animatingSpriteRenderers = [];
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using AquaMai.Config.Attributes;
|
||||
using AquaMai.Core.Attributes;
|
||||
using HarmonyLib;
|
||||
using MAI2.Util;
|
||||
using Manager;
|
||||
|
|
@ -13,6 +14,7 @@ namespace AquaMai.Mods.Fancy.GamePlay;
|
|||
name: "星星渐入",
|
||||
zh: "让星星在启动拍等待期间从 50% 透明度渐入为 100%,取代原本在击打星星头时就完成渐入",
|
||||
en: "Slides will fade in instead of instantly appearing.")]
|
||||
[EnableGameVersion(23000)]
|
||||
public class SlideFadeInTweak
|
||||
{
|
||||
[HarmonyPrefix]
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
using System.Collections.Generic;
|
||||
using AquaMai.Config.Attributes;
|
||||
using AquaMai.Core.Attributes;
|
||||
using HarmonyLib;
|
||||
using Monitor;
|
||||
using UnityEngine;
|
||||
|
|
@ -16,6 +17,7 @@ namespace AquaMai.Mods.Fancy.GamePlay;
|
|||
反转 Slide 层级, 使新出现的 Slide 像旧框一样显示在上层
|
||||
启用以支持通过叠加多个星星达成的变色效果
|
||||
""")]
|
||||
[EnableGameVersion(23000)]
|
||||
public class SlideLayerReverse
|
||||
{
|
||||
[HarmonyPostfix]
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
using AquaMai.Config.Attributes;
|
||||
using AquaMai.Core.Attributes;
|
||||
using HarmonyLib;
|
||||
using Process.AdvertiseCommercial;
|
||||
|
||||
|
|
@ -9,6 +10,7 @@ namespace AquaMai.Mods.Fancy;
|
|||
defaultOn: true,
|
||||
en: "Ignores 5 mins total timeout on commercial screen.",
|
||||
zh: "忽略闲置时的视频广告画面的5分钟总时长限制")]
|
||||
[EnableGameVersion(23000)]
|
||||
public class IgnoreCommercialTimeout
|
||||
{
|
||||
[HarmonyPrefix]
|
||||
|
|
|
|||
|
|
@ -15,6 +15,7 @@ using System.IO;
|
|||
using System.Linq;
|
||||
using System.Reflection;
|
||||
using System.Reflection.Emit;
|
||||
using AquaMai.Core.Attributes;
|
||||
using Tomlet;
|
||||
using Tomlet.Attributes;
|
||||
using UI.DaisyChainList;
|
||||
|
|
@ -27,6 +28,7 @@ namespace AquaMai.Mods.Fancy;
|
|||
"曲目伪装术",
|
||||
en: "Mimicking KoP final song's hidden track information feature, better paired with custom intro cinematic feature",
|
||||
zh: "仿 KoP 决赛曲揭晓时的曲目信息隐藏特性,配合自定义乐曲开场视频功能使用效果更佳")]
|
||||
[EnableGameVersion(23000)]
|
||||
public class TrackCamouflage
|
||||
{
|
||||
[ConfigEntry(
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ using UnityEngine;
|
|||
|
||||
namespace AquaMai.Mods.Fix;
|
||||
|
||||
[EnableGameVersion(24000)]
|
||||
[EnableGameVersion(25000)]
|
||||
[ConfigSection(exampleHidden: true, defaultOn: true)]
|
||||
public class FixLevelDisplay
|
||||
{
|
||||
|
|
@ -28,7 +28,7 @@ public class FixLevelDisplay
|
|||
GameObject ____difficultyUtageQuesionMarkDoubleDigit)
|
||||
{
|
||||
// 在 KLD 表门和里门不应用修改
|
||||
if (GameInfo.GameVersion >= 25500 && GameManager.IsKaleidxScopeMode)
|
||||
if (GameManager.IsKaleidxScopeMode)
|
||||
{
|
||||
if (Singleton<KaleidxScopeManager>.Instance.gateId == 8 ||
|
||||
Singleton<KaleidxScopeManager>.Instance.gateId == 10)
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using AquaMai.Config.Attributes;
|
||||
using AquaMai.Core;
|
||||
using HarmonyLib;
|
||||
using Manager;
|
||||
using Manager.MaiStudio;
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using AquaMai.Config.Attributes;
|
||||
using AquaMai.Core.Attributes;
|
||||
using AquaMai.Core.Helpers;
|
||||
using HarmonyLib;
|
||||
using MelonLoader;
|
||||
|
|
@ -15,6 +16,7 @@ namespace AquaMai.Mods.GameSystem.Assets;
|
|||
en: "Use custom font(s) as fallback or fully replace the original game font.",
|
||||
zh: "使用自定义字体作为回退(解决中文字形缺失问题),或完全替换游戏原字体",
|
||||
defaultOn: true)]
|
||||
[EnableGameVersion(23000)]
|
||||
public class Fonts
|
||||
{
|
||||
[ConfigEntry(
|
||||
|
|
|
|||
|
|
@ -10,6 +10,7 @@ using Manager;
|
|||
using MelonLoader;
|
||||
using Monitor;
|
||||
using AquaMai.Config.Attributes;
|
||||
using AquaMai.Core;
|
||||
using AquaMai.Core.Helpers;
|
||||
|
||||
namespace AquaMai.Mods.GameSystem.Assets;
|
||||
|
|
|
|||
|
|
@ -20,6 +20,7 @@ namespace AquaMai.Mods.GameSystem.Assets;
|
|||
en: "Custom Play Song Background\nPriority: game source PV > local mp4 PV > jacket",
|
||||
zh: "自定义歌曲游玩界面背景\n优先级: 首先读游戏自带 PV, 然后读本地 mp4 格式 PV, 最后读封面",
|
||||
defaultOn: true)]
|
||||
[EnableGameVersion(23000)]
|
||||
public class MovieLoader
|
||||
{
|
||||
[ConfigEntry(
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@ using Manager;
|
|||
using MelonLoader;
|
||||
using UnityEngine;
|
||||
using AquaMai.Config.Attributes;
|
||||
using AquaMai.Core;
|
||||
using AquaMai.Core.Helpers;
|
||||
using AquaMai.Core.Resources;
|
||||
|
||||
|
|
@ -124,6 +125,28 @@ public class CustomCameraId
|
|||
yield break;
|
||||
}
|
||||
|
||||
private static CameraParameter _gameCameraParam;
|
||||
private static CameraParameter _qrCameraParam;
|
||||
|
||||
[HarmonyPostfix]
|
||||
[HarmonyPatch(typeof(CameraManager), "Initialize")]
|
||||
public static void SetCameraResolution(CameraManager __instance)
|
||||
{
|
||||
WebCamDevice qrDevice = WebCamTexture.devices[Enum.TryParse<CameraManager.CameraTypeEnum>("Chime", out _) ? chimeCamera : leftQrCamera];
|
||||
WebCamTexture qrTexture = new WebCamTexture(qrDevice.name);
|
||||
qrTexture.Play();
|
||||
_qrCameraParam = new CameraParameter(qrTexture.width, qrTexture.height, (int)qrTexture.requestedFPS);
|
||||
AccessTools.Field(typeof(CameraManager), "QrCameraParam").SetValue(__instance, _qrCameraParam);
|
||||
qrTexture.Stop();
|
||||
|
||||
WebCamDevice gameDevice = WebCamTexture.devices[photoCamera];
|
||||
WebCamTexture gameTexture = new WebCamTexture(gameDevice.name);
|
||||
gameTexture.Play();
|
||||
_gameCameraParam = new CameraParameter(gameTexture.width, gameTexture.height, (int)gameTexture.requestedFPS);
|
||||
AccessTools.Field(typeof(CameraManager), "GameCameraParam").SetValue(__instance, _gameCameraParam);
|
||||
gameTexture.Stop();
|
||||
}
|
||||
|
||||
public static void OnBeforePatch()
|
||||
{
|
||||
if (!printCameraList)
|
||||
|
|
|
|||
|
|
@ -16,6 +16,7 @@ namespace AquaMai.Mods.GameSystem;
|
|||
name: "去除倒计时",
|
||||
en: "Disable timers (hidden and set to 65535 seconds).",
|
||||
zh: "去除并隐藏游戏中的倒计时")]
|
||||
[EnableGameVersion(23000)]
|
||||
public class DisableTimeout
|
||||
{
|
||||
[ConfigEntry(
|
||||
|
|
|
|||
|
|
@ -70,7 +70,7 @@ public partial class SinglePlayer
|
|||
zh: "单人模式下刷卡登录直接进入下一个界面,无需跳过倒计时")]
|
||||
public static bool autoSkip = false;
|
||||
|
||||
[EnableGameVersion(21500, noWarn: true)]
|
||||
[EnableGameVersion(23000, noWarn: true)]
|
||||
[EnableIf(nameof(autoSkip))]
|
||||
[HarmonyPostfix]
|
||||
[HarmonyPatch(typeof(EntryMonitor), "DecideEntry")]
|
||||
|
|
|
|||
|
|
@ -14,6 +14,7 @@ using Net.VO.Mai2;
|
|||
using Process;
|
||||
using Util;
|
||||
using System.Runtime.CompilerServices;
|
||||
using AquaMai.Core;
|
||||
|
||||
namespace AquaMai.Mods.GameSystem;
|
||||
|
||||
|
|
@ -29,6 +30,7 @@ namespace AquaMai.Mods.GameSystem;
|
|||
由本 Mod 解锁的内容(除了被你升级过的角色以外)不会上传到你的账户
|
||||
游玩时仍会像未开启解锁一样「获得」那些乐曲/收藏品/段位
|
||||
""")]
|
||||
[EnableGameVersion(23000)]
|
||||
public class Unlock
|
||||
{
|
||||
public static void OnBeforeEnableCheck()
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@
|
|||
using System.Runtime.InteropServices;
|
||||
using System.Threading.Tasks;
|
||||
using AquaMai.Config.Attributes;
|
||||
using AquaMai.Core.Attributes;
|
||||
using UnityEngine;
|
||||
|
||||
namespace AquaMai.Mods.GameSystem;
|
||||
|
|
@ -10,6 +11,7 @@ namespace AquaMai.Mods.GameSystem;
|
|||
name: "图形设置",
|
||||
en: "Resolution Settings / Windowed Mode.",
|
||||
zh: "分辨率设置 / 窗口化")]
|
||||
[EnableGameVersion(23000)]
|
||||
public class Window
|
||||
{
|
||||
[ConfigEntry(
|
||||
|
|
|
|||
|
|
@ -19,6 +19,7 @@ namespace AquaMai.Mods.Tweaks.TimeSaving;
|
|||
name: "登录后直接选歌",
|
||||
en: "Directly enter the song selection screen after login.",
|
||||
zh: "登录完成后直接进入选歌界面")]
|
||||
[EnableGameVersion(23000)]
|
||||
public class EntryToMusicSelection
|
||||
{
|
||||
[ConfigEntry(name: "仅游客模式", zh: "仅在游客模式启用", en: "Enable only in Guest Mode")]
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
using System.Collections.Generic;
|
||||
using AquaMai.Config.Attributes;
|
||||
using AquaMai.Core.Attributes;
|
||||
using HarmonyLib;
|
||||
using Process;
|
||||
using Process.Information;
|
||||
|
|
@ -10,6 +11,7 @@ namespace AquaMai.Mods.Tweaks.TimeSaving;
|
|||
name: "跳过活动提示",
|
||||
en: "Skip possible prompts like \"New area discovered\", \"New songs added\", \"There are events\" during game login/registration.",
|
||||
zh: "跳过登录 / 注册游戏时候可能的 “发现了新的区域哟” “乐曲增加” “有活动哟” 之类的提示")]
|
||||
[EnableGameVersion(23000)]
|
||||
public class SkipEventInfo
|
||||
{
|
||||
[HarmonyPostfix]
|
||||
|
|
|
|||
|
|
@ -20,6 +20,7 @@ namespace AquaMai.Mods.UX;
|
|||
name: "AutoPlay 时不保存成绩",
|
||||
en: "Do not save scores when AutoPlay is used",
|
||||
defaultOn: true)]
|
||||
[EnableGameVersion(25500)]
|
||||
// 收编自 https://github.com/Starrah/DontRuinMyAccount/blob/master/Core.cs
|
||||
public class DontRuinMyAccount
|
||||
{
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
using System;
|
||||
using AquaMai.Config.Attributes;
|
||||
using AquaMai.Core.Attributes;
|
||||
using HarmonyLib;
|
||||
using Manager;
|
||||
using MelonLoader;
|
||||
|
|
@ -13,6 +14,7 @@ namespace AquaMai.Mods.UX;
|
|||
name: "两位数曲目修复",
|
||||
en: "Make track number in top right corner display two digits (in Normal mode)",
|
||||
zh: "让右上角的当前曲目数字可以显示两位数(在普通模式中)")]
|
||||
[EnableGameVersion(25500)]
|
||||
public class FixTrackNumDisplay
|
||||
{
|
||||
private static Sprite[] customSprites;
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@ using System;
|
|||
using MelonLoader;
|
||||
using Manager;
|
||||
using System.Reflection;
|
||||
using AquaMai.Core.Attributes;
|
||||
using MAI2.Util;
|
||||
using UnityEngine;
|
||||
|
||||
|
|
@ -15,6 +16,7 @@ namespace AquaMai.Mods.UX;
|
|||
zh: "按 Enter 键获得 KLD 里门的钥匙 (DXPASS)",
|
||||
defaultOn: true
|
||||
)]
|
||||
[EnableGameVersion(25500)]
|
||||
public class GrantFinalGateKey
|
||||
{
|
||||
[HarmonyPostfix]
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@ using AquaMai.Config.Attributes;
|
|||
using System;
|
||||
using System.Diagnostics;
|
||||
using System.Linq;
|
||||
using AquaMai.Core.Attributes;
|
||||
using MelonLoader;
|
||||
using Manager;
|
||||
|
||||
|
|
@ -14,6 +15,7 @@ namespace AquaMai.Mods.UX;
|
|||
zh: "在正常模式中,隐藏乱码曲 Xaleid◆scopiX",
|
||||
defaultOn: true
|
||||
)]
|
||||
[EnableGameVersion(25500)]
|
||||
public class Hide1879
|
||||
{
|
||||
[HarmonyPostfix]
|
||||
|
|
|
|||
|
|
@ -28,6 +28,7 @@ namespace AquaMai.Mods.UX;
|
|||
en: "Save immediate after playing a song.",
|
||||
zh: "打完一首歌的时候立即向服务器保存成绩",
|
||||
defaultOn: true)]
|
||||
[EnableGameVersion(23000)]
|
||||
public class ImmediateSave
|
||||
{
|
||||
[ConfigEntry(name: "显示保存中提示")]
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@ using System.IO;
|
|||
using System.Linq;
|
||||
using System.Reflection;
|
||||
using AquaMai.Config.Attributes;
|
||||
using AquaMai.Core.Attributes;
|
||||
using HarmonyLib;
|
||||
using MAI2.Util;
|
||||
using Manager;
|
||||
|
|
@ -21,6 +22,7 @@ namespace AquaMai.Mods.UX;
|
|||
name: "判定详情统计",
|
||||
zh: "在游戏总结的计分板中显示击打误差的详细信息(以帧为单位)",
|
||||
en: "Show detailed accuracy info in the score board.")]
|
||||
[EnableGameVersion(23000)]
|
||||
public class JudgeAccuracyInfo
|
||||
{
|
||||
public class AccuracyEntryList
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@ using System.Collections.Generic;
|
|||
using AquaMai.Config.Attributes;
|
||||
using AquaMai.Config.Types;
|
||||
using AquaMai.Core;
|
||||
using AquaMai.Core.Attributes;
|
||||
using AquaMai.Core.Helpers;
|
||||
using AquaMai.Mods.Tweaks.TimeSaving;
|
||||
using HarmonyLib;
|
||||
|
|
@ -18,6 +19,7 @@ namespace AquaMai.Mods.UX;
|
|||
name: "一键登录与登出",
|
||||
en: "One key to proceed to music select (during entry) or end current PC (during music select).",
|
||||
zh: "一键跳过登录过程直接进入选歌界面,或在选歌界面直接结束本局游戏")]
|
||||
[EnableGameVersion(23000)]
|
||||
public class OneKeyEntryEnd
|
||||
{
|
||||
[ConfigEntry(name: "按键")]
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
using AquaMai.Config.Attributes;
|
||||
using AquaMai.Config.Types;
|
||||
using AquaMai.Core.Attributes;
|
||||
using AquaMai.Core.Helpers;
|
||||
using HarmonyLib;
|
||||
using MAI2.Util;
|
||||
|
|
@ -11,8 +12,9 @@ namespace AquaMai.Mods.UX;
|
|||
|
||||
[ConfigSection(
|
||||
name: "一键重开和跳过",
|
||||
en: "One key to retry (1.30+) or skip current chart in gameplay.",
|
||||
zh: "在游戏中途一键重试(1.30+)或跳过当前谱面")]
|
||||
en: "One key to retry or skip current chart in gameplay.",
|
||||
zh: "在游戏中途一键重试或跳过当前谱面")]
|
||||
[EnableGameVersion(23000)]
|
||||
public class OneKeyRetrySkip
|
||||
{
|
||||
[ConfigEntry("重开按键")]
|
||||
|
|
|
|||
|
|
@ -15,6 +15,7 @@ using Process;
|
|||
using UnityEngine;
|
||||
using AquaMai.Config.Attributes;
|
||||
using AquaMai.Config.Types;
|
||||
using AquaMai.Core.Attributes;
|
||||
using MelonLoader;
|
||||
|
||||
namespace AquaMai.Mods.UX.PracticeMode;
|
||||
|
|
@ -23,6 +24,7 @@ namespace AquaMai.Mods.UX.PracticeMode;
|
|||
[ConfigSection(
|
||||
en: "Practice Mode.",
|
||||
name: "练习模式")]
|
||||
[EnableGameVersion(23000)]
|
||||
public class PracticeMode
|
||||
{
|
||||
[ConfigEntry(
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@ using System;
|
|||
using System.Collections.Generic;
|
||||
using AquaMai.Config.Attributes;
|
||||
using AquaMai.Config.Types;
|
||||
using AquaMai.Core.Attributes;
|
||||
using AquaMai.Core.Helpers;
|
||||
using AquaMai.Core.Resources;
|
||||
using AquaMai.Mods.UX.PracticeMode;
|
||||
|
|
@ -20,6 +21,7 @@ namespace AquaMai.Mods.Utils;
|
|||
[ConfigSection(
|
||||
name: "实时触摸显示",
|
||||
zh: "在游戏过程中在副屏显示触摸输入,可用于调试吃和蹭的问题")]
|
||||
[EnableGameVersion(23000)]
|
||||
public static class DisplayTouchInGame
|
||||
{
|
||||
private static GameObject prefab;
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@ using System;
|
|||
using System.Collections.Generic;
|
||||
using System.Reflection;
|
||||
using AquaMai.Config.Attributes;
|
||||
using AquaMai.Core.Attributes;
|
||||
using AquaMai.Core.Helpers;
|
||||
using AquaMai.Core.Resources;
|
||||
using AquaMai.Core.Types;
|
||||
|
|
@ -21,6 +22,7 @@ namespace AquaMai.Mods.Utils;
|
|||
[ConfigSection(
|
||||
name: "移动正解音",
|
||||
en: "Move answer sound")]
|
||||
[EnableGameVersion(23000)]
|
||||
public class MoveAnswerSound : IPlayerSettingsItem
|
||||
{
|
||||
[ConfigEntry(
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@ using System.IO.Compression;
|
|||
using System.Text.RegularExpressions;
|
||||
using System.Threading;
|
||||
using AquaMai.Config.Attributes;
|
||||
using AquaMai.Core.Attributes;
|
||||
using AquaMai.Core.Helpers;
|
||||
using HarmonyLib;
|
||||
using Main;
|
||||
|
|
@ -20,6 +21,7 @@ namespace AquaMai.Mods.Utils;
|
|||
en: "Show error log in the game.",
|
||||
zh: "在游戏中显示错误日志窗口而不是关闭游戏进程",
|
||||
defaultOn: true)]
|
||||
[EnableGameVersion(23000)]
|
||||
public class ShowErrorLog
|
||||
{
|
||||
private static Ui _errorUi;
|
||||
|
|
|
|||
|
|
@ -30,12 +30,12 @@ public static class AssemblyLoader
|
|||
|
||||
public static void LoadAssemblies()
|
||||
{
|
||||
foreach (var (assemblyName, assemblyFileName) in Assemblies)
|
||||
foreach (var assembly in Assemblies)
|
||||
{
|
||||
# if DEBUG
|
||||
MelonLoader.MelonLogger.Msg($"Loading assembly \"{assemblyFileName}\"...");
|
||||
MelonLoader.MelonLogger.Msg($"Loading assembly \"{assembly.Key}\"...");
|
||||
# endif
|
||||
LoadedAssemblies[assemblyName] = LoadAssemblyFromResource(assemblyFileName);
|
||||
LoadedAssemblies[assembly.Key] = LoadAssemblyFromResource(assembly.Value);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Binary file not shown.
Loading…
Reference in New Issue
Block a user