46 lines
1.2 KiB
C#
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;
|
|
}
|
|
}
|
|
}
|