PuzzleGame/PuzzleGameProject/Assets/Scripts/Abilities/ArmorAbility.cs

46 lines
1.2 KiB
C#

using System;
using UnityEngine;
namespace Abilities
{
public class ArmorAbility : MonoBehaviour
{
public event Action MarkAbilityUsed;
public event Action ArmorAbilityGained;
[SerializeField] private Player player;
[SerializeField] private int maxUses;
private int currentUses;
private bool _abilityAcive;
private void OnEnable()
{
ChestRewardSelection.DiamondAndLifeSelected += HandleAbilityAcitvated;
player.DamageTaken += HandleDamageDealt;
}
private void HandleDamageDealt(int damage)
{
for (int i = 0; i < damage; i++)
{
if (_abilityAcive)
{
player.Heal(1);
currentUses--;
MarkAbilityUsed?.Invoke();
if (currentUses < 1)
{
_abilityAcive = false;
}
}
}
}
private void HandleAbilityAcitvated()
{
ArmorAbilityGained?.Invoke();
_abilityAcive = true;
currentUses = maxUses;
}
}
}