using System;
using System.Collections.Generic;
using UnityEngine;

// ============================================================================
// WaveData
// ----------------------------------------------------------------------------
// 한 웨이브의 정의. .asset으로 만들어 WaveManager에 순서대로 할당.
//
// 예시:
//   WaveName        = "Wave 1"
//   Spawns          = [(BlackMan, 3), (Robot, 1)]    → BlackMan 3마리 + Robot 1마리
//   TimeLimit       = 30                              → 30초 안에 다 잡아야 함
//   SpawnInterval   = 0.5                             → 마리 사이 0.5초 간격
//   StartDelay      = 2                               → 웨이브 시작 전 2초 대기
// ============================================================================
[CreateAssetMenu(fileName = "WaveData", menuName = "Combat/WaveData")]
public class WaveData : ScriptableObject
{
    public string WaveName;                  // UI/로그용 식별자
    public List<SpawnEntry> Spawns = new();  // 스폰할 적 종류와 수량 목록
    public float TimeLimit = 30f;            // 이 시간 안에 모두 잡지 못하면 패배 (초)
    public float SpawnInterval = 0.3f;       // 적 한 마리씩 스폰하는 시간 간격
    public float StartDelay = 0f;            // 웨이브 시작 전 대기 시간 (인트로/카운트다운 시간)
}

// 한 종류의 적을 몇 마리 스폰할지 표현.
[Serializable]
public class SpawnEntry
{
    public Enemy EnemyPrefab;  // 스폰할 Enemy 프리팹
    public int Count = 1;       // 마리 수
}
