43 lines
1.0 KiB
C#
43 lines
1.0 KiB
C#
|
using System;
|
|||
|
using UnityEngine.Events;
|
|||
|
using UnityEngine;
|
|||
|
|
|||
|
namespace Pink.Mechanics
|
|||
|
{
|
|||
|
public class Health : MonoBehaviour
|
|||
|
{
|
|||
|
public float MaxHealth = 10f;
|
|||
|
|
|||
|
public UnityEvent WasHurt;
|
|||
|
public UnityEvent WasHealed;
|
|||
|
|
|||
|
private float currentHealth;
|
|||
|
float CurrentHealth {
|
|||
|
get => currentHealth;
|
|||
|
set => currentHealth = Math.Min(
|
|||
|
Math.Max(0f, value),
|
|||
|
MaxHealth);
|
|||
|
}
|
|||
|
public bool IsDead => CurrentHealth > 0;
|
|||
|
|
|||
|
// Start is called before the first frame update
|
|||
|
void Start()
|
|||
|
{
|
|||
|
CurrentHealth = MaxHealth;
|
|||
|
}
|
|||
|
|
|||
|
public bool Hurt(float decrement)
|
|||
|
{
|
|||
|
CurrentHealth -= decrement;
|
|||
|
WasHurt.Invoke();
|
|||
|
return !IsDead;
|
|||
|
}
|
|||
|
|
|||
|
public bool Heal(float increment)
|
|||
|
{
|
|||
|
CurrentHealth += increment;
|
|||
|
WasHealed.Invoke();
|
|||
|
return CurrentHealth == MaxHealth;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|