Skip to content

Commit

Permalink
simplify saved_game s constructor
Browse files Browse the repository at this point in the history
  • Loading branch information
gfgtdf committed Jun 10, 2014
1 parent 929b7df commit 7f6d4a7
Show file tree
Hide file tree
Showing 3 changed files with 23 additions and 50 deletions.
67 changes: 21 additions & 46 deletions src/saved_game.cpp
Expand Up @@ -29,42 +29,31 @@ saved_game::saved_game() :
mp_settings_()
{}

saved_game::saved_game(const config& cfg, bool show_replay) :
replay_data(),
snapshot(),
carryover_sides(),
carryover_sides_start(),
replay_start_(),
classification_(cfg),
mp_settings_(cfg)
saved_game::saved_game(const config& cfg)
: replay_data()
, snapshot()
, carryover_sides()
, carryover_sides_start()
, replay_start_()
, classification_(cfg)
, mp_settings_(cfg)
{
log_scope("read_game");

if(cfg.has_child("carryover_sides")){
carryover_sides = cfg.child("carryover_sides");
}
if(cfg.has_child("carryover_sides_start")){
carryover_sides_start = cfg.child("carryover_sides_start");
}

if(show_replay){
//If replay_start and replay_data couldn't be loaded
if(!load_replay(cfg)){
//TODO: notify user of failure
ERR_NG<<"Could not load as replay " << std::endl;
}
} else {
if(const config& snapshot = cfg.child("snapshot")){
this->snapshot = snapshot;
load_replay(cfg);
} else if(carryover_sides_start.empty() && !carryover_sides.empty()){
//if we are loading a start of scenario save and don't have carryover_sides_start, use carryover_sides
carryover_sides_start = carryover_sides;
}
//TODO: check if loading fails completely

carryover_sides = cfg.child_or_empty("carryover_sides");
carryover_sides_start = cfg.child_or_empty("carryover_sides_start");
replay_start_ = cfg.child_or_empty("replay_start");
replay_data = cfg.child_or_empty("replay");
snapshot = cfg.child_or_empty("snapshot");

if(snapshot.empty() && carryover_sides_start.empty() && !carryover_sides.empty())
{
//Explain me: when could this happen?
//if we are loading a start of scenario save and don't have carryover_sides_start, use carryover_sides
carryover_sides_start = carryover_sides;
}

LOG_NG << "scenario: '" << carryover_sides_start["next_scenario"] << "'\n";
LOG_NG << "scenario: '" << carryover_sides_start["next_scenario"].str() << "'\n";

if (const config &stats = cfg.child("statistics")) {
statistics::fresh_stats();
Expand All @@ -73,20 +62,6 @@ saved_game::saved_game(const config& cfg, bool show_replay) :

}

bool saved_game::load_replay(const config& cfg){
bool replay_loaded = false;

if(const config& replay_start = cfg.child("replay_start")){
replay_start_ = replay_start;
if(const config& replay = cfg.child("replay")){
this->replay_data = replay;
replay_loaded = true;
}
}

return replay_loaded;
}

static void convert_old_saves(config& cfg){
if(!cfg.has_child("snapshot")){
return;
Expand Down
4 changes: 1 addition & 3 deletions src/saved_game.hpp
Expand Up @@ -13,7 +13,7 @@ class saved_game
public:
saved_game();
saved_game(const saved_game& state);
explicit saved_game(const config& cfg, bool show_replay = false);
explicit saved_game(const config& cfg);

~saved_game(){}
saved_game& operator=(const saved_game& state);
Expand All @@ -28,8 +28,6 @@ class saved_game
mp_game_settings& mp_settings() { return mp_settings_; }
const mp_game_settings& mp_settings() const { return mp_settings_; }

bool load_replay(const config& cfg);

config& replay_start() { return replay_start_; }

/**
Expand Down
2 changes: 1 addition & 1 deletion src/savegame.cpp
Expand Up @@ -293,7 +293,7 @@ void loadgame::check_version_compatibility()

void loadgame::set_gamestate()
{
gamestate_ = saved_game(load_config_, show_replay_);
gamestate_ = saved_game(load_config_);

// Get the status of the random in the snapshot.
// For a replay we need to restore the start only, the replaying gets at
Expand Down

0 comments on commit 7f6d4a7

Please sign in to comment.