51 lines
1.4 KiB
C#
51 lines
1.4 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
|
|
namespace TKS.OutGame
|
|
{
|
|
/// <summary>영웅 레벨 1~60(hero_levels.csv · 기획서 §3-3) — 다음 레벨 경험·골드 · 누적 스탯 % · 해금 챕터.</summary>
|
|
public class LevelTable : ScriptableObject
|
|
{
|
|
[Serializable]
|
|
public class Row
|
|
{
|
|
public int lv;
|
|
public int expToNext;
|
|
public int goldCost;
|
|
[Tooltip("이 레벨의 스탯 보너스 %(누적)")]
|
|
public float statPct;
|
|
[Tooltip("이 레벨까지 올리려면 클리어해야 하는 챕터")]
|
|
public int capChapter;
|
|
}
|
|
|
|
public List<Row> rows = new List<Row>();
|
|
|
|
public Row Get(int lv)
|
|
{
|
|
foreach (var r in rows)
|
|
if (r.lv == lv) return r;
|
|
return null;
|
|
}
|
|
|
|
public int MaxLevel
|
|
{
|
|
get
|
|
{
|
|
int m = 1;
|
|
foreach (var r in rows) m = Mathf.Max(m, r.lv);
|
|
return m;
|
|
}
|
|
}
|
|
|
|
/// <summary>클리어 최고 챕터 chapterMax 로 올릴 수 있는 최대 레벨.</summary>
|
|
public int CapFor(int chapterMax)
|
|
{
|
|
int cap = 1;
|
|
foreach (var r in rows)
|
|
if (r.capChapter <= chapterMax) cap = Mathf.Max(cap, r.lv);
|
|
return cap;
|
|
}
|
|
}
|
|
}
|