removed function parameter only used for storing copy of global variable
[rocksndiamonds.git] / src / screens.c
index c60881afae76b2c85850c6196788f7238780847b..d257060fa732cd0b937dd3b03fe17d12b7978e1f 100644 (file)
@@ -2172,7 +2172,7 @@ void HandleMainMenu(int mx, int my, int dx, int dy, int button)
 
        SetGameStatus(GAME_MODE_SCORES);
 
-       DrawHallOfFame(level_nr, -1);
+       DrawHallOfFame(level_nr);
       }
       else if (pos == MAIN_CONTROL_EDITOR)
       {
@@ -5029,7 +5029,7 @@ void HandleChooseLevelNr(int mx, int my, int dx, int dy, int button)
   HandleChooseTree(mx, my, dx, dy, button, &level_number_current);
 }
 
-void DrawHallOfFame(int level_nr, int highlight_position)
+void DrawHallOfFame(int level_nr)
 {
   int fade_mask = REDRAW_FIELD;
 
@@ -5046,11 +5046,13 @@ void DrawHallOfFame(int level_nr, int highlight_position)
   SetDrawDeactivationMask(REDRAW_NONE);
   SetDrawBackgroundMask(REDRAW_FIELD);
 
-  if (highlight_position < 0) 
+  if (scores.last_added < 0)
     LoadScore(level_nr);
   else
     SetAnimStatus(GAME_MODE_PSEUDO_SCORESNEW);
 
+  LoadServerScore(level_nr);
+
   FadeSetEnterScreen();
 
   FadeOut(fade_mask);
@@ -5062,13 +5064,28 @@ void DrawHallOfFame(int level_nr, int highlight_position)
 
   OpenDoor(GetDoorState() | DOOR_NO_DELAY | DOOR_FORCE_REDRAW);
 
-  HandleHallOfFame(level_nr, highlight_position, 0, 0, MB_MENU_INITIALIZE);
+  HandleHallOfFame(level_nr, scores.last_added, 0, 0, MB_MENU_INITIALIZE);
 
   DrawMaskedBorder(fade_mask);
 
   FadeIn(fade_mask);
 }
 
+static int getHallOfFameFirstEntry(int first_entry, int step)
+{
+  if (step == 0)
+    first_entry = scores.last_added - (NUM_MENU_ENTRIES_ON_SCREEN + 1) / 2 + 1;
+  else
+    first_entry += step;
+
+  if (first_entry < 0)
+    first_entry = 0;
+  else if (first_entry > MAX_SCORE_ENTRIES - NUM_MENU_ENTRIES_ON_SCREEN)
+    first_entry = MAX(0, MAX_SCORE_ENTRIES - NUM_MENU_ENTRIES_ON_SCREEN);
+
+  return first_entry;
+}
+
 static char *getHallOfFameScoreText(int nr)
 {
   if (!level.rate_time_over_score)
@@ -5141,12 +5158,7 @@ void HandleHallOfFame(int mx, int my, int dx, int dy, int button)
     level_nr = mx;
     highlight_position = my;
 
-    first_entry = highlight_position - (NUM_MENU_ENTRIES_ON_SCREEN + 1) / 2 + 1;
-
-    if (first_entry < 0)
-      first_entry = 0;
-    else if (first_entry + NUM_MENU_ENTRIES_ON_SCREEN > MAX_SCORE_ENTRIES)
-      first_entry = MAX(0, MAX_SCORE_ENTRIES - NUM_MENU_ENTRIES_ON_SCREEN);
+    first_entry = getHallOfFameFirstEntry(0, 0);
 
     drawHallOfFameList(level_nr, first_entry, highlight_position);
 
@@ -5158,25 +5170,15 @@ void HandleHallOfFame(int mx, int my, int dx, int dy, int button)
 
   if (dy < 0)
   {
-    if (first_entry > 0)
-    {
-      first_entry -= step;
-      if (first_entry < 0)
-       first_entry = 0;
+    first_entry = getHallOfFameFirstEntry(first_entry, -step);
 
-      drawHallOfFameList(level_nr, first_entry, highlight_position);
-    }
+    drawHallOfFameList(level_nr, first_entry, highlight_position);
   }
   else if (dy > 0)
   {
-    if (first_entry + NUM_MENU_ENTRIES_ON_SCREEN < MAX_SCORE_ENTRIES)
-    {
-      first_entry += step;
-      if (first_entry + NUM_MENU_ENTRIES_ON_SCREEN > MAX_SCORE_ENTRIES)
-       first_entry = MAX(0, MAX_SCORE_ENTRIES - NUM_MENU_ENTRIES_ON_SCREEN);
+    first_entry = getHallOfFameFirstEntry(first_entry, step);
 
-      drawHallOfFameList(level_nr, first_entry, highlight_position);
-    }
+    drawHallOfFameList(level_nr, first_entry, highlight_position);
   }
   else if (button == MB_MENU_LEAVE || button == MB_MENU_CHOICE)
   {