public void CastSpell(SpellResult spellResult)
    {
        SpellData   spellData   = spellHandler.GetSpellData(spellResult.Index);
        GameObject  spell       = Instantiate(spellData.Spell, magicCircle.transform.position, magicCircle.transform.rotation);
        SpellAttack spellAttack = spell.GetComponent <SpellAttack>();

        spellAttack.coverage = spellResult.Coverage;

        spellAttack.SetBattleManager(battleManager, experienceManager);

        cooldownShower.SetUpCoolDown(spellData.Cooldown);
        //Other option: Say: good, lame, awful etc
        SuccessCastSpellWithCoverage?.Invoke(spellResult.Coverage);
        SuccessCastSpellDelegateEvent?.Invoke();

        magicCircleInput.Reset();
        magicCircle.SetActive(false);

        castEffectHandler.CastSpellEffect(spellData.ElementType);
    }