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; } } } }