Files
ichni_Official/Assets/Scripts/Manager/PlayingRecorder.cs

106 lines
2.8 KiB
C#
Raw Normal View History

2025-06-03 02:42:28 -04:00
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
namespace Ichni.RhythmGame
{
public class PlayingRecorder
{
public int perfectCount;
public int goodCount;
public int badCount;
public int missCount;
public int totalCount;
public float accuracy;
public int currentCombo;
public int maxCombo;
public bool isFullCombo;
public bool isAllPerfect;
public void Initialize()
{
perfectCount = 0;
goodCount = 0;
badCount = 0;
missCount = 0;
totalCount = 0;
accuracy = 100f;
currentCombo = 0;
maxCombo = 0;
isFullCombo = true;
isAllPerfect = true;
}
private void UpdateAccuracy()
{
float baseValue = perfectCount + goodCount * 0.7f + badCount * 0.3f;
if (totalCount > 0)
{
accuracy = baseValue / totalCount * 100f;
}
else
{
accuracy = 100f; // 如果没有任何击打准确率为100%
}
}
private void AddCombo()
{
currentCombo++;
maxCombo = Mathf.Max(maxCombo, currentCombo);
}
private void ResetCombo()
{
currentCombo = 0;
}
public void AddPerfect()
{
perfectCount++;
totalCount++;
AddCombo();
UpdateAccuracy();
2025-07-08 14:28:40 -04:00
GameManager.instance.gameUICanvas.UpdateAccuracy(accuracy);
GameManager.instance.gameUICanvas.UpdateCombo(currentCombo);
2025-06-03 02:42:28 -04:00
}
public void AddGood()
{
goodCount++;
totalCount++;
AddCombo();
UpdateAccuracy();
isAllPerfect = false;
2025-07-08 14:28:40 -04:00
GameManager.instance.gameUICanvas.UpdateAccuracy(accuracy);
GameManager.instance.gameUICanvas.UpdateCombo(currentCombo);
2025-06-03 02:42:28 -04:00
}
public void AddBad()
{
badCount++;
totalCount++;
ResetCombo();
UpdateAccuracy();
isFullCombo = false;
isAllPerfect = false;
2025-07-08 14:28:40 -04:00
GameManager.instance.gameUICanvas.UpdateAccuracy(accuracy);
GameManager.instance.gameUICanvas.UpdateCombo(currentCombo);
2025-06-03 02:42:28 -04:00
}
public void AddMiss()
{
missCount++;
totalCount++;
ResetCombo();
UpdateAccuracy();
isFullCombo = false;
isAllPerfect = false;
2025-07-08 14:28:40 -04:00
GameManager.instance.gameUICanvas.UpdateAccuracy(accuracy);
GameManager.instance.gameUICanvas.UpdateCombo(currentCombo);
2025-06-03 02:42:28 -04:00
}
}
}