using System.Collections.Generic;
using UnityEngine;

public class Note
{
    [HideInInspector] public float Time;   // 판정 시각(초)
    [HideInInspector] public int Lane;     // 레인 인덱스 (단일 레인이면 0)
}

[CreateAssetMenu(fileName = "RhythmChart", menuName = "CatsRoom/RhythmChart")]
public class RhythmChart : ScriptableObject
{
    public AudioClip SongClip;          // 노래 파일
    public TextAsset MidiFile;          // FL Studio에서 내보낸 .mid (확장자를 .bytes로 임포트)
    public float Offset;                // 곡 시작과 MIDI 0틱 사이 보정(초)
    public float BpmOverride;           // 0이면 MIDI 내장 템포 사용, >0이면 이 BPM으로 강제
    public List<int> LanePitches = new();  // 비우면 모든 노트를 레인 0으로. 채우면 (index=레인) 매핑

    // MIDI를 파싱해 노트 시간 목록 생성
    public List<Note> GenerateNotes()
    {
        if (MidiFile == null)
        {
            Debug.LogWarning($"[RhythmChart] {name}: MidiFile이 비어 있습니다.");
            return new List<Note>();
        }

        return MidiChartParser.Parse(MidiFile.bytes, Offset, BpmOverride, LanePitches);
    }
}
