moved filesystem code for Emscripten platform to separate functions
[rocksndiamonds.git] / src / screens.c
index 601c05de45e3ff278c40ea8e637e5d7960caa8ab..c02e09d355d7807fe5fa7b4545d6149c9692e8cc 100644 (file)
@@ -1739,15 +1739,7 @@ void DrawMainMenu(void)
 
   OpenDoor(DOOR_CLOSE_1 | DOOR_OPEN_2);
 
-#if defined(PLATFORM_EMSCRIPTEN)
-  EM_ASM
-  (
-    FS.syncfs(function(err)
-    {
-      assert(!err);
-    });
-  );
-#endif
+  SyncEmscriptenFilesystem();
 }
 
 static void gotoTopLevelDir(void)
@@ -2165,6 +2157,9 @@ void HandleMainMenu(int mx, int my, int dx, int dy, int button)
          SaveLevelSetup_LastSeries();
          SaveLevelSetup_SeriesInfo();
 
+         // restore level set if chosen from "last played level set" menu
+         RestoreLastPlayedLevels(&leveldir_current);
+
          if (setup.internal.choose_from_top_leveldir)
            gotoTopLevelDir();
 
@@ -4855,6 +4850,11 @@ static void HandleChooseTree(int mx, int my, int dx, int dy, int button,
 
            HandleMainMenu_SelectLevel(0, 0, new_level_nr);
          }
+         else if (game_status == GAME_MODE_LEVELS)
+         {
+           // store level set if chosen from "last played level set" menu
+           StoreLastPlayedLevels(leveldir_current);
+         }
          else if (game_status == GAME_MODE_NAMES)
          {
            if (mx >= sx1_edit_name && mx <= sx2_edit_name)
@@ -5102,10 +5102,10 @@ static void drawHallOfFameList(int level_nr, int first_entry,
     for (j = 0; j < num_dots; j++)
       DrawText(mSX + dx2 + j * getFontWidth(font_nr3), sy, ".", font_nr3);
 
-    if (!strEqual(highscore[entry].Name, EMPTY_PLAYER_NAME))
-      DrawText(mSX + dx2, sy, highscore[entry].Name, font_nr2);
+    if (!strEqual(scores.entry[entry].name, EMPTY_PLAYER_NAME))
+      DrawText(mSX + dx2, sy, scores.entry[entry].name, font_nr2);
 
-    DrawText(mSX + dx3, sy, int2str(highscore[entry].Score, 5), font_nr4);
+    DrawText(mSX + dx3, sy, int2str(scores.entry[entry].score, 5), font_nr4);
   }
 
   redraw_mask |= REDRAW_FIELD;