Skip to content

Commit

Permalink
carryover WML is applied at start of scenario by playcampaign.cpp
Browse files Browse the repository at this point in the history
  • Loading branch information
cbeck88 committed Feb 19, 2014
1 parent 9d7255a commit d07c784
Showing 1 changed file with 26 additions and 0 deletions.
26 changes: 26 additions & 0 deletions src/playcampaign.cpp
Expand Up @@ -69,6 +69,28 @@ static void team_init(config& level, game_state& gamestate){
}
}

static void do_carryover_WML(config & level, game_state& gamestate){

if(gamestate.snapshot.child_or_empty("variables")["turn_number"].to_int(-1)<1){

carryover_info sides(gamestate.carryover_sides_start);

end_level_data end_level_ = sides.get_end_level();

if(!end_level_.next_scenario_settings.empty()) {
level.merge_with(end_level_.next_scenario_settings);
}
}
}

static void clear_carryover_WML (game_state & gamestate) {

if (gamestate.carryover_sides.has_child("end_level_data")) {
config & eld = gamestate.carryover_sides.child("end_level_data");
eld.clear_children("next_scenario_settings");
}
}

static void store_carryover(game_state& gamestate, playsingle_controller& playcontroller, display& disp, const end_level_data& end_level){
bool has_next_scenario = !resources::gamedata->next_scenario().empty() &&
resources::gamedata->next_scenario() != "null";
Expand Down Expand Up @@ -234,7 +256,9 @@ static LEVEL_RESULT playsingle_scenario(const config& game_config,
int num_turns = (*level)["turns"].to_int(-1);

config init_level = *level;
do_carryover_WML(init_level, state_of_game);
team_init(init_level, state_of_game);
clear_carryover_WML(state_of_game);

LOG_NG << "creating objects... " << (SDL_GetTicks() - ticks) << "\n";
playsingle_controller playcontroller(init_level, state_of_game, ticks, num_turns, game_config, disp.video(), skip_replay);
Expand Down Expand Up @@ -281,7 +305,9 @@ static LEVEL_RESULT playmp_scenario(const config& game_config,
int num_turns = (*level)["turns"].to_int(-1);

config init_level = *level;
do_carryover_WML(init_level, state_of_game);
team_init(init_level, state_of_game);
clear_carryover_WML(state_of_game);

playmp_controller playcontroller(init_level, state_of_game, ticks, num_turns,
game_config, disp.video(), skip_replay, io_type == IO_SERVER);
Expand Down

0 comments on commit d07c784

Please sign in to comment.