From efcfe3b38ae64041f57841c60f13958e9534916e Mon Sep 17 00:00:00 2001 From: gfgtdf Date: Sun, 28 Feb 2016 20:00:52 +0100 Subject: [PATCH] reset 'ignore oos messages' when starting a new game --- src/play_controller.cpp | 3 ++- src/play_controller.hpp | 2 +- src/playmp_controller.cpp | 2 +- src/savegame.cpp | 8 ++++---- src/savegame.hpp | 3 ++- 5 files changed, 10 insertions(+), 8 deletions(-) diff --git a/src/play_controller.cpp b/src/play_controller.cpp index d3623f296fea..b72cbbb4b7e5 100644 --- a/src/play_controller.cpp +++ b/src/play_controller.cpp @@ -181,6 +181,7 @@ play_controller::play_controller(const config& level, saved_game& state_of_game, , victory_music_() , defeat_music_() , scope_() + , ignore_replay_errors_(false) , player_type_changed_(false) { copy_persistent(level, level_); @@ -1006,7 +1007,7 @@ void play_controller::process_oos(const std::string& msg) const message << "\n\n" << _("Error details:") << "\n\n" << msg; scoped_savegame_snapshot snapshot(*this); - savegame::oos_savegame save(saved_game_, *gui_); + savegame::oos_savegame save(saved_game_, *gui_, ignore_replay_errors_); save.save_game_interactive(gui_->video(), message.str(), gui::YES_NO); // can throw quit_game_exception } diff --git a/src/play_controller.hpp b/src/play_controller.hpp index 7d9af44dcb2d..f520791aabe2 100644 --- a/src/play_controller.hpp +++ b/src/play_controller.hpp @@ -365,8 +365,8 @@ class play_controller : public controller_base, public events::observer, public hotkey::scope_changer scope_; protected: + mutable bool ignore_replay_errors_; bool player_type_changed_; - virtual void sync_end_turn() {}; virtual void check_time_over(); virtual void update_viewing_player() = 0; diff --git a/src/playmp_controller.cpp b/src/playmp_controller.cpp index 5dd9514cc37e..8ac290b6be17 100644 --- a/src/playmp_controller.cpp +++ b/src/playmp_controller.cpp @@ -375,7 +375,7 @@ void playmp_controller::process_oos(const std::string& err_msg) const { temp_buf << " \n"; } scoped_savegame_snapshot snapshot(*this); - savegame::oos_savegame save(saved_game_, *gui_); + savegame::oos_savegame save(saved_game_, *gui_, ignore_replay_errors_); save.save_game_interactive(gui_->video(), temp_buf.str(), gui::YES_NO); } diff --git a/src/savegame.cpp b/src/savegame.cpp index f74f7670c61b..9f83a8afb5d1 100644 --- a/src/savegame.cpp +++ b/src/savegame.cpp @@ -609,19 +609,19 @@ void autosave_savegame::create_filename() set_filename(filename); } -oos_savegame::oos_savegame(saved_game& gamestate, game_display& gui) +oos_savegame::oos_savegame(saved_game& gamestate, game_display& gui, bool& ignore) : ingame_savegame(gamestate, gui, preferences::save_compression_format()) + , ignore_(ignore) {} int oos_savegame::show_save_dialog(CVideo& video, const std::string& message, const gui::DIALOG_TYPE /*dialog_type*/) { - static bool ignore_all = false; int res = 0; std::string filename = this->filename(); - if (!ignore_all){ - gui2::tgame_save_oos dlg(ignore_all, filename, title(), message); + if (!ignore_){ + gui2::tgame_save_oos dlg(ignore_, filename, title(), message); dlg.show(video); res = dlg.get_retval(); } diff --git a/src/savegame.hpp b/src/savegame.hpp index 4560acaff8e1..b601b60ed6cd 100644 --- a/src/savegame.hpp +++ b/src/savegame.hpp @@ -225,11 +225,12 @@ class autosave_savegame : public ingame_savegame class oos_savegame : public ingame_savegame { public: - oos_savegame(saved_game& gamestate, game_display& gui); + oos_savegame(saved_game& gamestate, game_display& gui, bool& ignore); private: /** Display the save game dialog. */ virtual int show_save_dialog(CVideo& video, const std::string& message, const gui::DIALOG_TYPE dialog_type); + bool& ignore_; }; /** Class for start-of-scenario saves */