moved converting score to time from high score screen to score file loader
authorHolger Schemel <info@artsoft.org>
Sat, 20 Mar 2021 10:04:05 +0000 (11:04 +0100)
committerHolger Schemel <info@artsoft.org>
Sat, 1 May 2021 13:38:01 +0000 (15:38 +0200)
src/files.c
src/screens.c

index 104ecb4d3560b2f29fa9ac41cfd59569036cf557..1909cbecb81475fa93220dc2193d3fc6a67fc8c0 100644 (file)
@@ -8451,6 +8451,25 @@ static void LoadScore_OLD(int nr)
   fclose(file);
 }
 
+static void ConvertScore_OLD(void)
+{
+  // only convert score to time for levels that rate playing time over score
+  if (!level.rate_time_over_score)
+    return;
+
+  // convert old score to playing time for score-less levels (like Supaplex)
+  int time_final_max = 999;
+  int i;
+
+  for (i = 0; i < MAX_SCORE_ENTRIES; i++)
+  {
+    int score = scores.entry[i].score;
+
+    if (score > 0 && score < time_final_max)
+      scores.entry[i].time = (time_final_max - score - 1) * FRAMES_PER_SECOND;
+  }
+}
+
 static int LoadScore_VERS(File *file, int chunk_size, struct ScoreInfo *scores)
 {
   scores->file_version = getFileVersion(file);
@@ -8580,6 +8599,9 @@ void LoadScore(int nr)
   {
     // score files from versions before 4.2.4.0 without chunk structure
     LoadScore_OLD(nr);
+
+    // convert score to time, if possible (mainly for Supaplex levels)
+    ConvertScore_OLD();
   }
   else
   {
index c23f7ce6cd2af8a40baf75989ef39ef22d188962..8e4fb8c9a3d6638cb19fc040cc6814b6e6a5c734 100644 (file)
@@ -5079,14 +5079,7 @@ static char *getHallOfFameScoreText(int nr)
       return int2str(scores.entry[nr].time, 5);
 
     static char score_text[10];
-    int time_final_max = 999;
     int time_seconds = scores.entry[nr].time / FRAMES_PER_SECOND;
-    int score = scores.entry[nr].score;
-
-    // convert old score file entries without playing time
-    if (time_seconds == 0 && score > 0 && score < time_final_max)
-      time_seconds = time_final_max - score - 1;
-
     int mm = (time_seconds / 60) % 60;
     int ss = (time_seconds % 60);