Implemented armor and diamond ability

This commit is contained in:
Max 2025-02-28 14:00:39 +01:00
parent c42406e615
commit 0c4592ac7c
6 changed files with 113 additions and 1 deletions

View file

@ -0,0 +1,46 @@
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;
}
}
}

View file

@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 8a78399457cb0c74b9140b3ea8b42870

View file

@ -6,7 +6,8 @@ using UnityEngine.Serialization;
public class Player : MonoBehaviour
{
public event Action<int> DiamondCountUpdated;
public event Action<int> HealthUpdated;
public event Action<int> HealthUpdated;
public event Action<int> DamageTaken;
[SerializeField] private int maxHealth;
[SerializeField] private int diamonds;
@ -44,6 +45,7 @@ public class Player : MonoBehaviour
_healthIndex += damage;
UpdateGUI();
}
DamageTaken?.Invoke(damage);
}
public void Heal(int healAmount)

View file

@ -184,6 +184,12 @@ namespace UI
_blackDieAbilityUsesUsed--;
}
public void MarkArmorAbilityUsed()
{
_armorUses[_armorUsesUsed].value = true;
_armorUsesUsed++;
}
public void MarkStartingBlackDieAbilityUsed()
{
_startingBlackDieAbilityUses[_startingBlackDieAbilityUsesUsed].value = true;

View file

@ -20,6 +20,7 @@ namespace UI
[SerializeField] private BlackDieAbility blackDieAbility;
[SerializeField] private ChestRewardSelection chestRewardSelection;
[SerializeField] private TorchAbility torchAbility;
[SerializeField] private ArmorAbility armorAbility;
[SerializeField] private Player player;
public static UIManager Instance { get; private set; }
@ -73,6 +74,9 @@ namespace UI
player.DiamondCountUpdated += hudController.SetDiamondCount;
player.HealthUpdated += hudController.SetHealth;
armorAbility.ArmorAbilityGained += hudController.SetArmorAbilityEnabled;
armorAbility.MarkAbilityUsed += hudController.MarkArmorAbilityUsed;
}
private void OnDisable()