From a784fe46fecd05a10ce54c3d4aae544dcb114a53 Mon Sep 17 00:00:00 2001 From: Ethan O'Brien Date: Sun, 10 Aug 2025 14:30:26 -0500 Subject: [PATCH] Resolve issues with save before load/quit prompt --- emscripten/deps.js | 6 ++---- src/openrct2-ui/interface/FileBrowser.cpp | 4 ++-- src/openrct2/Game.cpp | 9 ++++++--- 3 files changed, 10 insertions(+), 9 deletions(-) diff --git a/emscripten/deps.js b/emscripten/deps.js index 38dc592c67..cc5a6691b5 100644 --- a/emscripten/deps.js +++ b/emscripten/deps.js @@ -21,14 +21,13 @@ var EmscriptenDeps = { return data; } }, - EmscriptenSaveGame: async (isTrackDesign, isAutosave, isSaveAs, type) => { + EmscriptenSaveGame: async (isTrackDesign, isAutosave, type) => { isTrackDesign = isTrackDesign === 1; isAutosave = isAutosave === 1; - isSaveAs = isSaveAs === 1; const data = SAVE.readFileData(isTrackDesign); try { if (window.showSaveFilePicker) { - if (SAVE.filehandle === null || isSaveAs) { + if (SAVE.filehandle === null) { SAVE.filehandle = null; const file = await showSaveFilePicker({ id: "OpenRCT2-" + type, @@ -75,7 +74,6 @@ var EmscriptenDeps = { EmscriptenLoadGame: async (type) => { try { if (window.showOpenFilePicker) { - SAVE.filehandle = null; const [file] = await showOpenFilePicker({ id: "OpenRCT2-" + type, types: [ diff --git a/src/openrct2-ui/interface/FileBrowser.cpp b/src/openrct2-ui/interface/FileBrowser.cpp index 693687e803..a0f2781459 100644 --- a/src/openrct2-ui/interface/FileBrowser.cpp +++ b/src/openrct2-ui/interface/FileBrowser.cpp @@ -31,7 +31,7 @@ #ifdef __EMSCRIPTEN__ extern "C" { extern void EmscriptenLoadGame(LoadSaveType type); -extern void EmscriptenSaveGame(bool isTrackDesign, bool isAutosave, bool saveAs, LoadSaveType type); +extern void EmscriptenSaveGame(bool isTrackDesign, bool isAutosave, LoadSaveType type); } #endif @@ -48,7 +48,7 @@ namespace OpenRCT2::Ui::FileBrowser if (action == LoadSaveAction::save) { Select("/save.park", action, type, trackDesign); - EmscriptenSaveGame(type == LoadSaveType::track, false, true, type); + EmscriptenSaveGame(type == LoadSaveType::track, false, type); } else { diff --git a/src/openrct2/Game.cpp b/src/openrct2/Game.cpp index d9ca7881bd..17cdac10ee 100644 --- a/src/openrct2/Game.cpp +++ b/src/openrct2/Game.cpp @@ -78,7 +78,7 @@ #ifdef __EMSCRIPTEN__ extern "C" { -extern void EmscriptenSaveGame(bool isTrackDesign, bool isAutosave, bool saveAs, LoadSaveType type); +extern void EmscriptenSaveGame(bool isTrackDesign, bool isAutosave, LoadSaveType type); extern void EmscriptenResetAutosave(); } #endif @@ -468,7 +468,7 @@ void SaveGame() #else const auto savePath = Path::WithExtension("save", ".park"); SaveGameWithName(savePath); - EmscriptenSaveGame(false, false, false, LoadSaveType::park); + EmscriptenSaveGame(false, false, LoadSaveType::park); #endif } else @@ -521,6 +521,9 @@ std::unique_ptr CreateSaveGameAsIntent() void SaveGameAs() { +#ifdef __EMSCRIPTEN__ + EmscriptenResetAutosave(); +#endif auto intent = CreateSaveGameAsIntent(); ContextOpenIntent(intent.get()); } @@ -632,7 +635,7 @@ void GameAutosave() { const auto savePath = Path::WithExtension("save", ".park"); SaveGameWithName(savePath); - EmscriptenSaveGame(false, true, false, LoadSaveType::park); + EmscriptenSaveGame(false, true, LoadSaveType::park); } #endif // __EMSCRIPTEN__