MP Create Game: don't allow proceeding if selected game has no sides

This commit is contained in:
Charles Dang 2017-10-05 14:11:18 +11:00
parent d957326828
commit b8fe9fe7dc
3 changed files with 15 additions and 1 deletions

View file

@ -352,6 +352,11 @@ void create_engine::init_generated_level_data()
//DBG_MP << current_level().data().debug();
}
bool create_engine::current_level_has_side_data()
{
return current_level().data().has_child("side");
}
void create_engine::prepare_for_new_level()
{
DBG_MP << "preparing mp_game_settings for new level\n";

View file

@ -402,6 +402,9 @@ public:
saved_game& get_state();
/** Returns true if the current level has one or more [side] tags. */
bool current_level_has_side_data();
private:
create_engine(const create_engine&) = delete;
void operator=(const create_engine&) = delete;

View file

@ -712,7 +712,13 @@ void mp_create_game::load_game_callback(window& window)
window.set_retval(LOAD_GAME);
}
bool mp_create_game::dialog_exit_hook(window&) {
bool mp_create_game::dialog_exit_hook(window& window)
{
if(!create_engine_.current_level_has_side_data()) {
gui2::show_transient_error_message(window.video(), _("The selected game has no sides!"));
return false;
}
if(create_engine_.current_level_type() != ng::level::TYPE::CAMPAIGN &&
create_engine_.current_level_type() != ng::level::TYPE::SP_CAMPAIGN
) {