added reloading server scores after download has finished
authorHolger Schemel <info@artsoft.org>
Sat, 1 May 2021 23:19:14 +0000 (01:19 +0200)
committerHolger Schemel <info@artsoft.org>
Sat, 1 May 2021 23:19:14 +0000 (01:19 +0200)
src/files.c
src/main.h
src/screens.c

index 4be8f3026391e8ffb31c7c0d219ed757ab11dcb9..b3aa171bcde56917c7d3080478ab3b0c23d87702 100644 (file)
@@ -8439,6 +8439,8 @@ static void setScoreInfoToDefaultsExt(struct ScoreInfo *scores)
   scores->num_entries = 0;
   scores->last_added = -1;
   scores->last_added_local = -1;
+
+  scores->updated = FALSE;
 }
 
 static void setScoreInfoToDefaults(void)
@@ -8985,6 +8987,8 @@ static void DownloadServerScoreToCacheExt(struct HttpRequest *request,
   fclose(file);
 
   SetFilePermissions(filename, PERMS_PRIVATE);
+
+  server_scores.updated = TRUE;
 }
 
 static void DownloadServerScoreToCache(int nr)
index fe1106db8ab74d2cc08381e4b2da1fe18b02ef31..1b9e7cb63691eb31f714189f1c55e5ec22e796e2 100644 (file)
@@ -3058,6 +3058,8 @@ struct ScoreInfo
   int last_added;
   int last_added_local;
 
+  boolean updated;
+
   struct ScoreEntry entry[MAX_SCORE_ENTRIES];
 };
 
index 5aa80c9c88cd55cf196463f259b874465664be78..4fb4e148fbdc2e54621aeb3045d23f35defbe255 100644 (file)
@@ -5153,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);
@@ -5196,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();