+#if 1
+void HandleTitleScreen(int mx, int my, int dx, int dy, int button)
+{
+ static unsigned long title_delay = 0;
+ static int title_screen_nr = 0;
+ boolean return_to_main_menu = FALSE;
+ boolean use_fading_main_menu = TRUE;
+#if 1
+ boolean use_cross_fading = FALSE;
+#else
+ boolean use_cross_fading = !show_title_initial; /* default */
+#endif
+ struct TitleControlInfo *tci;
+
+ if (button == MB_MENU_INITIALIZE)
+ {
+ int last_game_status = game_status; /* save current game status */
+
+ title_delay = 0;
+ title_screen_nr = 0;
+ tci = &title_controls[title_screen_nr];
+
+#if 0
+ /* determine number of title screens to display (images and messages) */
+ InitializeTitleControls();
+#endif
+
+ if (game_status == GAME_MODE_INFO)
+ {
+ if (num_title_screens == 0)
+ {
+ DrawInfoScreen_NotAvailable("Title screen information:",
+ "No title screen for this level set.");
+
+ title.auto_delay_final = -1;
+
+ return;
+ }
+
+ 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 (tci->is_image)
+ {
+ DrawTitleScreenImage(tci->local_nr, tci->initial);
+ }
+ else
+ {
+ DrawTitleScreenMessage(tci->local_nr, tci->initial);
+
+ title.fade_delay_final = title.fade_delay;
+ title.post_delay_final = title.post_delay;
+ title.auto_delay_final = -1;
+ }
+
+ SetMouseCursor(CURSOR_NONE);
+
+ 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 && num_title_screens == 0)
+ {
+ FadeOut(REDRAW_FIELD);
+
+ info_mode = INFO_MODE_MAIN;
+ DrawAndFadeInInfoScreen(REDRAW_FIELD);
+
+ return;
+ }
+
+ title_screen_nr++;
+ tci = &title_controls[title_screen_nr];
+
+ if (tci->is_image)
+ anim_mode =
+ graphic_info[getTitleScreenGraphic(tci->local_nr,
+ tci->initial)].anim_mode;
+ else
+ anim_mode = ANIM_FADE; /* ??? */
+
+ use_cross_fading = (anim_mode == ANIM_FADE ? FALSE :
+ anim_mode == ANIM_CROSSFADE ? TRUE :
+ use_cross_fading);
+
+ if (title_screen_nr < num_title_screens)
+ {
+ if (!use_cross_fading)
+ FadeOut(REDRAW_ALL);
+
+ if (use_cross_fading)
+ FadeCrossSaveBackbuffer();
+
+ if (tci->is_image)
+ DrawTitleScreenImage(tci->local_nr, tci->initial);
+ else
+ DrawTitleScreenMessage(tci->local_nr, tci->initial);
+
+ if (use_cross_fading)
+ FadeCross(REDRAW_ALL);
+ else
+ FadeIn(REDRAW_ALL);
+
+ DelayReached(&title_delay, 0); /* reset delay counter */
+ }
+ else
+ {
+ FadeSoundsAndMusic();
+
+ FadeOut(REDRAW_ALL);
+
+ return_to_main_menu = TRUE;
+ }
+ }
+
+ if (return_to_main_menu)
+ {
+ RedrawBackground();
+
+ SetMouseCursor(CURSOR_DEFAULT);
+
+ 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);
+ }
+ }
+}
+
+#else
+