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; } }