public virtual void Initialize() { Health = _unit.UnitData.MaxHealth; MaxHealth = Health; OnCurrentHealthChanged?.Invoke(Health); OnMaxHealthChanged?.Invoke(MaxHealth); }
public virtual void TakeDamage(int damage, DamageType damageType, Unit attacker) { Health -= damage; OnCurrentHealthChanged?.Invoke(Health); if (Health <= 0) { OnDefeated?.Invoke(); } OnTakeDamage?.Invoke(damage, damageType, attacker); }
/// <summary> /// The player or enemy is getting damaged. /// </summary> /// <param name="damage"></param> public virtual void TakeDamage(int damage) { damage = Mathf.Clamp(damage, 0, int.MaxValue); // Subtract damage from health. CurrentHealth.BaseValue -= damage; Debug.Log(transform.name + " took " + damage + " damage!"); // Update the UI using the listener. onCurrentHealthChangedCallback.Invoke(); if (CurrentHealth.BaseValue <= 0) { Die(); } }