Files
2026-07-30 23:15:58 +08:00

39 lines
1.4 KiB
C#

using UnityEngine;
/// <summary>
/// Documentation text normalized.
/// </summary>
[CreateAssetMenu(fileName = "NoteJudgeConfig", menuName = "Game/NoteJudgeConfig")]
public class NoteJudgeConfig : ScriptableObject
{
[Header("Perfect Window")]
[Tooltip("Perfect early tolerance (seconds)")]
public float perfectEarlyRange = 0.1f;
[Tooltip("Perfect late tolerance (seconds)")]
public float perfectLateRange = 0.1f;
[Header("Great Window")]
[Tooltip("Great early tolerance (seconds)")]
public float greatEarlyRange = 0.2f;
[Tooltip("Great late tolerance (seconds)")]
public float greatLateRange = 0.2f;
[Header("Good Window")]
[Tooltip("Good early tolerance (seconds)")]
public float goodEarlyRange = 0.3f;
[Tooltip("Good late tolerance (seconds)")]
public float goodLateRange = 0.3f;
[Header("Miss Window")]
[Tooltip("Miss deadline after hitTime (late only, seconds)")]
public float missRange = 0.2f;
// Legacy symmetric accessors for compatibility during migration
[System.Obsolete("Use perfectEarlyRange/perfectLateRange instead")]
public float perfectRange => Mathf.Max(perfectEarlyRange, perfectLateRange);
[System.Obsolete("Use greatEarlyRange/greatLateRange instead")]
public float greatRange => Mathf.Max(greatEarlyRange, greatLateRange);
[System.Obsolete("Use goodEarlyRange/goodLateRange instead")]
public float goodRange => Mathf.Max(goodEarlyRange, goodLateRange);
}