using HarmonyLib; using Manager; using Monitor; using UnityEngine; namespace AquaMai.UX; public class JudgeDisplay4B { // 精确到子判定的自定义判定显示, 需要启用自定义皮肤功能 (理论上不启用自定义皮肤不会崩游戏, 只不过此时这个功能显然不会生效) [HarmonyPostfix] [HarmonyPatch(typeof(SlideJudge), "Initialize")] private static void SlideJudgeDisplay4B( SpriteRenderer ___SpriteRenderAdd, SpriteRenderer ___SpriteRender, SlideJudge.SlideJudgeType ____judgeType, SlideJudge.SlideAngle ____angle, NoteJudge.ETiming judge, float msec, bool isBreak ) { var i = isBreak ? 1 : 0; Sprite sprite = CustomSkins.CustomJudgeSlide[i, (int)____judgeType, (int)____angle, (int)judge]; if (sprite != null) { ___SpriteRender.sprite = sprite; } if (isBreak && judge == NoteJudge.ETiming.Critical) { sprite = CustomSkins.CustomJudgeSlide[i, (int)____judgeType, (int)____angle, (int) NoteJudge.ETiming.End]; if (sprite != null) { ___SpriteRenderAdd.sprite = sprite; } } } [HarmonyPostfix] [HarmonyPatch(typeof(JudgeGrade), "Initialize")] private static void JudgeGradeDisplay4B( SpriteRenderer ___SpriteRender, NoteJudge.ETiming judge, float msec, NoteJudge.EJudgeType type ) { var i = (type == NoteJudge.EJudgeType.Break) ? 1 : 0; Sprite sprite = CustomSkins.CustomJudge[i, (int)judge]; if (sprite != null) { ___SpriteRender.sprite = sprite; } } [HarmonyPostfix] [HarmonyPatch(typeof(JudgeGrade), "InitializeBreak")] private static void JudgeGradeBreakDisplay4B( SpriteRenderer ___SpriteRenderAdd, NoteJudge.ETiming judge, float msec, NoteJudge.EJudgeType type ) { if (judge == NoteJudge.ETiming.Critical) { var sprite = CustomSkins.CustomJudge[1, (int) NoteJudge.ETiming.End]; if (sprite != null) { ___SpriteRenderAdd.sprite = sprite; } } } [HarmonyPrefix] [HarmonyPatch(typeof(JudgeGrade), "InitializeBreak")] private static void InitializeBreakFix(ref NoteJudge.EJudgeType type) { type = NoteJudge.EJudgeType.Break; } }