void loadgame::check_version_compatibility() { if (gamestate_.classification().version == game_config::version) { return; } const version_info save_version = gamestate_.classification().version; const version_info &wesnoth_version = game_config::wesnoth_version; // Even minor version numbers indicate stable releases which are // compatible with each other. if (wesnoth_version.minor_version() % 2 == 0 && wesnoth_version.major_version() == save_version.major_version() && wesnoth_version.minor_version() == save_version.minor_version()) { return; } // Do not load if too old. If either the savegame or the current // game has the version 'test', load. This 'test' version is never // supposed to occur, except when Soliton is testing MP servers. if (save_version < game_config::min_savegame_version && save_version != game_config::test_version && wesnoth_version != game_config::test_version) { gui2::show_message(gui_.video(), "", _("This save is from a version too old to be loaded.")); throw load_game_cancelled_exception(); } const int res = gui2::show_message(gui_.video(), "", _("This save is from a different version of the game. Do you want to try to load it?"), gui2::tmessage::yes_no_buttons); if(res == gui2::twindow::CANCEL) { throw load_game_cancelled_exception(); } }
void loadgame::check_version_compatibility() { if (gamestate_.classification().version == game_config::version) { return; } const version_info save_version = gamestate_.classification().version; const version_info &wesnoth_version = game_config::wesnoth_version; // If the version isn't good, it probably isn't a compatible stable one, // and the following comparisons would throw. if (!save_version.good()) { const std::string message = _("The save has corrupt version information ($version_number|) and cannot be loaded."); utils::string_map symbols; symbols["version_number"] = gamestate_.classification().version; gui2::show_error_message(gui_.video(), utils::interpolate_variables_into_string(message, &symbols)); throw load_game_cancelled_exception(); } // Even minor version numbers indicate stable releases which are // compatible with each other. if (wesnoth_version.minor_version() % 2 == 0 && wesnoth_version.major_version() == save_version.major_version() && wesnoth_version.minor_version() == save_version.minor_version()) { return; } // Do not load if too old. If either the savegame or the current // game has the version 'test', load. This 'test' version is never // supposed to occur, except when Soliton is testing MP servers. if (save_version < game_config::min_savegame_version && save_version != game_config::test_version && wesnoth_version != game_config::test_version) { const std::string message = _("This save is from an old, unsupported version ($version_number|) and cannot be loaded."); utils::string_map symbols; symbols["version_number"] = save_version.str(); gui2::show_error_message(gui_.video(), utils::interpolate_variables_into_string(message, &symbols)); throw load_game_cancelled_exception(); } int res = gui2::twindow::OK; if(preferences::confirm_load_save_from_different_version()) { const std::string message = _("This save is from a different version of the game ($version_number|). Do you wish to try to load it?"); utils::string_map symbols; symbols["version_number"] = save_version.str(); res = gui2::show_message(gui_.video(), _("Load Game"), utils::interpolate_variables_into_string(message, &symbols), gui2::tmessage::yes_no_buttons); } if(res == gui2::twindow::CANCEL) { throw load_game_cancelled_exception(); } }
bool loadgame::check_version_compatibility(const version_info & save_version, CVideo & video) { if (save_version == game_config::version) { return true; } const version_info &wesnoth_version = game_config::wesnoth_version; // Even minor version numbers indicate stable releases which are // compatible with each other. if (wesnoth_version.minor_version() % 2 == 0 && wesnoth_version.major_version() == save_version.major_version() && wesnoth_version.minor_version() == save_version.minor_version()) { return true; } // Do not load if too old. If either the savegame or the current // game has the version 'test', load. This 'test' version is never // supposed to occur, except when Soliton is testing MP servers. if (save_version < game_config::min_savegame_version && save_version != game_config::test_version && wesnoth_version != game_config::test_version) { const std::string message = _("This save is from an old, unsupported version ($version_number|) and cannot be loaded."); utils::string_map symbols; symbols["version_number"] = save_version.str(); gui2::show_error_message(video, utils::interpolate_variables_into_string(message, &symbols)); return false; } if(preferences::confirm_load_save_from_different_version()) { const std::string message = _("This save is from a different version of the game ($version_number|). Do you wish to try to load it?"); utils::string_map symbols; symbols["version_number"] = save_version.str(); const int res = gui2::show_message(video, _("Load Game"), utils::interpolate_variables_into_string(message, &symbols), gui2::tmessage::yes_no_buttons); return res == gui2::twindow::OK; } return true; }