removed unused code
[rocksndiamonds.git] / src / screens.c
index bf9f0a966348c1a9a9b4a82e764287ef8fed4c69..c0cf22f7f635b133e1fc54d1ec6038ba31566b9c 100644 (file)
@@ -988,6 +988,7 @@ static struct TitleFadingInfo getTitleFading(struct TitleControlInfo *tci)
   ti.fade_delay = tmi.fade_delay;
   ti.post_delay = tmi.post_delay;
   ti.auto_delay = tmi.auto_delay;
+  ti.auto_delay_unit = tmi.auto_delay_unit;
 
   return ti;
 }
@@ -1704,6 +1705,25 @@ static void gotoTopLevelDir(void)
   }
 }
 
+static unsigned int getAutoDelayCounter(struct TitleFadingInfo *fi)
+{
+  boolean use_frame_counter = (fi->auto_delay_unit == AUTO_DELAY_UNIT_FRAMES);
+
+  return (use_frame_counter ? video.frame_counter : Counter());
+}
+
+static boolean TitleAutoDelayReached(unsigned int *counter_var,
+                                    struct TitleFadingInfo *fi)
+{
+  return DelayReachedExt(counter_var, fi->auto_delay, getAutoDelayCounter(fi));
+}
+
+static void ResetTitleAutoDelay(unsigned int *counter_var,
+                               struct TitleFadingInfo *fi)
+{
+  *counter_var = getAutoDelayCounter(fi);
+}
+
 void HandleTitleScreen(int mx, int my, int dx, int dy, int button)
 {
   static unsigned int title_delay = 0;
@@ -1778,12 +1798,12 @@ void HandleTitleScreen(int mx, int my, int dx, int dy, int button)
 
     FadeIn(REDRAW_ALL);
 
-    DelayReached(&title_delay, 0);     // reset delay counter
+    ResetTitleAutoDelay(&title_delay, &fading);
 
     return;
   }
 
-  if (fading.auto_delay > 0 && DelayReached(&title_delay, fading.auto_delay))
+  if (fading.auto_delay > 0 && TitleAutoDelayReached(&title_delay, &fading))
     button = MB_MENU_CHOICE;
 
   if (button == MB_MENU_LEAVE)
@@ -1841,7 +1861,7 @@ void HandleTitleScreen(int mx, int my, int dx, int dy, int button)
 
       FadeIn(REDRAW_ALL);
 
