Skip to content

Commit

Permalink
Fix the MP Create Dialog's handling of unplayable maps
Browse files Browse the repository at this point in the history
The UX seems to already be prepared for this - if the map doesn't load then
the create_engine class puts an error message in the map description, which
is shown on the top-left of the MP Create Dialog when the map is selected.

Fixes bugs #3149, #4395 and #4545.  The block deleted in this commit skipped
adding an entry to the games_list listbox, which broke assumptions elsewhere
that the indices returned by create_game_.get_filtered_level_indices()
correspond to the indices in the listbox.
  • Loading branch information
stevecotton committed Mar 16, 2020
1 parent 4682b45 commit d4c34c5
Showing 1 changed file with 10 additions and 4 deletions.
14 changes: 10 additions & 4 deletions src/gui/dialogs/multiplayer/mp_create_game.cpp
Expand Up @@ -607,10 +607,6 @@ void mp_create_game::display_games_of_type(window& window, ng::level::TYPE type,
list.clear();

for(const auto& game : create_engine_.get_levels_by_type_unfiltered(type)) {
if(!game->can_launch_game()) {
continue;
}

std::map<std::string, string_map> data;
string_map item;

Expand Down Expand Up @@ -840,6 +836,16 @@ bool mp_create_game::dialog_exit_hook(window& /*window*/)
return false;
}

if(!create_engine_.current_level().can_launch_game()) {
std::stringstream msg;
// TRANSLATORS: This sentence will be followed by some details of the error, most likely the "Map could not be loaded" message from create_engine.cpp
msg << _("The selected game can not be created.");

This comment has been minimized.

Copy link
@Wedge009

Wedge009 Aug 13, 2020

Member

@stevecotton can not -> cannot

This comment has been minimized.

Copy link
@stevecotton

stevecotton Aug 13, 2020

Author Contributor

Thanks for catching this, correction pushed in 4a64027. It seems to be a good time to push, given that today has other spelling corrections.

This comment has been minimized.

Copy link
@Wedge009

Wedge009 Aug 13, 2020

Member

Yep, thanks. I checked in #wesnoth-dev, it's okay to push corrections at the moment.

msg << "\n\n";
msg << create_engine_.current_level().description();
gui2::show_transient_error_message(msg.str());
return false;
}

if(!create_engine_.is_campaign()) {
return true;
}
Expand Down

0 comments on commit d4c34c5

Please sign in to comment.