30 lines
868 B
C#

using UnityEngine;
[System.Serializable]
public class AbilitySlot
{
public Ability ability;
public AbilityUIItem abilityUiItem;
[HideInInspector] public float cdTimer; // counts down at runtime
public bool IsOnCooldown => cdTimer > 0f;
public float CooldownRatio => ability && ability.cooldown > 0 ? Mathf.Clamp01(cdTimer / ability.cooldown) : 0f;
public bool TryUse(AbilityUser user)
{
if (!ability || IsOnCooldown) return false;
if (user && user.mana && user.mana.Has(ability.manaCost) == false) return false;
if (!ability.CanActivate(user)) return false;
if (user && !user.TrySpendMana(ability.manaCost)) return false;
ability.Activate(user);
cdTimer = ability.cooldown;
return true;
}
public void Tick(float dt)
{
if (cdTimer > 0f) cdTimer -= dt;
}
}