GameDev.CoreSystems/Scripts/Damageable.cs

44 lines
1.1 KiB
C#

using UnityEngine;
namespace AsteroidGame.CoreSystems
{
public class Damageable : MonoBehaviour, IDamageable
{
[field: Header("Health")]
[field: SerializeField] public int CurrentHealth { get; private set; }
[field: SerializeField] public int MaxHealth { get; private set; }
[field: Header("Modifiers")]
[field: SerializeField] public bool IsInvulnerable { get; private set; }
#region Methods
public void ModifyHealth(int healthChange)
{
if (IsInvulnerable) return;
CurrentHealth += healthChange;
}
#endregion
#region Setters
public void SetCurrentHealth(int newHealth) => CurrentHealth = newHealth;
public void SetMaxHealth(int newHealth) => MaxHealth = newHealth;
public void SetInvulnerable(bool newState) => IsInvulnerable = newState;
#endregion
#region Getters
public int GetCurrentHealth() => CurrentHealth;
public int GetMaxHealth() => MaxHealth;
public float GetHealthFactor() => (float)CurrentHealth / (float)MaxHealth;
#endregion
}
}