private IEnumerator ShowExpGain()
    {
        TacticsMove player = null;

        for (int i = 0; i < actions.Count; i++)
        {
            if (actions[i].attacker.faction == Faction.PLAYER)
            {
                player = actions[i].attacker;
                break;
            }
        }
        if (player == null)
        {
            Debug.Log("Nothing to give exp for");
            yield break;
        }

        int exp = actions[0].GetExperience();

        exp = player.EditValueSkills(Activation.EXP, exp);
        if (exp > 0)
        {
            expMeter.gameObject.SetActive(true);
            expMeter.currentExp = player.stats.currentExp;
            Debug.Log("Exp is currently: " + player.stats.currentExp);
            yield return(new WaitForSeconds(0.5f));

            while (exp > 0)
            {
                exp--;
                expMeter.currentExp++;
                if (expMeter.currentExp == 100)
                {
                    expMeter.currentExp = 0;
                    yield return(new WaitForSeconds(1f));

                    expMeter.gameObject.SetActive(false);
                    levelupScript.SetupStats(player.stats.level, player.stats);
                    levelupScript.gameObject.SetActive(true);
                    Debug.Log("LEVELUP!");
                    yield return(StartCoroutine(levelupScript.RunLevelup(player.stats)));

                    levelupScript.gameObject.SetActive(false);
                    expMeter.gameObject.SetActive(true);
                }
                yield return(null);
            }
            yield return(new WaitForSeconds(0.5f));

            expMeter.gameObject.SetActive(false);
            player.stats.currentExp = expMeter.currentExp;
            Debug.Log("Exp is now: " + player.stats.currentExp);
        }
    }
    private IEnumerator ShowExpGain()
    {
        TacticsMove player = null;

        for (int i = 0; i < actions.Count; i++)
        {
            if (actions[i].attacker.faction == Faction.PLAYER && actions[i].defender.faction != Faction.WORLD)
            {
                if ((actions[i].side == AttackSide.LEFT && _attackerDealtDamage) || (actions[i].side == AttackSide.RIGHT && _defenderDealtDamage))
                {
                    player = actions[i].attacker;
                    break;
                }
            }
        }

        if (player == null)
        {
            //Debug.Log("Nothing to give exp for");
            yield return(new WaitForSeconds(0.5f * currentGameSpeed.value));

            yield break;
        }

        int exp = actions[0].GetExperience();

        exp = player.EditValueSkills(SkillActivation.REWARD, exp);
        if (exp > 0)
        {
            expMeter.gameObject.SetActive(true);
            expMeter.currentExp = player.stats.currentExp;
            yield return(new WaitForSeconds(0.5f * currentGameSpeed.value));

            sfxQueue.Enqueue(levelupFill);
            playSfxEvent.Invoke();
            while (exp > 0)
            {
                exp--;
                expMeter.currentExp++;
                if (expMeter.currentExp == 100)
                {
                    expMeter.currentExp = 0;
                    stopSfxEvent.Invoke();
                    yield return(new WaitForSeconds(1f * currentGameSpeed.value));

                    expMeter.gameObject.SetActive(false);
                    levelupScript.SetupStats(player.stats, true);
                    player.stats.GainLevel();
                    sfxQueue.Enqueue(levelupFanfare);
                    playSfxEvent.Invoke();
                    yield return(StartCoroutine(levelupScript.RunLevelup(player.stats)));

                    expMeter.gameObject.SetActive(true);
                    sfxQueue.Enqueue(levelupFill);
                    playSfxEvent.Invoke();
                }
                yield return(null);
            }
            stopSfxEvent.Invoke();
            yield return(new WaitForSeconds(0.5f * currentGameSpeed.value));

            expMeter.gameObject.SetActive(false);
            player.stats.currentExp = expMeter.currentExp;
        }
    }