- FadeSoundsAndMusic();
-
- FadeOut(REDRAW_ALL);
- }
-
- /* force TITLE music on title info screen */
- game_status = GAME_MODE_TITLE;
-
- PlayMenuSound();
- PlayMenuMusic();
-
- game_status = last_game_status; /* restore current game status */
-
- if (graphic_info[getTitleScreenGraphic(0, show_title_initial)].bitmap != NULL)
- {
- DrawTitleScreenImage(title_nr, show_title_initial);
- }
- else
- {
- DrawTitleScreenMessage(filename);
-
- showing_message = TRUE;
-
- title.fade_delay_final = title.fade_delay;
- title.post_delay_final = title.post_delay;
- title.auto_delay_final = -1;
- }
-
- FadeIn(REDRAW_ALL);
-
- DelayReached(&title_delay, 0); /* reset delay counter */
-
- return;
- }
-
- if (title.auto_delay_final > -1 &&
- DelayReached(&title_delay, title.auto_delay_final))
- button = MB_MENU_CHOICE;
-
- if (button == MB_MENU_LEAVE)
- {
- return_to_main_menu = TRUE;
- use_fading_main_menu = FALSE;
- }
- else if (button == MB_MENU_CHOICE)
- {
- int anim_mode;
-
- if (game_status == GAME_MODE_INFO && no_title_info)
- {
- FadeOut(REDRAW_FIELD);
-
- info_mode = INFO_MODE_MAIN;
- DrawAndFadeInInfoScreen(REDRAW_FIELD);
-
- return;
- }
-
- title_nr++;
-
- if (show_title_initial &&
- (title_nr >= MAX_NUM_TITLE_IMAGES ||
- graphic_info[IMG_TITLESCREEN_INITIAL_1 + title_nr].bitmap == NULL))
- {
- show_title_initial = FALSE;
-
- title_nr = 0; /* restart with title screens for current level set */
- }
-
- anim_mode = graphic_info[getTitleScreenGraphic(title_nr, show_title_initial)].anim_mode;
-
- use_cross_fading = (anim_mode == ANIM_FADE ? FALSE :
- anim_mode == ANIM_CROSSFADE ? TRUE :
- use_cross_fading);
-
- if (!use_cross_fading)
- FadeOut(REDRAW_ALL);
-
- if (title_nr < MAX_NUM_TITLE_IMAGES &&
- graphic_info[getTitleScreenGraphic(title_nr, show_title_initial)].bitmap != NULL)
- {
- if (use_cross_fading)
- FadeCrossSaveBackbuffer();
-
- DrawTitleScreenImage(title_nr, show_title_initial);
-
- if (use_cross_fading)
- FadeCross(REDRAW_ALL);
- else
- FadeIn(REDRAW_ALL);
-
- DelayReached(&title_delay, 0); /* reset delay counter */
- }
- else if (!showing_message && filename != NULL)
- {
- if (use_cross_fading)
- FadeCrossSaveBackbuffer();
-
- DrawTitleScreenMessage(filename);
-
- if (use_cross_fading)
- FadeCross(REDRAW_ALL);
- else
- FadeIn(REDRAW_ALL);
-
- DelayReached(&title_delay, 0); /* reset delay counter */
-
- showing_message = TRUE;
- }
- else
- {
- FadeSoundsAndMusic();
-
- FadeOut(REDRAW_ALL);
-
- return_to_main_menu = TRUE;
- }
- }
-
- if (return_to_main_menu)
- {
- show_title_initial = FALSE;
-
- RedrawBackground();
-
- if (game_status == GAME_MODE_INFO)
- {
- OpenDoor(DOOR_CLOSE_1 | DOOR_CLOSE_2 | DOOR_NO_DELAY | DOOR_FORCE_REDRAW);
-
- info_mode = INFO_MODE_MAIN;
- DrawInfoScreenExt(REDRAW_ALL, use_fading_main_menu);
- }
- else /* default: return to main menu */
- {
- OpenDoor(DOOR_CLOSE_1 | DOOR_OPEN_2 | DOOR_NO_DELAY | DOOR_FORCE_REDRAW);
-
- game_status = GAME_MODE_MAIN;
- DrawMainMenuExt(REDRAW_ALL, use_fading_main_menu);
- }
- }
-}
-#endif
-
-void HandleMainMenu_SelectLevel(int step, int direction)
-{
- int old_level_nr = level_nr;
- int new_level_nr;
-
- new_level_nr = old_level_nr + step * direction;
- if (new_level_nr < leveldir_current->first_level)
- new_level_nr = leveldir_current->first_level;
- if (new_level_nr > leveldir_current->last_level)
- new_level_nr = leveldir_current->last_level;
-
- if (setup.handicap && new_level_nr > leveldir_current->handicap_level)
- {
- /* skipping levels is only allowed when trying to skip single level */
- if (setup.skip_levels && step == 1 &&
- Request("Level still unsolved ! Skip despite handicap ?", REQ_ASK))
- {
- leveldir_current->handicap_level++;
- SaveLevelSetup_SeriesInfo();
- }
-
- new_level_nr = leveldir_current->handicap_level;
- }
-
- if (new_level_nr != old_level_nr)
- {
- struct MainControlInfo *mci= getMainControlInfo(MAIN_CONTROL_LEVEL_NUMBER);
-
- PlaySound(SND_MENU_ITEM_SELECTING);
-
- level_nr = new_level_nr;
-
-#if 1
- DrawText(mSX + mci->pos_text->x, mSY + mci->pos_text->y,
- int2str(level_nr, 3), mci->pos_text->font);
-#else
- DrawText(mSX + 11 * 32, mSY + 3 * 32, int2str(level_nr, 3), FONT_VALUE_1);
-#endif