66 lines
1.6 KiB
C#
66 lines
1.6 KiB
C#
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;
|
|
}
|
|
}
|
|
}
|
|
}
|