Author: anonymissimus
Date: Mon Oct 24 00:57:09 2011
New Revision: 51601
URL: http://svn.gna.org/viewcvs/wesnoth?rev=51601&view=rev
Log:
write and reload endlevel data when saving in linger mode (fix for bug #16111)
There obviously existed an [endlevel] tag in the savegame at some time
but it must have been lost. Added read and write method
to struct end_level_data.
Modified:
trunk/src/game_end_exceptions.hpp
trunk/src/play_controller.cpp
trunk/src/playsingle_controller.cpp
Modified: trunk/src/game_end_exceptions.hpp
URL:
http://svn.gna.org/viewcvs/wesnoth/trunk/src/game_end_exceptions.hpp?rev=51601&r1=51600&r2=51601&view=diff
==============================================================================
--- trunk/src/game_end_exceptions.hpp (original)
+++ trunk/src/game_end_exceptions.hpp Mon Oct 24 00:57:09 2011
@@ -25,6 +25,9 @@
#include "lua_jailbreak_exception.hpp"
#include <string>
+
+#include "config.hpp"
+#include "game_config.hpp"
enum LEVEL_RESULT {
NONE,
@@ -89,7 +92,7 @@
, replay_save(true)
, linger_mode(true)
, gold_bonus(true)
- , carryover_percentage(80)
+ , carryover_percentage(game_config::gold_carryover_percentage)
, carryover_add(false)
, custom_endlevel_music()
, reveal_map(true)
@@ -104,6 +107,23 @@
bool carryover_add; /**< Add or replace next scenario's
minimum starting gold. */
std::string custom_endlevel_music; /**< Custom short music played at
the end. */
bool reveal_map; /**< Should we reveal map when game
is ended? (Multiplayer only) */
+
+ void write(config& cfg) const {
+ cfg["prescenario_save"] = prescenario_save;
+ cfg["replay_save"] = replay_save;
+ cfg["bonus"] = gold_bonus;
+ cfg["carryover_percentage"] = carryover_percentage;
+ cfg["carryover_add"] = carryover_add;
+ }
+
+ void read(const config& cfg) {
+ prescenario_save = cfg["prescenario_save"].to_bool(true);
+ replay_save = cfg["replay_save"].to_bool(true);
+ gold_bonus = cfg["bonus"].to_bool(true);
+ carryover_percentage =
cfg["carryover_percentage"].to_int(game_config::gold_carryover_percentage);
+ carryover_add = cfg["carryover_add"].to_bool(false);
+ }
+
};
#endif /* ! GAME_END_EXCEPTIONS_HPP_INCLUDED */
Modified: trunk/src/play_controller.cpp
URL:
http://svn.gna.org/viewcvs/wesnoth/trunk/src/play_controller.cpp?rev=51601&r1=51600&r2=51601&view=diff
==============================================================================
--- trunk/src/play_controller.cpp (original)
+++ trunk/src/play_controller.cpp Mon Oct 24 00:57:09 2011
@@ -689,6 +689,12 @@
cfg.merge_with(tod_manager_.to_config());
+ if(linger_) {
+ config endlevel;
+ end_level_data_.write(endlevel);
+ cfg.add_child("endlevel", endlevel);
+ }
+
// Write terrain_graphics data in snapshot, too
foreach (const config &tg, level_.child_range("terrain_graphics")) {
cfg.add_child("terrain_graphics", tg);
Modified: trunk/src/playsingle_controller.cpp
URL:
http://svn.gna.org/viewcvs/wesnoth/trunk/src/playsingle_controller.cpp?rev=51601&r1=51600&r2=51601&view=diff
==============================================================================
--- trunk/src/playsingle_controller.cpp (original)
+++ trunk/src/playsingle_controller.cpp Mon Oct 24 00:57:09 2011
@@ -376,10 +376,7 @@
// if we loaded a save file in linger mode, skip to it.
if (linger_) {
//determine the bonus gold handling for this scenario
- const config end_cfg =
level_.child_or_empty("endlevel");
- end_level.carryover_percentage =
level_["carryover_percentage"].to_int(game_config::gold_carryover_percentage);
- end_level.carryover_add =
level_["carryover_add"].to_bool();
- end_level.gold_bonus = end_cfg["bonus"].to_bool(true);
+ end_level.read(level_.child_or_empty("endlevel"));
end_level.carryover_report = false;
throw end_level_exception(SKIP_TO_LINGER);
}
_______________________________________________
Wesnoth-commits mailing list
[email protected]
https://mail.gna.org/listinfo/wesnoth-commits