private void EnemyMove() { IPokemon enemyPokemon = EnemyTrainer.GetCurrentPokemon(); int randomEnemyMoveIndex = new Random().Next(0, enemyPokemon.Moves.Count); PokemonAttack(enemyPokemon, Player.GetCurrentPokemon(), randomEnemyMoveIndex); }
private void BothTrainersSendPokemon() { Player.SetPokemonAsCurrent(Player.GetNextAvailablePokemon()); EnemyTrainer.SetPokemonAsCurrent(EnemyTrainer.GetNextAvailablePokemon()); EnemyAction.EnemyTrainerSendsPokemon(EnemyTrainer); PlayerAction.PlayerSendsPokemon(Player.GetCurrentPokemon()); }
private bool PromptTrainerForPokemonMove() { bool keepBattleGoing = true; int chosenMove = BattleAux.KeepPlayerChoosingMove(LIMIT_OF_MOVES_PER_POKEMON); PokemonAttack(Player.GetCurrentPokemon(), EnemyTrainer.GetCurrentPokemon(), chosenMove); return(keepBattleGoing); }
private bool KeepBattleGoingWhileBothPlayersHavePokemonLeft() { bool playerWon = false, keepBattleGoing, isChangingToNextAvailablePokemon; while (Player.HasAvailablePokemon() && EnemyTrainer.HasAvailablePokemon()) { keepBattleGoing = false; isChangingToNextAvailablePokemon = false; if (Player.GetCurrentPokemon().HasFainted() && EnemyTrainer.HasAvailablePokemon()) { PromptPlayerToSelectPokemonAfterOwnPokemonFainted(); PlayerAction.PlayerSendsPokemon(Player.GetCurrentPokemon()); isChangingToNextAvailablePokemon = true; } else { ConsoleBattleInfoPokemon.ShowBothPokemonStats(Player.GetCurrentPokemon(), EnemyTrainer.GetCurrentPokemon()); keepBattleGoing = PlayerMove(); } if (keepBattleGoing && !isChangingToNextAvailablePokemon) { if (EnemyTrainer.GetCurrentPokemon().HasFainted() && Player.HasAvailablePokemon()) { if (BattleAux.CannotSendNextAvailablePokemon(isEnemyTrainer: true)) { break; } else { PromptPlayerToSelectPokemonAfterEnemyPokemonFainted(); BattleAux.ShowTrainerSentPokemonMessage(isEnemyTrainer: true); PlayerAction.PlayerSendsPokemon(Player.GetCurrentPokemon()); } } else { EnemyMove(); } } } if (Player.HasAvailablePokemon()) { playerWon = true; } return(playerWon); }
private void PromptPlayerToSelectPokemonAfterEnemyPokemonFainted() { int chosenPokemonIndex = 0; if (Player.PokemonTeam.Where(w => !w.Pokemon.HasFainted()).Count() > 1) { ConsoleUtils.ShowMessageAndWaitTwoSeconds($"{EnemyTrainer.GetType().Name} is about to send out {EnemyTrainer.GetCurrentPokemon().GetType().Name}"); ConsoleUtils.ShowMessageBetweenEmptyLines("Which pokemon will you choose?"); chosenPokemonIndex = BattleAux.KeepPlayerChoosingPokemon(); SwitchCurrentPokemon(chosenPokemonIndex, isChangingAfterOwnPokemonFainted: true); } else { chosenPokemonIndex = Player.PokemonTeam.IndexOf(Player.PokemonTeam.Where(w => !w.Fainted).FirstOrDefault()); SwitchCurrentPokemon(chosenPokemonIndex, isChangingAfterOwnPokemonFainted: true); } }