Files
M-Gameton-06/Gameton-06/Assets/HealthHeartSystem/Scripts/PlayerStats.cs
2025-02-04 12:42:38 +09:00

68 lines
1.5 KiB
C#

/*
* Author: ariel oliveira [o.arielg@gmail.com]
*/
using UnityEngine;
public class PlayerStats : MonoBehaviour
{
public delegate void OnHealthChangedDelegate();
public OnHealthChangedDelegate onHealthChangedCallback;
#region Sigleton
private static PlayerStats instance;
public static PlayerStats Instance
{
get
{
if (instance == null)
instance = FindObjectOfType<PlayerStats>();
return instance;
}
}
#endregion
[SerializeField]
private float health;
[SerializeField]
private float maxHealth;
[SerializeField]
private float maxTotalHealth;
public float Health { get { return health; } }
public float MaxHealth { get { return maxHealth; } }
public float MaxTotalHealth { get { return maxTotalHealth; } }
public void Heal(float health)
{
this.health += health;
ClampHealth();
}
public void TakeDamage(float dmg)
{
health -= dmg;
ClampHealth();
}
public void AddHealth()
{
if (maxHealth < maxTotalHealth)
{
maxHealth += 1;
health = maxHealth;
if (onHealthChangedCallback != null)
onHealthChangedCallback.Invoke();
}
}
void ClampHealth()
{
health = Mathf.Clamp(health, 0, maxHealth);
if (onHealthChangedCallback != null)
onHealthChangedCallback.Invoke();
}
}