public void AddSpell(ISpellsProvider provider, int index) { foreach (SpellData spell in provider.Spells) { _spells[index] = spell; OnCooldownChanged?.Invoke(index, _spells[index]); } }
private void ReduceCooldowns(float damage) { for (int i = 0; i < 4; i++) { if (_spells[i] != null) { _spells[i].DamageToCast = (_spells[i].DamageToCast - damage > 0) ? _spells[i].DamageToCast - damage : 0; OnCooldownChanged?.Invoke(i, _spells[i]); } } }
private void CastSpell(int spellIndex) { SpellData spellToCast = _spells[spellIndex - 1]; if (spellToCast.DamageToCast <= 0) { spellToCast.Cast(transform, GetSpellTarget(spellToCast.CastType)); spellToCast.DamageToCast = spellToCast.Cooldown; OnCooldownChanged?.Invoke(spellIndex - 1, spellToCast); ReduceCooldowns(0); } }