using System; using TMPro; using UnityEngine; using UnityEngine.UI; namespace Abilities { public class StartingBlackDieAbility : MonoBehaviour { public static event Action AbilitySelected; public event Action UnmarkUseUsedEvent; public event Action MarkUseUsedEvent; private int _uses = 3; private GameObject[] _usesUsed; private bool _canClick; protected virtual void OnEnable() { GameManager.StateChanged += HandleStateChanged; } protected virtual void OnDisable() { GameManager.StateChanged -= HandleStateChanged; } public void UseClicked() { if (!_canClick) return; if (_uses > 0) { AbilitySelected?.Invoke(); MarkUseUsed(); _uses -= 1; } _canClick = false; } private void MarkUseUsed() { MarkUseUsedEvent?.Invoke(); } private void UnmarkUseUsed() { UnmarkUseUsedEvent?.Invoke(); } public void AbilitySelectedButNotUsed() { UnmarkUseUsedEvent?.Invoke(); _uses += 1; } private void HandleStateChanged(GameState state) { switch (state) { case GameState.PickDiceOne: case GameState.PickDiceTwo: _canClick = true; break; default: _canClick = false; break; } } } }