448 lines
12 KiB
C#
448 lines
12 KiB
C#
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<NoteJudge.JuggeTiming> judgeParamTbl = new List<NoteJudge.JuggeTiming>
|
|
{
|
|
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
|
|
}
|
|
}
|