39 lines
1.4 KiB
C#
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);
|
|
}
|