| | |
| | | using Assets.Scripts.Enums; |
| | | using System; |
| | | using System.Collections; |
| | | using System.Collections.Generic; |
| | | using UnityEngine; |
| | | |
| | | public class Damageable : MonoBehaviour |
| | | { |
| | | #if (UNITY_EDITOR) |
| | | // ONLY FOR DEBUG USE |
| | | [SerializeField] |
| | | private bool selfDamage = false; |
| | | #endif |
| | | Animator animator; |
| | | |
| | | [SerializeField] |
| | |
| | | private bool isInvincible = false; |
| | | private float timeSinceHit = 0f; |
| | | public float invincibilityTime = 0.25f; |
| | | |
| | | public SoundName hitSound; |
| | | public SoundName healSound; |
| | | public SoundName deathSound; |
| | | |
| | | public int MaxHealth |
| | | { |
| | |
| | | if (value <= 0) |
| | | { |
| | | IsAlive = false; |
| | | // Not needed here as it's played from the Animator |
| | | //if (deathSound != null) |
| | | //{ |
| | | SoundManager.instance.PlaySoundAtPoint(gameObject, deathSound); |
| | | //} |
| | | } |
| | | } |
| | | } |
| | |
| | | timeSinceHit += Time.deltaTime; |
| | | } |
| | | } |
| | | #if (UNITY_EDITOR) |
| | | if (selfDamage) |
| | | { |
| | | Hit(10); |
| | | } |
| | | #endif |
| | | } |
| | | |
| | | public void Hit(int damage) |
| | | { |
| | | if (IsAlive && !isInvincible) |
| | | { |
| | | Health -= damage; |
| | | int actualDamageAmount = Mathf.Min(damage, Health); |
| | | Health -= actualDamageAmount; |
| | | isInvincible = true; |
| | | |
| | | CharacterEvents.characterDamaged.Invoke(gameObject, actualDamageAmount); |
| | | SoundManager.instance.PlaySoundAtPoint(gameObject, hitSound); |
| | | } |
| | | } |
| | | |
| | | public bool Heal(int healAmount) |
| | | { |
| | | bool result = false; |
| | | if (IsAlive && Health < MaxHealth) |
| | | { |
| | | int actualHealAmount = Mathf.Min(healAmount, MaxHealth - Health); |
| | | Health += actualHealAmount; |
| | | |
| | | CharacterEvents.characterHealed.Invoke(gameObject, actualHealAmount); |
| | | |
| | | result = true; |
| | | SoundManager.instance.PlaySoundAtPoint(gameObject, healSound); |
| | | |
| | | } |
| | | return result; |
| | | } |
| | | } |