added optional button to restart game (door, panel and touch variants)
[rocksndiamonds.git] / src / screens.c
index 3761775a80e9f430a4e6396378c32c1ea31aa9ed..fc344373d34d7734a24d93d5bc79d49d828bba97 100644 (file)
 #define MENU_SCREEN_INFO_SPACE_BOTTOM  (menu.bottom_spacing_info[info_mode])
 #define MENU_SCREEN_INFO_SPACE_LINE    (menu.line_spacing_info[info_mode])
 #define MENU_SCREEN_INFO_SPACE_EXTRA   (menu.extra_spacing_info[info_mode])
-#define MENU_SCREEN_INFO_TILE_SIZE     (menu.tile_size_info[info_mode])
+#define MENU_SCREEN_INFO_TILE_SIZE_RAW (menu.tile_size_info[info_mode])
+#define MENU_SCREEN_INFO_TILE_SIZE     (MENU_SCREEN_INFO_TILE_SIZE_RAW > 0 ? \
+                                        MENU_SCREEN_INFO_TILE_SIZE_RAW : TILEY)
 #define MENU_SCREEN_INFO_ENTRY_SIZE_RAW        (menu.list_entry_size_info[info_mode])
 #define MENU_SCREEN_INFO_ENTRY_SIZE    (MAX(MENU_SCREEN_INFO_ENTRY_SIZE_RAW, \
                                             MENU_SCREEN_INFO_TILE_SIZE))
@@ -1790,6 +1792,9 @@ void DrawMainMenu(void)
   // store valid level series information
   leveldir_last_valid = leveldir_current;
 
+  // store first level of this level set for "level_nr" style animations
+  SetAnimationFirstLevel(leveldir_current->first_level);
+
   // needed if last screen (level choice) changed graphics, sounds or music
   ReloadCustomArtwork(0);
 
@@ -3593,6 +3598,51 @@ void HandleInfoScreen_Music(int dx, int dy, int button)
       ystart += ystep_head;
     }
 
+    if (!strEqual(list->played, UNKNOWN_NAME))
+    {
+      if (!strEqual(list->played_header, UNKNOWN_NAME))
+       DrawTextSCentered(ystart, font_head, list->played_header);
+      else
+       DrawTextSCentered(ystart, font_head, "played in");
+
+      ystart += ystep_head;
+
+      DrawTextFCentered(ystart, font_text, "%s", list->played);
+      ystart += ystep_head;
+    }
+    else if (!list->is_sound)
+    {
+      int music_level_nr = -1;
+      int i;
+
+      // check if this music is configured for a certain level
+      for (i = leveldir_current->first_level;
+          i <= leveldir_current->last_level; i++)
+      {
+       // (special case: "list->music" may be negative for unconfigured music)
+       if (levelset.music[i] != MUS_UNDEFINED &&
+           levelset.music[i] == list->music)
+       {
+         music_level_nr = i;
+
+         break;
+       }
+      }
+
+      if (music_level_nr != -1)
+      {
+       if (!strEqual(list->played_header, UNKNOWN_NAME))
+         DrawTextSCentered(ystart, font_head, list->played_header);
+       else
+         DrawTextSCentered(ystart, font_head, "played in");
+
+       ystart += ystep_head;
+
+       DrawTextFCentered(ystart, font_text, "level %03d", music_level_nr);
+       ystart += ystep_head;
+      }
+    }
+
     DrawTextSCentered(ybottom, font_foot, TEXT_NEXT_PAGE);
 
     if (button != MB_MENU_INITIALIZE)
@@ -5937,7 +5987,7 @@ static void execSetupGame_setScrollDelays(void)
 
     // set current scroll delay value to configured scroll delay value
     scroll_delay_current =
-      getTreeInfoFromIdentifier(scroll_delays,i_to_a(setup.scroll_delay_value));
+      getTreeInfoFromIdentifier(scroll_delays, i_to_a(setup.scroll_delay_value));
 
     // if that fails, set current scroll delay to reliable default value
     if (scroll_delay_current == NULL)
