using UnityEngine;
namespace Colosseum.Stats
{
///
/// 캐릭터 스탯 관리 컴포넌트.
/// 6개 기본 스탯과 파생 스탯을 관리.
///
public class CharacterStats : MonoBehaviour
{
[Header("기본 스탯")]
[SerializeField] private CharacterStat strength = new CharacterStat(10f);
[SerializeField] private CharacterStat dexterity = new CharacterStat(10f);
[SerializeField] private CharacterStat intelligence = new CharacterStat(10f);
[SerializeField] private CharacterStat vitality = new CharacterStat(10f);
[SerializeField] private CharacterStat wisdom = new CharacterStat(10f);
[SerializeField] private CharacterStat spirit = new CharacterStat(10f);
// 기본 스탯 접근자
public CharacterStat Strength => strength;
public CharacterStat Dexterity => dexterity;
public CharacterStat Intelligence => intelligence;
public CharacterStat Vitality => vitality;
public CharacterStat Wisdom => wisdom;
public CharacterStat Spirit => spirit;
// 파생 스탯 프로퍼티
// 최대 체력 = VIT * 10
public float MaxHealth => vitality.FinalValue * 10f;
// 최대 마나 = SPI * 5
public float MaxMana => spirit.FinalValue * 5f;
// 물리 대미지 = STR * 2
public float PhysicalDamage => strength.FinalValue * 2f;
// 마법 대미지 = INT * 2
public float MagicDamage => intelligence.FinalValue * 2f;
// 회복력 = WIS * 1.5
public float HealPower => wisdom.FinalValue * 1.5f;
///
/// 스탯 타입으로 CharacterStat 가져오기
///
public CharacterStat GetStat(StatType statType)
{
return statType switch
{
StatType.Strength => strength,
StatType.Dexterity => dexterity,
StatType.Intelligence => intelligence,
StatType.Vitality => vitality,
StatType.Wisdom => wisdom,
StatType.Spirit => spirit,
_ => null,
};
}
}
}