added reloading server scores after download has finished
[rocksndiamonds.git] / src / screens.c
index d38c3f7f1ddfa61f7900086476541695eff7e6e5..4fb4e148fbdc2e54621aeb3045d23f35defbe255 100644 (file)
@@ -5046,12 +5046,10 @@ void DrawHallOfFame(int level_nr)
   SetDrawDeactivationMask(REDRAW_NONE);
   SetDrawBackgroundMask(REDRAW_FIELD);
 
-  if (scores.last_added < 0)
-    LoadScore(level_nr);
-  else
-    SetAnimStatus(GAME_MODE_PSEUDO_SCORESNEW);
+  LoadLocalAndServerScore(level_nr, TRUE);
 
-  LoadServerScore(level_nr);
+  if (scores.last_added >= 0)
+    SetAnimStatus(GAME_MODE_PSEUDO_SCORESNEW);
 
   FadeSetEnterScreen();
 
@@ -5155,6 +5153,14 @@ void HandleHallOfFame(int mx, int my, int dx, int dy, int button)
   {
     level_nr = mx;
 
+    if (server_scores.updated)
+    {
+      // reload scores, using updated server score cache file
+      LoadLocalAndServerScore(level_nr, FALSE);
+
+      server_scores.updated = FALSE;
+    }
+
     first_entry = getHallOfFameFirstEntry(0, 0);
 
     drawHallOfFameList(level_nr, first_entry);
@@ -5198,6 +5204,17 @@ void HandleHallOfFame(int mx, int my, int dx, int dy, int button)
       DrawMainMenu();
     }
   }
+  else if (server_scores.updated)
+  {
+    // reload scores, using updated server score cache file
+    LoadLocalAndServerScore(level_nr, FALSE);
+
+    server_scores.updated = FALSE;
+
+    first_entry = getHallOfFameFirstEntry(0, 0);
+
+    drawHallOfFameList(level_nr, first_entry);
+  }
 
   if (game_status == GAME_MODE_SCORES)
     PlayMenuSoundIfLoop();