ResourceStat 클래스
ResourceStat은 체력, 허기, 갈증 등의 게임 내 자원을 관리하는 클래스입니다.
- 현재값과 최대값: Current와 Maximum 속성으로 자원의 현재 상태와 최대치를 관리합니다.
- 이벤트 기반 알림: onResourceChanged 이벤트를 통해 자원 변화를 통지합니다.
- 자원 조작 메서드: Add, Subtract, Modify, SetMaximum 등의 메서드로 자원을 조작합니다.
public class ResourceStat : Stat
{
public float Current { get; private set; }
public float Maximum;
public ResourceStat(float baseValue) : base(baseValue)
{
Maximum = baseValue;
Current = baseValue;
}
public event Action<float, float> onResourceChanged; // (current, max)
public void Add(float amount)
{
Current += amount;
Current = Mathf.Clamp(Current, 0, Maximum);
onResourceChanged?.Invoke(Current, Maximum);
}
public void Subtract(float amount)
{
Current -= amount;
Current = Mathf.Clamp(Current, 0, Maximum);
onResourceChanged?.Invoke(Current, Maximum);
}
}
ResourceHandler 클래스
ResourceHandler는 게임 내 자원 객체(아이템, 수집 가능한 리소스 등)에 대한 처리를 담당합니다.
- IDamageable 인터페이스 구현: 데미지를 받을 수 있는 객체로서의 기능을 제공합니다.
- 시각적 피드백: DOTween을 활용한 피격 효과를 제공합니다.
public class ResourceHandler : MonoBehaviour, IDamageable
{
public ResourceStat Hp { get; private set; } = new ResourceStat(100f);
public void TakeDamage(float damage)
{
Hp.Subtract(damage);
transform.DOScale(0.8f, 0.1f).OnComplete(() => transform.DOScale(1f, 0.1f));
}
}