@@ -6497,7 +6547,7 @@ static void execSetupSound(void)
 
     // set current volume value to configured volume value
     volume_simple_current =
-      getTreeInfoFromIdentifier(volumes_simple,i_to_a(setup.volume_simple));
+      getTreeInfoFromIdentifier(volumes_simple, i_to_a(setup.volume_simple));
 
     // if that fails, set current volume to reliable default value
     if (volume_simple_current == NULL)
@@ -6565,7 +6615,7 @@ static void execSetupSound(void)
 
     // set current volume value to configured volume value
     volume_loops_current =
-      getTreeInfoFromIdentifier(volumes_loops,i_to_a(setup.volume_loops));
+      getTreeInfoFromIdentifier(volumes_loops, i_to_a(setup.volume_loops));
 
     // if that fails, set current volume to reliable default value
     if (volume_loops_current == NULL)
@@ -6633,7 +6683,7 @@ static void execSetupSound(void)
 
     // set current volume value to configured volume value
     volume_music_current =
-      getTreeInfoFromIdentifier(volumes_music,i_to_a(setup.volume_music));
+      getTreeInfoFromIdentifier(volumes_music, i_to_a(setup.volume_music));
 
     // if that fails, set current volume to reliable default value
     if (volume_music_current == NULL)
@@ -7498,7 +7548,7 @@ static struct TokenInfo setup_info_graphics[] =
   { TYPE_SWITCH,       &setup.quick_switch,    "Quick Player Focus Switch:" },
   { TYPE_SWITCH,       &setup.quick_doors,     "Quick Menu Doors:"     },
   { TYPE_SWITCH,       &setup.show_titlescreen,"Show Title Screens:"   },
-  { TYPE_SWITCH,       &setup.toons,           "Show Menu Animations:" },
+  { TYPE_SWITCH,       &setup.toons,           "Show Toons:"           },
   { TYPE_SWITCH,       &setup.small_game_graphics, "Small Game Graphics:" },
   { TYPE_YES_NO_AUTO,  &setup.debug.xsn_mode,  debug_xsn_mode          },
   { TYPE_EMPTY,                NULL,                   ""                      },
@@ -10376,47 +10426,47 @@ static void HandleScreenGadgets(struct GadgetInfo *gi)
 
     case SCREEN_CTRL_ID_SCROLL_UP:
       if (game_status == GAME_MODE_NAMES)
-       HandleChoosePlayerName(0,0, 0, -1 * SCROLL_LINE, MB_MENU_MARK);
+       HandleChoosePlayerName(0, 0, 0, -1 * SCROLL_LINE, MB_MENU_MARK);
       else if (game_status == GAME_MODE_LEVELS)
-       HandleChooseLevelSet(0,0, 0, -1 * SCROLL_LINE, MB_MENU_MARK);
+       HandleChooseLevelSet(0, 0, 0, -1 * SCROLL_LINE, MB_MENU_MARK);
       else if (game_status == GAME_MODE_LEVELNR)
-       HandleChooseLevelNr(0,0, 0, -1 * SCROLL_LINE, MB_MENU_MARK);
+       HandleChooseLevelNr(0, 0, 0, -1 * SCROLL_LINE, MB_MENU_MARK);
       else if (game_status == GAME_MODE_SETUP)
-       HandleSetupScreen(0,0, 0, -1 * SCROLL_LINE, MB_MENU_MARK);
+       HandleSetupScreen(0, 0, 0, -1 * SCROLL_LINE, MB_MENU_MARK);
       else if (game_status == GAME_MODE_INFO)
-       HandleInfoScreen(0,0, 0, -1 * SCROLL_LINE, MB_MENU_MARK);
+       HandleInfoScreen(0, 0, 0, -1 * SCROLL_LINE, MB_MENU_MARK);
       else if (game_status == GAME_MODE_SCORES)
