using UnityEngine; /// /// Documentation text normalized. /// [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); }