void playmp_controller::linger() { LOG_NG << "beginning end-of-scenario linger\n"; linger_ = true; // If we need to set the status depending on the completion state // we're needed here. gui_->set_game_mode(game_display::LINGER); // End all unit moves gamestate().board_.set_all_units_user_end_turn(); set_end_scenario_button(); assert(is_regular_game_end()); if ( get_end_level_data_const().transient.reveal_map ) { // Change the view of all players and observers // to see the whole map regardless of shroud and fog. update_gui_to_player(gui_->viewing_team(), true); } bool quit; do { quit = true; try { // reimplement parts of play_side() turn_data_.send_data(); end_turn_ = END_TURN_NONE; play_linger_turn(); after_human_turn(); LOG_NG << "finished human turn" << std::endl; } catch (const savegame::load_game_exception&) { LOG_NG << "caught load-game-exception" << std::endl; // this should not happen, the option to load a game is disabled throw; } catch (const ingame_wesnothd_error&) { LOG_NG << "caught network-error-exception" << std::endl; quit = false; } } while (!quit); reset_end_scenario_button(); LOG_NG << "ending end-of-scenario linger\n"; }
void playmp_controller::linger() { LOG_NG << "beginning end-of-scenario linger\n"; browse_ = true; linger_ = true; // If we need to set the status depending on the completion state // we're needed here. gui_->set_game_mode(game_display::LINGER_MP); // this is actually for after linger mode is over -- we don't want to // stay stuck in linger state when the *next* scenario is over. set_completion setter(saved_game_,"running"); // End all unit moves gamestate_.board_.set_all_units_user_end_turn(); //current_team().set_countdown_time(0); //halt and cancel the countdown timer reset_countdown(); set_end_scenario_button(); if ( get_end_level_data_const().transient.reveal_map ) { // Change the view of all players and observers // to see the whole map regardless of shroud and fog. update_gui_to_player(gui_->viewing_team(), true); } bool quit; do { quit = true; try { // reimplement parts of play_side() player_number_ = first_player_; turn_data_.send_data(); end_turn_ = false; play_human_turn(); after_human_turn(); LOG_NG << "finished human turn" << std::endl; } catch (game::load_game_exception&) { LOG_NG << "caught load-game-exception" << std::endl; // this should not happen, the option to load a game is disabled throw; } catch (end_level_exception&) { // thrown if the host ends the scenario and let us advance // to the next level LOG_NG << "caught end-level-exception" << std::endl; reset_end_scenario_button(); throw; } catch (end_turn_exception&) { // thrown if the host leaves the game (sends [leave_game]), we need // to stay in this loop to stay in linger mode, otherwise the game // gets aborted LOG_NG << "caught end-turn-exception" << std::endl; quit = false; } catch (network::error&) { LOG_NG << "caught network-error-exception" << std::endl; quit = false; } } while (!quit); reset_end_scenario_button(); LOG_NG << "ending end-of-scenario linger\n"; }
void playmp_controller::linger(upload_log& log) { LOG_NG << "beginning end-of-scenario linger\n"; browse_ = true; linger_ = true; // If we need to set the status depending on the completion state // we're needed here. gui_->set_game_mode(game_display::LINGER_MP); // this is actually for after linger mode is over -- we don't want to // stay stuck in linger state when the *next* scenario is over. gamestate_.classification().completion = "running"; // End all unit moves for (unit_map::iterator u = units_.begin(); u != units_.end(); u++) { u->second.set_user_end_turn(true); } //current_team().set_countdown_time(0); //halt and cancel the countdown timer reset_countdown(); set_end_scenario_button(); // switch to observer viewpoint gui_->set_team(0,true); gui_->recalculate_minimap(); gui_->invalidate_all(); gui_->draw(true,true); bool quit; do { quit = true; try { // reimplement parts of play_side() player_number_ = first_player_; turn_data_ = new turn_info(player_number_, replay_sender_, undo_stack_); turn_data_->host_transfer().attach_handler(this); play_human_turn(); turn_over_ = true; // We don't want to linger mode to add end_turn to replay after_human_turn(); LOG_NG << "finished human turn" << std::endl; } catch (game::load_game_exception&) { LOG_NG << "caught load-game-exception" << std::endl; // this should not happen, the option to load a game is disabled log.quit(turn()); throw; } catch (end_level_exception&) { // thrown if the host ends the scenario and let us advance // to the next level LOG_NG << "caught end-level-exception" << std::endl; reset_end_scenario_button(); throw; } catch (end_turn_exception&) { // thrown if the host leaves the game (sends [leave_game]), we need // to stay in this loop to stay in linger mode, otherwise the game // gets aborted LOG_NG << "caught end-turn-exception" << std::endl; quit = false; } catch (network::error&) { LOG_NG << "caught network-error-exception" << std::endl; quit = false; } } while (!quit); reset_end_scenario_button(); LOG_NG << "ending end-of-scenario linger\n"; }
void playmp_controller::linger() { mouse_handler_.do_right_click(false); browse_ = true; linger_ = true; // If we need to set the status depending on the completion state // we're needed here. gui_->set_game_mode(game_display::LINGER_MP); // this is actually for after linger mode is over -- we don't want to // stay stuck in linger state when the *next* scenario is over. gamestate_.classification().completion = "running"; //current_team().set_countdown_time(0); //halt and cancel the countdown timer reset_countdown(); set_end_scenario_button(); if ( get_end_level_data().reveal_map ) { // switch to observer viewpoint gui_->set_team(0,true); gui_->recalculate_minimap(); gui_->invalidate_all(); gui_->draw(true,true); } bool quit; start_pass_scenario_anim(get_end_level_data().result); do { quit = true; try { // reimplement parts of play_side() player_number_ = first_player_; init_turn_data(); play_human_turn(); after_human_turn(); release_turn_data(); LOG_NG << "finished human turn" << std::endl; } catch (game::load_game_exception&) { LOG_NG << "caught load-game-exception" << std::endl; // this should not happen, the option to load a game is disabled throw; } catch (end_level_exception&) { // thrown if the host ends the scenario and let us advance // to the next level LOG_NG << "caught end-level-exception" << std::endl; reset_end_scenario_button(); throw; } catch (end_turn_exception&) { // thrown if the host leaves the game (sends [leave_game]), we need // to stay in this loop to stay in linger mode, otherwise the game // gets aborted LOG_NG << "caught end-turn-exception" << std::endl; quit = false; } catch (network::error&) { LOG_NG << "caught network-error-exception" << std::endl; quit = false; } } while (!quit); if (gui_->pass_scenario_anim_id() != -1) { gui_->erase_area_anim(gui_->pass_scenario_anim_id()); } reset_end_scenario_button(); LOG_NG << "ending end-of-scenario linger\n"; }