-      DelayReached(&title_delay, 0);   // reset delay counter
+      ResetTitleAutoDelay(&title_delay, &fading);
     }
     else
     {
@@ -4530,7 +4550,7 @@ void DrawChooseLevelNr(void)
   for (i = leveldir_current->first_level; i <= leveldir_current->last_level;i++)
   {
     TreeInfo *ti = newTreeInfo_setDefaults(TREE_TYPE_LEVEL_NR);
-    char identifier[32], name[32];
+    char identifier[32], name[64];
     int value = i;
 
     // temporarily load level info to get level name
@@ -4705,7 +4725,8 @@ void HandleHallOfFame(int mx, int my, int dx, int dy, int button)
 
     FadeSound(SND_BACKGROUND_SCORES);
 
-    if (game_status_last_screen == GAME_MODE_PLAYING &&
+    if (button == MB_MENU_CHOICE &&
+       game_status_last_screen == GAME_MODE_PLAYING &&
        setup.auto_play_next_level && setup.increment_levels &&
        level_nr < leveldir_current->last_level &&
        !network_playing)
@@ -8279,64 +8300,10 @@ void HandleGameActions(void)
 
 // ---------- new screen button stuff --------------------------------------
 
-static void getScreenMenuButtonPos(int *x, int *y, int gadget_id)
-{
-  switch (gadget_id)
-  {
-    case SCREEN_CTRL_ID_PREV_LEVEL:
-      *x = mSX + GDI_ACTIVE_POS(menu.main.button.prev_level.x);
-      *y = mSY + GDI_ACTIVE_POS(menu.main.button.prev_level.y);
-      break;
-
-    case SCREEN_CTRL_ID_NEXT_LEVEL:
-      *x = mSX + GDI_ACTIVE_POS(menu.main.button.next_level.x);
-      *y = mSY + GDI_ACTIVE_POS(menu.main.button.next_level.y);
-      break;
-
-    case SCREEN_CTRL_ID_FIRST_LEVEL:
-      *x = mSX + GDI_ACTIVE_POS(menu.main.button.first_level.x);
-      *y = mSY + GDI_ACTIVE_POS(menu.main.button.first_level.y);
-      break;
-
-    case SCREEN_CTRL_ID_LAST_LEVEL:
-      *x = mSX + GDI_ACTIVE_POS(menu.main.button.last_level.x);
-      *y = mSY + GDI_ACTIVE_POS(menu.main.button.last_level.y);
-      break;
-
-    case SCREEN_CTRL_ID_LEVEL_NUMBER:
-      *x = mSX + GDI_ACTIVE_POS(menu.main.button.level_number.x);
-      *y = mSY + GDI_ACTIVE_POS(menu.main.button.level_number.y);
-      break;
-
-    case SCREEN_CTRL_ID_PREV_PLAYER:
-      *x = mSX + TILEX * 10;
-      *y = mSY + TILEY * MENU_SCREEN_START_YPOS;
-      break;
-
-    case SCREEN_CTRL_ID_NEXT_PLAYER:
-      *x = mSX + TILEX * 12;
-      *y = mSY + TILEY * MENU_SCREEN_START_YPOS;
-      break;
-
-    case SCREEN_CTRL_ID_INSERT_SOLUTION:
-      *x = mSX + GDI_ACTIVE_POS(menu.main.button.insert_solution.x);
-      *y = mSY + GDI_ACTIVE_POS(menu.main.button.insert_solution.y);
-      break;
-
-    case SCREEN_CTRL_ID_PLAY_SOLUTION:
-      *x = mSX + GDI_ACTIVE_POS(menu.main.button.play_solution.x);
-      *y = mSY + GDI_ACTIVE_POS(menu.main.button.play_solution.y);
-      break;
-
-    default:
-      Error(ERR_EXIT, "unknown gadget ID %d", gadget_id);
-  }
-}
-
 static struct
 {
   int gfx_unpressed, gfx_pressed;
-  void (*get_gadget_position)(int *, int *, int);
+  struct MenuPosInfo *pos;
   int gadget_id;
   int screen_mask;
   unsigned int event_mask;
@@ -8345,7 +8312,7 @@ static struct
 {
   {
     IMG_MENU_BUTTON_PREV_LEVEL, IMG_MENU_BUTTON_PREV_LEVEL_ACTIVE,
-    getScreenMenuButtonPos,
+    &menu.main.button.prev_level,
     SCREEN_CTRL_ID_PREV_LEVEL,
     SCREEN_MASK_MAIN,
     GD_EVENT_PRESSED | GD_EVENT_REPEATED,
@@ -8353,7 +8320,7 @@ static struct
   },
   {
     IMG_MENU_BUTTON_NEXT_LEVEL, IMG_MENU_BUTTON_NEXT_LEVEL_ACTIVE,
-    getScreenMenuButtonPos,
+    &menu.main.button.next_level,
     SCREEN_CTRL_ID_NEXT_LEVEL,
     SCREEN_MASK_MAIN,
     GD_EVENT_PRESSED | GD_EVENT_REPEATED,
@@ -8361,7 +8328,7 @@ static struct
   },
   {
     IMG_MENU_BUTTON_FIRST_LEVEL, IMG_MENU_BUTTON_FIRST_LEVEL_ACTIVE,
-    getScreenMenuButtonPos,
+    &menu.main.button.first_level,
     SCREEN_CTRL_ID_FIRST_LEVEL,
     SCREEN_MASK_MAIN,
     GD_EVENT_RELEASED,
@@ -8369,7 +8336,7 @@ static struct
   },
   {
     IMG_MENU_BUTTON_LAST_LEVEL, IMG_MENU_BUTTON_LAST_LEVEL_ACTIVE,
-    getScreenMenuButtonPos,
+    &menu.main.button.last_level,
     SCREEN_CTRL_ID_LAST_LEVEL,
     SCREEN_MASK_MAIN,
     GD_EVENT_RELEASED,
@@ -8377,7 +8344,7 @@ static struct
   },
   {
     IMG_MENU_BUTTON_LEVEL_NUMBER, IMG_MENU_BUTTON_LEVEL_NUMBER_ACTIVE,
-    getScreenMenuButtonPos,
+    &menu.main.button.level_number,
     SCREEN_CTRL_ID_LEVEL_NUMBER,
     SCREEN_MASK_MAIN,
     GD_EVENT_RELEASED,
@@ -8385,7 +8352,7 @@ static struct
   },
   {
     IMG_MENU_BUTTON_LEFT, IMG_MENU_BUTTON_LEFT_ACTIVE,
-    getScreenMenuButtonPos,
+    &menu.setup.button.prev_player,
     SCREEN_CTRL_ID_PREV_PLAYER,
     SCREEN_MASK_INPUT,
     GD_EVENT_PRESSED | GD_EVENT_REPEATED,
@@ -8393,7 +8360,7 @@ static struct
   },
   {
     IMG_MENU_BUTTON_RIGHT, IMG_MENU_BUTTON_RIGHT_ACTIVE,
-    getScreenMenuButtonPos,
+    &menu.setup.button.next_player,
     SCREEN_CTRL_ID_NEXT_PLAYER,
     SCREEN_MASK_INPUT,
     GD_EVENT_PRESSED | GD_EVENT_REPEATED,
@@ -8401,7 +8368,7 @@ static struct
   },
   {
     IMG_MENU_BUTTON_INSERT_SOLUTION, IMG_MENU_BUTTON_INSERT_SOLUTION_ACTIVE,
-    getScreenMenuButtonPos,
+    &menu.main.button.insert_solution,
     SCREEN_CTRL_ID_INSERT_SOLUTION,
     SCREEN_MASK_MAIN_HAS_SOLUTION,
     GD_EVENT_RELEASED,
@@ -8409,7 +8376,7 @@ static struct
   },
   {
     IMG_MENU_BUTTON_PLAY_SOLUTION, IMG_MENU_BUTTON_PLAY_SOLUTION_ACTIVE,
-    getScreenMenuButtonPos,
+    &menu.main.button.play_solution,
     SCREEN_CTRL_ID_PLAY_SOLUTION,
     SCREEN_MASK_MAIN_HAS_SOLUTION,
     GD_EVENT_RELEASED,
@@ -8487,6 +8454,7 @@ static void CreateScreenMenubuttons(void)
 
   for (i = 0; i < NUM_SCREEN_MENUBUTTONS; i++)
   {
+    struct MenuPosInfo *pos = menubutton_info[i].pos;
     Bitmap *gd_bitmap_unpressed, *gd_bitmap_pressed;
     int gfx_unpressed, gfx_pressed;
     int x, y, width, height;
@@ -8495,7 +8463,8 @@ static void CreateScreenMenubuttons(void)
 
     event_mask = menubutton_info[i].event_mask;
 
-    menubutton_info[i].get_gadget_position(&x, &y, id);
+    x = mSX + GDI_ACTIVE_POS(pos->x);
+    y = mSY + GDI_ACTIVE_POS(pos->y);
 
     width  = graphic_info[menubutton_info[i].gfx_pressed].width;
     height = graphic_info[menubutton_info[i].gfx_pressed].height;