RiftMayhem/Assets/Scripts/AbilitySystem/Base/AbilityCooldownTracker.cs
Pedro Gomes a42b1ea784 Massive update on NPCs and damage over time effects
- NPC controller reworked completely
- ability priority list for npc's
- npc's with animations
- damage over time effect added
- burn, poison and bleed over time effects added
2024-07-19 21:57:47 +01:00

49 lines
1.3 KiB
C#

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class AbilityCooldownTracker : MonoBehaviour
{
public List<AbilityCooldownEntry> abilityCooldowns = new List<AbilityCooldownEntry>();
public void StartAbilityCooldown(BaseAbility ability)
{
AbilityCooldownEntry entry = new AbilityCooldownEntry();
entry.ability = ability;
entry.cooldownCoroutine = StartCoroutine(TrackCooldown(entry, RemoveEntryOnCooldownReset));
abilityCooldowns.Add(entry);
}
public void RemoveEntryOnCooldownReset(AbilityCooldownEntry entryToRemove)
{
abilityCooldowns.Remove(entryToRemove);
}
public bool OnCooldown(BaseAbility ability)
{
for (int i = 0; i < abilityCooldowns.Count; i++)
{
if (abilityCooldowns[i].ability == ability)
return true;
}
return false;
}
IEnumerator TrackCooldown(AbilityCooldownEntry entry, Action<AbilityCooldownEntry> RemoveOnCooldownEnded)
{
yield return new WaitForSeconds(entry.ability.cooldown);
if (RemoveOnCooldownEnded != null)
RemoveOnCooldownEnded.Invoke(entry);
}
}
public class AbilityCooldownEntry
{
public BaseAbility ability;
public Coroutine cooldownCoroutine;
}