60 lines
1.7 KiB
C#
60 lines
1.7 KiB
C#
// 리듬게임 점수/콤보/판정수 누적 (Unity 비의존 순수 로직 - 테스트하기 쉬움)
|
|
public class RhythmScore
|
|
{
|
|
// 판정별 기본 점수
|
|
private const int PerfectPoint = 100;
|
|
private const int GoodPoint = 50;
|
|
private const int BadPoint = 10;
|
|
|
|
public int Score { get; private set; }
|
|
public int Combo { get; private set; }
|
|
public int MaxCombo { get; private set; }
|
|
|
|
public int PerfectCount { get; private set; }
|
|
public int GoodCount { get; private set; }
|
|
public int BadCount { get; private set; }
|
|
public int MissCount { get; private set; }
|
|
|
|
public int TotalJudged => PerfectCount + GoodCount + BadCount + MissCount;
|
|
|
|
// 판정 하나를 점수에 반영
|
|
public void Apply(Result result)
|
|
{
|
|
switch (result)
|
|
{
|
|
case Result.Perfect:
|
|
PerfectCount++;
|
|
Combo++;
|
|
Score += PerfectPoint + Combo; // 콤보가 쌓일수록 보너스 (연속 보상)
|
|
break;
|
|
case Result.Good:
|
|
GoodCount++;
|
|
Combo++;
|
|
Score += GoodPoint + Combo;
|
|
break;
|
|
case Result.Bad:
|
|
BadCount++;
|
|
Combo = 0; // 콤보 끊김
|
|
Score += BadPoint;
|
|
break;
|
|
case Result.Miss:
|
|
MissCount++;
|
|
Combo = 0; // 콤보 끊김
|
|
break;
|
|
}
|
|
|
|
if (Combo > MaxCombo) MaxCombo = Combo;
|
|
}
|
|
|
|
public void Reset()
|
|
{
|
|
Score = 0;
|
|
Combo = 0;
|
|
MaxCombo = 0;
|
|
PerfectCount = 0;
|
|
GoodCount = 0;
|
|
BadCount = 0;
|
|
MissCount = 0;
|
|
}
|
|
}
|