sync :next_level command

This commit is contained in:
gfgtdf 2015-06-07 19:58:35 +02:00
parent fb40721922
commit 035aa07506
2 changed files with 28 additions and 22 deletions

View File

@ -2952,17 +2952,7 @@ void console_handler::do_nosaves() {
void console_handler::do_next_level()
{
if (!get_data().empty())
menu_handler_.gamedata().set_next_scenario(get_data());
end_level_data e;
e.transient.carryover_report = false;
e.prescenario_save = true;
e.transient.linger_mode = false;
e.proceed_to_next_level = true;
e.is_victory = true;
menu_handler_.pc_.set_end_level_data(e);
menu_handler_.pc_.force_end_turn();
menu_handler_.pc_.maybe_throw_return_to_play_side();
synced_context::run_and_throw("debug_next_level", config_of("next_level", get_data()));
}
void console_handler::do_choose_level() {
@ -3004,17 +2994,7 @@ void console_handler::do_choose_level() {
return;
if (size_t(choice) < options.size()) {
menu_handler_.gamedata().set_next_scenario(options[choice]);
end_level_data e;
e.transient.carryover_report = false;
e.prescenario_save = true;
e.transient.linger_mode = false;
e.proceed_to_next_level = true;
e.is_victory = true;
menu_handler_.pc_.set_end_level_data(e);
// This is for linger mode where end turn is actualy end scenario.
menu_handler_.pc_.force_end_turn();
menu_handler_.pc_.maybe_throw_return_to_play_side();
synced_context::run_and_throw("debug_next_level", config_of("next_level", options[choice]));
}
}

View File

@ -497,3 +497,29 @@ SYNCED_COMMAND_HANDLER_FUNCTION(debug_lua, child, use_undo, /*show*/, /*error_ha
return true;
}
SYNCED_COMMAND_HANDLER_FUNCTION(debug_next_level, child, use_undo, /*show*/, /*error_handler*/)
{
if(use_undo) {
resources::undo_stack->clear();
}
utils::string_map symbols;
symbols["player"] = resources::controller->current_team().current_player();
resources::screen->announce(vgettext(":next_level debug command was used during turn of $player", symbols), font::NORMAL_COLOR);
std::string next_level = child["next_level"];
if (!next_level.empty())
resources::gamedata->set_next_scenario(next_level);
end_level_data e;
e.transient.carryover_report = false;
e.prescenario_save = true;
e.transient.linger_mode = false;
e.proceed_to_next_level = true;
e.is_victory = true;
resources::controller->set_end_level_data(e);
resources::controller->force_end_turn();
return true;
}