-       HandleHallOfFame(0,0, 0, -1 * SCROLL_LINE, MB_MENU_MARK);
+       HandleHallOfFame(0, 0, 0, -1 * SCROLL_LINE, MB_MENU_MARK);
       break;
 
     case SCREEN_CTRL_ID_SCROLL_DOWN:
       if (game_status == GAME_MODE_NAMES)
-       HandleChoosePlayerName(0,0, 0, +1 * SCROLL_LINE, MB_MENU_MARK);
+       HandleChoosePlayerName(0, 0, 0, +1 * SCROLL_LINE, MB_MENU_MARK);
       else if (game_status == GAME_MODE_LEVELS)
-       HandleChooseLevelSet(0,0, 0, +1 * SCROLL_LINE, MB_MENU_MARK);
+       HandleChooseLevelSet(0, 0, 0, +1 * SCROLL_LINE, MB_MENU_MARK);
       else if (game_status == GAME_MODE_LEVELNR)
-       HandleChooseLevelNr(0,0, 0, +1 * SCROLL_LINE, MB_MENU_MARK);
+       HandleChooseLevelNr(0, 0, 0, +1 * SCROLL_LINE, MB_MENU_MARK);
       else if (game_status == GAME_MODE_SETUP)
-       HandleSetupScreen(0,0, 0, +1 * SCROLL_LINE, MB_MENU_MARK);
+       HandleSetupScreen(0, 0, 0, +1 * SCROLL_LINE, MB_MENU_MARK);
       else if (game_status == GAME_MODE_INFO)
-       HandleInfoScreen(0,0, 0, +1 * SCROLL_LINE, MB_MENU_MARK);
+       HandleInfoScreen(0, 0, 0, +1 * SCROLL_LINE, MB_MENU_MARK);
       else if (game_status == GAME_MODE_SCORES)
-       HandleHallOfFame(0,0, 0, +1 * SCROLL_LINE, MB_MENU_MARK);
+       HandleHallOfFame(0, 0, 0, +1 * SCROLL_LINE, MB_MENU_MARK);
       break;
 
     case SCREEN_CTRL_ID_SCROLL_VERTICAL:
       if (game_status == GAME_MODE_NAMES)
-       HandleChoosePlayerName(0,0,999,gi->event.item_position,MB_MENU_INITIALIZE);
+       HandleChoosePlayerName(0, 0, 999, gi->event.item_position, MB_MENU_INITIALIZE);
       else if (game_status == GAME_MODE_LEVELS)
-       HandleChooseLevelSet(0,0,999,gi->event.item_position,MB_MENU_INITIALIZE);
+       HandleChooseLevelSet(0, 0, 999, gi->event.item_position, MB_MENU_INITIALIZE);
       else if (game_status == GAME_MODE_LEVELNR)
-       HandleChooseLevelNr(0,0,999,gi->event.item_position,MB_MENU_INITIALIZE);
+       HandleChooseLevelNr(0, 0, 999, gi->event.item_position, MB_MENU_INITIALIZE);
       else if (game_status == GAME_MODE_SETUP)
-       HandleSetupScreen(0,0, 999,gi->event.item_position,MB_MENU_INITIALIZE);
+       HandleSetupScreen(0, 0, 999, gi->event.item_position, MB_MENU_INITIALIZE);
       else if (game_status == GAME_MODE_INFO)
-       HandleInfoScreen(0,0, 999,gi->event.item_position,MB_MENU_INITIALIZE);
+       HandleInfoScreen(0, 0, 999, gi->event.item_position, MB_MENU_INITIALIZE);
       else if (game_status == GAME_MODE_SCORES)
-       HandleHallOfFame(0,0, 999,gi->event.item_position,MB_MENU_INITIALIZE);
+       HandleHallOfFame(0, 0, 999, gi->event.item_position, MB_MENU_INITIALIZE);
       break;
 
     case SCREEN_CTRL_ID_NETWORK_SERVER: