+ LevelSubset& subset = * (contrib_subsets[index]);
+
+ if(subset.has_worldmap) {
+ WorldMapNS::WorldMap worldmap;
+ worldmap.set_map_filename(subset.get_worldmap_filename());
+ sound_manager->stop_music();
+
+ // some fading
+ fadeout(256);
+ DrawingContext context;
+ context.draw_text(white_text, "Loading...",
+ Vector(SCREEN_WIDTH/2, SCREEN_HEIGHT/2), CENTER_ALLIGN, LAYER_FOREGROUND1);
+ context.do_drawing();
+
+ // TODO: slots should be available for contrib maps
+ worldmap.loadgame("save/" + subset.name + "-slot1.stsg");
+ worldmap.display(); // run the map
+
+ Menu::set_current(main_menu);
+ resume_demo();
+ } else if (current_subset != index) {
+ current_subset = index;
+ LevelSubset& subset = * (contrib_subsets[index]);
+
+ current_contrib_subset = ⊂
+
+ contrib_subset_menu->clear();
+
+ contrib_subset_menu->add_label(subset.title);
+ contrib_subset_menu->add_hl();
+
+ for (int i = 0; i < subset.get_num_levels(); ++i)
+ {
+ /** get level's title */
+ std::string filename = subset.get_level_filename(i);
+ std::string title = get_level_name(filename);
+ contrib_subset_menu->add_entry(i, title);