void replay_controller::reset_replay() { DBG_REPLAY << "replay_controller::reset_replay\n"; gui_->clear_chat_messages(); is_playing_ = false; player_number_ = 1; current_turn_ = 1; it_is_a_new_turn_ = true; skip_replay_ = false; tod_manager_= tod_manager_start_; recorder.start_replay(); recorder.set_skip(false); units_ = units_start_; gamestate_ = gamestate_start_; teams_ = teams_start_; if (events_manager_ ){ // NOTE: this double reset is required so that the new // instance of game_events::manager isn't created before the // old manager is actually destroyed (triggering an assertion // failure) events_manager_.reset(); events_manager_.reset(new game_events::manager(level_)); } gui_->labels().read(level_); resources::gamedata->rng().seed_random(level_["random_seed"], level_["random_calls"]); statistics::fresh_stats(); set_victory_when_enemies_defeated(level_["victory_when_enemies_defeated"].to_bool(true)); // Add era events for MP game. if (const config &era_cfg = level_.child("era")) { game_events::add_events(era_cfg.child_range("event"), "era_events"); } // Scenario initialization. (c.f. playsingle_controller::play_scenario()) fire_preload(); if(true){ //block for set_scontext_synced config* pstart = recorder.get_next_action(); assert(pstart->has_child("start")); /* use this after recorder.add_synced_command because set_scontext_synced sets the checkup to the last added command */ set_scontext_synced sync; fire_prestart(true); init_gui(); fire_start(true); } // Since we did not fire the start event, it_is_a_new_turn_ has the wrong value. it_is_a_new_turn_ = true; update_gui(); reset_replay_ui(); }
void replay_controller::reset_replay(){ gui_->clear_chat_messages(); is_playing_ = false; player_number_ = 1; current_turn_ = 1; it_is_a_new_turn_ = true; skip_replay_ = false; tod_manager_= tod_manager_start_; recorder.start_replay(); recorder.set_skip(false); units_ = units_start_; gamestate_ = gamestate_start_; teams_ = teams_start_; if (events_manager_ ){ // NOTE: this double reset is required so that the new // instance of game_events::manager isn't created before the // old manager is actually destroyed (triggering an assertion // failure) events_manager_.reset(); events_manager_.reset(new game_events::manager(level_)); } gui_->labels().read(level_); statistics::fresh_stats(); set_victory_when_enemies_defeated(level_["victory_when_enemies_defeated"].to_bool(true)); // Add era events for MP game. if (const config &era_cfg = level_.child("era")) { game_events::add_events(era_cfg.child_range("event"), "era_events"); } fire_prestart(true); init_gui(); fire_start(true); update_gui(); reset_replay_ui(); }
void replay_controller::reset_replay() { DBG_REPLAY << "replay_controller::reset_replay\n"; gui_->get_chat_manager().clear_chat_messages(); is_playing_ = false; player_number_ = 1; current_turn_ = 1; it_is_a_new_turn_ = true; skip_replay_ = false; gamestate_.tod_manager_= tod_manager_start_; recorder.start_replay(); recorder.set_skip(false); saved_game_ = saved_game_start_; gamestate_.board_ = gameboard_start_; gui_->change_display_context(&gamestate_.board_); //this doesn't change the pointer value, but it triggers the gui to update the internal terrain builder object, //idk what the consequences of not doing that are, but its probably a good idea to do it, esp. if layout //of game_board changes in the future if (events_manager_ ){ // NOTE: this double reset is required so that the new // instance of game_events::manager isn't created before the // old manager is actually destroyed (triggering an assertion // failure) events_manager_.reset(); events_manager_.reset(new game_events::manager(level_)); } gui_->labels().read(level_); resources::gamedata->rng().seed_random(level_["random_seed"], level_["random_calls"]); statistics::fresh_stats(); set_victory_when_enemies_defeated(level_["victory_when_enemies_defeated"].to_bool(true)); resources::screen->recalculate_minimap(); resources::screen->invalidate_all(); resources::screen->rebuild_all(); // Add era events for MP game. if (const config &era_cfg = level_.child("era")) { game_events::add_events(era_cfg.child_range("event"), "era_events"); } // Scenario initialization. (c.f. playsingle_controller::play_scenario()) fire_preload(); if(true){ //block for set_scontext_synced if(recorder.add_start_if_not_there_yet()) { ERR_REPLAY << "inserted missing [start]" << std::endl; } config* pstart = recorder.get_next_action(); assert(pstart->has_child("start")); /* use this after recorder.add_synced_command because set_scontext_synced sets the checkup to the last added command */ set_scontext_synced sync; fire_prestart(); init_gui(); fire_start(true); } // Since we did not fire the start event, it_is_a_new_turn_ has the wrong value. it_is_a_new_turn_ = true; update_gui(); reset_replay_ui(); }