Files
ichni_Official/Assets/Scripts/Manager/PlayingRecorder.cs
SoulliesOfficial d4e860fa16 initial
2025-06-03 02:42:28 -04:00

106 lines
2.8 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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();
GameManager.instance.gameUIController.UpdateAccuracy(accuracy);
GameManager.instance.gameUIController.UpdateCombo(currentCombo);
}
public void AddGood()
{
goodCount++;
totalCount++;
AddCombo();
UpdateAccuracy();
isAllPerfect = false;
GameManager.instance.gameUIController.UpdateAccuracy(accuracy);
GameManager.instance.gameUIController.UpdateCombo(currentCombo);
}
public void AddBad()
{
badCount++;
totalCount++;
ResetCombo();
UpdateAccuracy();
isFullCombo = false;
isAllPerfect = false;
GameManager.instance.gameUIController.UpdateAccuracy(accuracy);
GameManager.instance.gameUIController.UpdateCombo(currentCombo);
}
public void AddMiss()
{
missCount++;
totalCount++;
ResetCombo();
UpdateAccuracy();
isFullCombo = false;
isAllPerfect = false;
GameManager.instance.gameUIController.UpdateAccuracy(accuracy);
GameManager.instance.gameUIController.UpdateCombo(currentCombo);
}
}
}