using System; using UnityEngine; using UnityEngine.Events; public class Entity : MonoBehaviour { protected int maxHp; protected int currentHp; protected int attackDamage; private bool isSuicided = false; [SerializeField] protected EntityData data; public static event Action OnEnemyDeathEvent; protected virtual void Awake() { if (data != null) { maxHp = data.maxHealth; currentHp = data.maxHealth; attackDamage = data.attackDamage; } } public virtual void TakeDamage(int damage) { currentHp -= damage; if (currentHp <= 0) { Die(); } } protected virtual void Die() { currentHp = 0; if (!isSuicided) { OnEnemyDeathEvent?.Invoke(1); } Destroy(gameObject); } public virtual void OnHitPlayer(Player player) { player.TakeDamage(attackDamage); isSuicided = true; Die(); } public virtual void RunAI() { } void Update() { RunAI(); } }