using UnityEngine;
namespace EerieVillage.Progression
{
///
/// 플레이어 레벨업 진행도. BT12-Dev v1 PlayerStats(패시브 보정)와 직무 분리 (Single Responsibility).
/// EXP는 적 처치 시 누적. 임계점 도달 시 OnLevelUp 발화.
/// EXP 곡선 = LevelXPTableLoader 영역 JSON SOT.
///
public class PlayerProgression : MonoBehaviour
{
public int Level { get; private set; } = 1;
public int CurrentXP { get; private set; } = 0;
public int XPToNextLevel { get; private set; } = 100;
/// 레벨업 발화 — int = new Level. LevelUpManager 구독 hook.
public event System.Action OnLevelUp;
void Awake()
{
XPToNextLevel = LevelXPTableLoader.GetXPToNextLevel(Level);
}
/// 적 처치 시 호출 — XP 획득. amount <= 0 시 무시.
public void GainXP(int amount)
{
if (amount <= 0) return;
CurrentXP += amount;
while (CurrentXP >= XPToNextLevel)
{
CurrentXP -= XPToNextLevel;
Level++;
XPToNextLevel = LevelXPTableLoader.GetXPToNextLevel(Level);
OnLevelUp?.Invoke(Level);
}
}
}
}