+ /* Don't draw menu, if quit is true */
+ Menu* menu = Menu::current();
+ if(menu)
+ {
+ menu->draw(context);
+ menu->action();
+
+ if(menu == main_menu)
+ {
+ switch (main_menu->check())
+ {
+ case MNID_STARTGAME:
+ // Start Game, ie. goto the slots menu
+ update_load_save_game_menu(load_game_menu);
+ break;
+ case MNID_WORLDMAP_CONTRIB:
+ break;
+ case MNID_LEVELS_CONTRIB:
+ // Contrib Menu
+ puts("Entering contrib menu");
+ generate_contrib_menu();
+ break;
+ case MNID_LEVELEDITOR:
+ leveleditor = new LevelEditor();
+ leveleditor->run();
+ delete leveleditor;
+ Menu::set_current(main_menu);
+ update_time = st_get_ticks();
+ break;
+ case MNID_CREDITS:
+ display_text_file("CREDITS", SCROLL_SPEED_CREDITS);
+ Menu::set_current(main_menu);
+ break;
+ case MNID_QUITMAINMENU:
+ Menu::set_current(0);
+ break;
+ }
+ }
+ else if(menu == options_menu)
+ {
+ process_options_menu();
+ }
+ else if(menu == load_game_menu)
+ {
+ if(event.key.keysym.sym == SDLK_DELETE)
+ {
+ int slot = menu->get_active_item_id();
+ char str[1024];
+ sprintf(str,_("Are you sure you want to delete slot %d?"), slot);
+
+ if(confirm_dialog(bkg_title, str))
+ {
+ sprintf(str,"%s/slot%d.stsg", st_save_dir, slot);
+ printf("Removing: %s\n",str);
+ remove(str);
+ }
+
+ update_load_save_game_menu(load_game_menu);
+ Menu::set_current(main_menu);
+ update_time = st_get_ticks();
+ }
+ else if (process_load_game_menu())
+ {
+ // FIXME: shouldn't be needed if GameSession doesn't relay on global variables
+ titlesession->get_current_sector()->activate();
+ titlesession->set_current();
+ //titletux.level_begin();
+ update_time = st_get_ticks();
+ }
+ }
+ else if(menu == contrib_menu)
+ {
+ check_levels_contrib_menu();
+ }
+ else if (menu == contrib_subset_menu)
+ {
+ check_contrib_subset_menu();
+ }
+ else if(menu == contrib_worldmap_menu)
+ {
+ check_contrib_worldmap_menu();
+ }
+ }