IEnumerator Combat() { CombatResualt resualt = InBattle(); Debug.Log("Resualt battle: " + resualt); yield return(new WaitForSeconds(0.5f)); if (resualt == CombatResualt.Win) { var leader = heros.Single(hero => hero.GetComponent <Hero>().GetAvatarStatus() == Avatar.AvatarStatus.Hero_leader); leader.GetComponent <Hero>().Fighting = false; ui_controller.SetHeroState( leader.GetComponent <Hero>().Heart, leader.GetComponent <Hero>().Sword, leader.GetComponent <Hero>().Shield, leader.GetComponent <Hero>().GetAvatarType() ); _speed += 1; foreach (var hero in heros) { point += hero.GetComponent <Hero>().Heart; } ui_controller.SetPoints(point); Destroy(_currentEnemies); _currentEnemies = null; ui_controller.SetActivePanelEnemy(false); } else if (resualt == CombatResualt.Tie) { var leader = heros.Single(hero => hero.GetComponent <Hero>().GetAvatarStatus() == Avatar.AvatarStatus.Hero_leader); leader.GetComponent <Hero>().Fighting = false; ui_controller.SetHeroState( leader.GetComponent <Hero>().Heart, leader.GetComponent <Hero>().Sword, leader.GetComponent <Hero>().Shield, leader.GetComponent <Hero>().GetAvatarType() ); Destroy(_currentEnemies); _currentEnemies = null; ui_controller.SetActivePanelEnemy(false); } if (heros.Count < 1) { LoseState(); } else if (_currentEnemies == null) { _currentGameMode = GameMode.Playing; } }
CombatResualt InBattle() { var leader = heros.Single(hero => hero.GetComponent <Hero>().GetAvatarStatus() == Avatar.AvatarStatus.Hero_leader); bool heroTurn = true; CombatResualt resualt = CombatResualt.Win; float heroDamage = 999999f; float enemyDamage = 999999f; if (_currentEnemies) { while (_currentEnemies.GetComponent <Enemy>().Heart > 0 || heros.Count > 0) { if (heroTurn) { heroDamage = _currentEnemies.GetComponent <Enemy>().GotDamage( leader.GetComponent <Hero>().Sword, leader.GetComponent <Hero>().GetAvatarType()); Debug.Log("Enemies left HP: " + _currentEnemies.GetComponent <Enemy>().Heart); heroTurn = false; } else { enemyDamage = leader.GetComponent <Hero>().GotDamage( _currentEnemies.GetComponent <Enemy>().Sword, _currentEnemies.GetComponent <Enemy>().GetAvatarType()); Debug.Log("Leader left HP: " + leader.GetComponent <Hero>().Heart); heroTurn = true; } if (heroDamage == 0 && enemyDamage == 0) { SwitchLeader(false); Destroy(heros[heros.Count - 1]); heros.RemoveAt(heros.Count - 1); if (heros.Count == 0) { resualt = CombatResualt.Lose; break; } resualt = CombatResualt.Tie; break; } if (leader.GetComponent <Hero>().Heart < 1) { SwitchLeader(false); Destroy(heros[heros.Count - 1]); heros.RemoveAt(heros.Count - 1); if (heros.Count == 0) { resualt = CombatResualt.Lose; break; } leader = heros.Single(hero => hero.GetComponent <Hero>().GetAvatarStatus() == Avatar.AvatarStatus.Hero_leader); leader.GetComponent <Hero>().Fighting = true; heroTurn = true; } if (_currentEnemies.GetComponent <Enemy>().Heart < 1) { resualt = CombatResualt.Win; break; } if (heros.Count < 1) { resualt = CombatResualt.Lose; break; } } ; return(resualt); } else { return(resualt); } }