using System;
using System.Collections.Generic;
using UnityEngine;
namespace TKS.OutGame
{
/// 내정 훈련(training.csv + training_ranks.csv · 기획서 §7) — 병종 × 항목(hp|atk|def) × Lv 의 골드·누적 % · 랭크(이름 · 랭크 보너스 % · 승급 골드 · 비용 배율).
public class TrainingTable : ScriptableObject
{
public static readonly string[] Stats = { "hp", "atk", "def" };
[Serializable]
public class Row
{
public UnitType type;
public string stat;
public int lv;
[Tooltip("이 Lv 로 올리는 골드(랭크 1 기준 · × cost_mult)")]
public int goldCost;
[Tooltip("이 Lv 까지의 누적 보너스 %")]
public float statPct;
}
[Serializable]
public class Rank
{
public int rank;
public string nameKo;
public float rankPct;
[Tooltip("다음 랭크 승급 골드(최종 랭크 = 0)")]
public int promoteGold;
public float costMult = 1f;
}
public List rows = new List();
public List ranks = new List();
public Row Get(UnitType t, string stat, int lv)
{
foreach (var r in rows)
if (r.type == t && r.stat == stat && r.lv == lv) return r;
return null;
}
/// 항목당 최대 Lv.
public int MaxLevel
{
get
{
int m = 0;
foreach (var r in rows) m = Mathf.Max(m, r.lv);
return m;
}
}
public Rank RankOf(int rank)
{
foreach (var r in ranks)
if (r.rank == rank) return r;
return null;
}
public int MaxRank
{
get { return ranks.Count; }
}
}
}