using System; using System.Collections.Generic; using UnityEngine; // Token: 0x0200003F RID: 63 public class NoteJudge { // Token: 0x060001E1 RID: 481 RVA: 0x000070A2 File Offset: 0x000062A2 public static float GetNoteCheckStart(NoteJudge.EJudgeType type) { return NoteJudge.judgeParamTbl[(int)type][0]; } // Token: 0x060001E2 RID: 482 RVA: 0x000070B5 File Offset: 0x000062B5 public static float GetNoteCheckEnd(NoteJudge.EJudgeType type) { return NoteJudge.judgeParamTbl[(int)type][14]; } // Token: 0x060001E4 RID: 484 RVA: 0x00003598 File Offset: 0x00002798 public static void Initialize() { } // Token: 0x060001E5 RID: 485 RVA: 0x00007268 File Offset: 0x00006468 public static NoteJudge.ETiming GetJudgeTiming(ref float _fMsec, float optionJudgeTiming, NoteJudge.EJudgeType type) { _fMsec -= optionJudgeTiming * 16.666666f; if (type == NoteJudge.EJudgeType.SlideOut) { _fMsec += NoteJudge.JudgeAdjustMs; } NoteJudge.ETiming etiming; if (_fMsec < NoteJudge.judgeParamTbl[(int)type][0]) { etiming = NoteJudge.ETiming.TooFast; } else if (_fMsec < NoteJudge.judgeParamTbl[(int)type][1]) { etiming = NoteJudge.ETiming.FastGood; } else if (_fMsec < NoteJudge.judgeParamTbl[(int)type][2]) { etiming = NoteJudge.ETiming.FastGreat3rd; } else if (_fMsec < NoteJudge.judgeParamTbl[(int)type][3]) { etiming = NoteJudge.ETiming.FastGreat2nd; } else if (_fMsec < NoteJudge.judgeParamTbl[(int)type][4]) { etiming = NoteJudge.ETiming.FastGreat; } else if (_fMsec < NoteJudge.judgeParamTbl[(int)type][5]) { etiming = NoteJudge.ETiming.FastPerfect2nd; } else if (_fMsec < NoteJudge.judgeParamTbl[(int)type][6]) { etiming = NoteJudge.ETiming.FastPerfect; } else if (_fMsec <= NoteJudge.judgeParamTbl[(int)type][8]) { etiming = NoteJudge.ETiming.Critical; } else if (_fMsec <= NoteJudge.judgeParamTbl[(int)type][9]) { etiming = NoteJudge.ETiming.LatePerfect; } else if (_fMsec <= NoteJudge.judgeParamTbl[(int)type][10]) { etiming = NoteJudge.ETiming.LatePerfect2nd; } else if (_fMsec <= NoteJudge.judgeParamTbl[(int)type][11]) { etiming = NoteJudge.ETiming.LateGreat; } else if (_fMsec <= NoteJudge.judgeParamTbl[(int)type][12]) { etiming = NoteJudge.ETiming.LateGreat2nd; } else if (_fMsec <= NoteJudge.judgeParamTbl[(int)type][13]) { etiming = NoteJudge.ETiming.LateGreat3rd; } else if (_fMsec <= NoteJudge.judgeParamTbl[(int)type][14]) { etiming = NoteJudge.ETiming.LateGood; } else { etiming = NoteJudge.ETiming.TooLate; } _fMsec -= NoteJudge.JudgeAdjustMs; return etiming; } // Token: 0x060001E6 RID: 486 RVA: 0x00007424 File Offset: 0x00006624 public static NoteJudge.ETiming GetSlideJudgeTiming(ref float _fMsec, float optionJudgeTiming, NoteJudge.EJudgeType type, float lastWaitTime) { float num = lastWaitTime / 4f; float num2 = NoteJudge.judgeParamTbl[2][6] - num; float num3 = NoteJudge.judgeParamTbl[2][8] + num; float num4 = NoteJudge.judgeParamTbl[2][0]; float num5 = NoteJudge.judgeParamTbl[2][14]; float num6 = _fMsec - optionJudgeTiming * 16.666666f; NoteJudge.ETiming etiming; if (type != NoteJudge.EJudgeType.SlideOut) { etiming = NoteJudge.GetJudgeTiming(ref _fMsec, optionJudgeTiming, NoteJudge.EJudgeType.SlideOut); } else if (num2 <= num6 && num6 <= num3 && num4 <= num6 && num6 <= num5) { etiming = NoteJudge.ETiming.Critical; } else { etiming = NoteJudge.GetJudgeTiming(ref _fMsec, optionJudgeTiming, NoteJudge.EJudgeType.SlideOut); } return etiming; } // Token: 0x060001E7 RID: 487 RVA: 0x000074C8 File Offset: 0x000066C8 public static NoteJudge.JudgeBox ConvertJudge(NoteJudge.ETiming timing) { switch (timing) { case NoteJudge.ETiming.TooFast: case NoteJudge.ETiming.TooLate: return NoteJudge.JudgeBox.Miss; case NoteJudge.ETiming.FastGood: case NoteJudge.ETiming.LateGood: return NoteJudge.JudgeBox.Good; case NoteJudge.ETiming.FastGreat3rd: case NoteJudge.ETiming.FastGreat2nd: case NoteJudge.ETiming.FastGreat: case NoteJudge.ETiming.LateGreat: case NoteJudge.ETiming.LateGreat2nd: case NoteJudge.ETiming.LateGreat3rd: return NoteJudge.JudgeBox.Great; case NoteJudge.ETiming.FastPerfect2nd: case NoteJudge.ETiming.FastPerfect: case NoteJudge.ETiming.LatePerfect: case NoteJudge.ETiming.LatePerfect2nd: return NoteJudge.JudgeBox.Perfect; case NoteJudge.ETiming.Critical: return NoteJudge.JudgeBox.Critical; default: return NoteJudge.JudgeBox.Miss; } } // Token: 0x060001E8 RID: 488 RVA: 0x00007524 File Offset: 0x00006724 public static NoteJudge.ETiming JudgeHoldTotal(float holdTime, float holdReleaseTime, NoteJudge.ETiming timing, bool bodyOn, bool isTouchHold) { float num = (isTouchHold ? NoteJudge.JudgeTouchHoldHeadFrame : NoteJudge.JudgeHoldHeadFrame); if (holdTime <= num + NoteJudge.JudgeHoldTailFrame) { return timing; } holdTime -= num + NoteJudge.JudgeHoldTailFrame; if (!bodyOn) { return NoteJudge.holdJudgeParam[4][(int)timing]; } int num2 = Mathf.CeilToInt(holdReleaseTime / holdTime * 100f); if (num2 > 100) { num2 = 100; } for (int i = 0; i < NoteJudge.holdJudgePercent.Length; i++) { if (NoteJudge.holdJudgePercent[i] >= num2) { return NoteJudge.holdJudgeParam[i][(int)timing]; } } return NoteJudge.holdJudgeParam[4][(int)timing]; } // Token: 0x04000138 RID: 312 public static float JudgeAdjustMs = 50f; // Token: 0x04000139 RID: 313 public static float JudgeHoldHeadFrame = 50f + NoteJudge.JudgeAdjustMs; // Token: 0x0400013A RID: 314 public static float JudgeHoldTailFrame = 150f + NoteJudge.JudgeAdjustMs; // Token: 0x0400013B RID: 315 public static float JudgeTouchHoldHeadFrame = 200f + NoteJudge.JudgeAdjustMs; // Token: 0x0400013C RID: 316 public static float JudgeTouchHoldTailFrame = 150f + NoteJudge.JudgeAdjustMs; // Token: 0x0400013D RID: 317 private static readonly List judgeParamTbl = new List { new NoteJudge.JuggeTiming(new float[] { -9f, -6f, -5f, -4f, -3f, -2f, -1f, 0f, 1f, 2f, 3f, 4f, 5f, 6f, 9f }), new NoteJudge.JuggeTiming(new float[] { -9f, -6f, -5f, -4f, -3f, -2f, -1f, 0f, 1f, 4f, 8f, 9f, 10f, 11f, 14f }), new NoteJudge.JuggeTiming(new float[] { -36f, -26f, -22f, -18f, -14f, -14f, -14f, 0f, 14f, 14f, 14f, 16f, 22f, 26f, 36f }), new NoteJudge.JuggeTiming(new float[] { -9f, -9f, -9f, -9f, -9f, -9f, -9f, 0f, 9f, 10.5f, 12f, 13f, 14f, 15f, 18f }), new NoteJudge.JuggeTiming(new float[] { -9f, -9f, -9f, -9f, -9f, -9f, -9f, 0f, 9f, 9f, 9f, 9f, 9f, 9f, 9f }), new NoteJudge.JuggeTiming(new float[] { -9f, -6f, -5f, -4f, -3f, -2f, -1f, 0f, 1f, 2f, 3f, 4f, 5f, 6f, 9f }) }; // Token: 0x0400013E RID: 318 private static readonly int[] holdJudgePercent = new int[] { 0, 33, 67, 95, 100 }; // Token: 0x0400013F RID: 319 private static readonly NoteJudge.ETiming[][] holdJudgeParam = new NoteJudge.ETiming[][] { new NoteJudge.ETiming[] { NoteJudge.ETiming.FastGood, NoteJudge.ETiming.FastGreat, NoteJudge.ETiming.FastGreat, NoteJudge.ETiming.FastGreat, NoteJudge.ETiming.FastGreat, NoteJudge.ETiming.FastPerfect, NoteJudge.ETiming.FastPerfect, NoteJudge.ETiming.Critical, NoteJudge.ETiming.LatePerfect, NoteJudge.ETiming.LatePerfect, NoteJudge.ETiming.LateGreat, NoteJudge.ETiming.LateGreat, NoteJudge.ETiming.LateGreat, NoteJudge.ETiming.LateGreat, NoteJudge.ETiming.LateGood }, new NoteJudge.ETiming[] { NoteJudge.ETiming.FastGood, NoteJudge.ETiming.FastGreat, NoteJudge.ETiming.FastGreat, NoteJudge.ETiming.FastGreat, NoteJudge.ETiming.FastGreat, NoteJudge.ETiming.FastPerfect, NoteJudge.ETiming.FastPerfect, NoteJudge.ETiming.LatePerfect, NoteJudge.ETiming.LatePerfect, NoteJudge.ETiming.LatePerfect, NoteJudge.ETiming.LateGreat, NoteJudge.ETiming.LateGreat, NoteJudge.ETiming.LateGreat, NoteJudge.ETiming.LateGreat, NoteJudge.ETiming.LateGood }, new NoteJudge.ETiming[] { NoteJudge.ETiming.FastGood, NoteJudge.ETiming.FastGood, NoteJudge.ETiming.FastGreat, NoteJudge.ETiming.FastGreat, NoteJudge.ETiming.FastGreat, NoteJudge.ETiming.FastGreat, NoteJudge.ETiming.FastGreat, NoteJudge.ETiming.LateGreat, NoteJudge.ETiming.LateGreat, NoteJudge.ETiming.LateGreat, NoteJudge.ETiming.LateGreat, NoteJudge.ETiming.LateGreat, NoteJudge.ETiming.LateGreat, NoteJudge.ETiming.LateGood, NoteJudge.ETiming.LateGood }, new NoteJudge.ETiming[] { NoteJudge.ETiming.FastGood, NoteJudge.ETiming.FastGood, NoteJudge.ETiming.FastGood, NoteJudge.ETiming.FastGood, NoteJudge.ETiming.FastGood, NoteJudge.ETiming.FastGood, NoteJudge.ETiming.FastGood, NoteJudge.ETiming.LateGood, NoteJudge.ETiming.LateGood, NoteJudge.ETiming.LateGood, NoteJudge.ETiming.LateGood, NoteJudge.ETiming.LateGood, NoteJudge.ETiming.LateGood, NoteJudge.ETiming.LateGood, NoteJudge.ETiming.LateGood }, new NoteJudge.ETiming[] { NoteJudge.ETiming.TooFast, NoteJudge.ETiming.FastGood, NoteJudge.ETiming.FastGood, NoteJudge.ETiming.FastGood, NoteJudge.ETiming.FastGood, NoteJudge.ETiming.FastGood, NoteJudge.ETiming.FastGood, NoteJudge.ETiming.LateGood, NoteJudge.ETiming.LateGood, NoteJudge.ETiming.LateGood, NoteJudge.ETiming.LateGood, NoteJudge.ETiming.LateGood, NoteJudge.ETiming.LateGood, NoteJudge.ETiming.LateGood, NoteJudge.ETiming.TooLate } }; // Token: 0x02000956 RID: 2390 public enum EJudgeType { // Token: 0x04005F23 RID: 24355 Tap, // Token: 0x04005F24 RID: 24356 HoldOut, // Token: 0x04005F25 RID: 24357 SlideOut, // Token: 0x04005F26 RID: 24358 Touch, // Token: 0x04005F27 RID: 24359 ExTap, // Token: 0x04005F28 RID: 24360 Break, // Token: 0x04005F29 RID: 24361 End } // Token: 0x02000957 RID: 2391 public enum ETiming { // Token: 0x04005F2B RID: 24363 TooFast, // Token: 0x04005F2C RID: 24364 FastGood, // Token: 0x04005F2D RID: 24365 FastGreat3rd, // Token: 0x04005F2E RID: 24366 FastGreat2nd, // Token: 0x04005F2F RID: 24367 FastGreat, // Token: 0x04005F30 RID: 24368 FastPerfect2nd, // Token: 0x04005F31 RID: 24369 FastPerfect, // Token: 0x04005F32 RID: 24370 Critical, // Token: 0x04005F33 RID: 24371 LatePerfect, // Token: 0x04005F34 RID: 24372 LatePerfect2nd, // Token: 0x04005F35 RID: 24373 LateGreat, // Token: 0x04005F36 RID: 24374 LateGreat2nd, // Token: 0x04005F37 RID: 24375 LateGreat3rd, // Token: 0x04005F38 RID: 24376 LateGood, // Token: 0x04005F39 RID: 24377 TooLate, // Token: 0x04005F3A RID: 24378 End } // Token: 0x02000958 RID: 2392 public enum JudgeBox { // Token: 0x04005F3C RID: 24380 Miss, // Token: 0x04005F3D RID: 24381 Good, // Token: 0x04005F3E RID: 24382 Great, // Token: 0x04005F3F RID: 24383 Perfect, // Token: 0x04005F40 RID: 24384 Critical, // Token: 0x04005F41 RID: 24385 End } // Token: 0x02000959 RID: 2393 private class JuggeTiming { // Token: 0x06004C5E RID: 19550 RVA: 0x0019A6F0 File Offset: 0x001998F0 public JuggeTiming(float[] array) { for (int i = 0; i < array.Length; i++) { this.judgeFlameList[i] = array[i] * 16.666666f + NoteJudge.JudgeAdjustMs; } } // Token: 0x17000810 RID: 2064 public float this[int i] { get { return this.judgeFlameList[i]; } set { this.judgeFlameList[i] = value; } } // Token: 0x04005F42 RID: 24386 private float[] judgeFlameList = new float[15]; } // Token: 0x0200095A RID: 2394 private enum HoldCheckPoint { // Token: 0x04005F44 RID: 24388 Critical, // Token: 0x04005F45 RID: 24389 Perfect, // Token: 0x04005F46 RID: 24390 Great, // Token: 0x04005F47 RID: 24391 Good, // Token: 0x04005F48 RID: 24392 Miss, // Token: 0x04005F49 RID: 24393 End } }