47 lines
1.0 KiB
C#
47 lines
1.0 KiB
C#
using UnityEngine;
|
|
using RR.Common.Interfaces;
|
|
|
|
namespace RR.Game2D.Behaviour
|
|
{
|
|
[System.Serializable]
|
|
public class Health : MonoBehaviour
|
|
{
|
|
[SerializeField] private int maxHealth = 3;
|
|
[SerializeField] private int currentHealth;
|
|
private IDamageable owner;
|
|
|
|
public int MaxHealth => maxHealth;
|
|
public int CurrentHealth => currentHealth;
|
|
|
|
public void SetOwner(IDamageable owner)
|
|
{
|
|
this.owner = owner;
|
|
}
|
|
|
|
public void SetMaxHealth(int value)
|
|
{
|
|
maxHealth = value;
|
|
currentHealth = maxHealth;
|
|
}
|
|
|
|
public void TakeDamage(int amount)
|
|
{
|
|
currentHealth -= amount;
|
|
if (currentHealth <= 0)
|
|
{
|
|
owner?.Die();
|
|
}
|
|
}
|
|
|
|
public void Heal(int amount)
|
|
{
|
|
currentHealth = Mathf.Min(currentHealth + amount, maxHealth);
|
|
}
|
|
|
|
public void ResetHealth()
|
|
{
|
|
currentHealth = maxHealth;
|
|
}
|
|
}
|
|
}
|