private void OnEngageTimeout() { PlayerArmy.WakeUnits(); EnemyArmy.WakeUnits(); List <Unit> enemySelectedUnits = EnemyArmy.GetSelectedUnits(); List <Unit> enemyUnits = new List <Unit>(EnemyArmy.GetUnits()); List <Unit> playerSelectedUnits = PlayerArmy.GetSelectedUnits(); List <Unit> playerUnits = new List <Unit>(PlayerArmy.GetUnits()); int playerPower = 0; int enemyPower = 0; foreach (Unit enemyUnit in enemySelectedUnits) { enemyPower += enemyUnit.Power; } foreach (Unit playerUnit in playerSelectedUnits) { playerPower += playerUnit.Power; } if (playerPower > enemyPower) { ShowWinnerLabel("You win!", PlayerArmy); if (enemyPower == 0) { EnemyArmy.RemoveUnits(); PlayerArmy.AddRestingUnits(enemyUnits); } else { EnemyArmy.RemoveSelectedUnits(); PlayerArmy.AddRestingUnits(enemySelectedUnits); } } else if (enemyPower > playerPower) { ShowWinnerLabel("Enemy wins!", EnemyArmy); if (playerPower == 0) { PlayerArmy.RemoveUnits(); EnemyArmy.AddRestingUnits(playerUnits); } else { PlayerArmy.RemoveSelectedUnits(); EnemyArmy.AddRestingUnits(playerSelectedUnits); } } PlayerArmy.UpdateUnitPositions(); EnemyArmy.UpdateUnitPositions(); PlayerArmy.DeselectAll(); EnemyArmy.DeselectAll(); if (EnemyArmy.GetArmyPower() <= 0) { EnemyLeader.SetDefeated(); } CurrentState = State.PreBattle; if (EnemyArmy.GetUnits().Count == 0 || PlayerArmy.GetUnits().Count == 0) { if (EnemyArmy.GetUnits().Count == 0) { WinAudio.Play(); } else { LoseAudio.Play(); } OnRetreatPressed(); } }