diff --git a/ISLE/emscripten/filesystem.cpp b/ISLE/emscripten/filesystem.cpp index c2bfbc37..e5644608 100644 --- a/ISLE/emscripten/filesystem.cpp +++ b/ISLE/emscripten/filesystem.cpp @@ -1,6 +1,7 @@ #include "filesystem.h" #include "events.h" +#include "extensions/siloader.h" #include "extensions/textureloader.h" #include "legogamestate.h" #include "misc.h" @@ -107,6 +108,14 @@ void Emscripten_SetupFilesystem() Emscripten_SendExtensionProgress("HD Textures", (++i * 100) / sizeOfArray(g_textures)); } } + + if (Extensions::SiLoader::enabled) { + wasmfs_create_directory("/LEGO/extra", 0644, fetchfs); + + for (const auto& file : Extensions::SiLoader::files) { + registerFile(file.c_str()); + } + } #endif if (GameState()->GetSavePath() && *GameState()->GetSavePath() && !Emscripten_OPFSDisabled()) { diff --git a/ISLE/isleapp.cpp b/ISLE/isleapp.cpp index 9ede5d74..da9cbf91 100644 --- a/ISLE/isleapp.cpp +++ b/ISLE/isleapp.cpp @@ -963,16 +963,16 @@ MxResult IsleApp::SetupWindow() SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Failed to open SDL_IOStream for icon: %s", SDL_GetError()); } - if (!SetupLegoOmni()) { - return FAILURE; - } - GameState()->SetSavePath(m_savePath); if (VerifyFilesystem() != SUCCESS) { return FAILURE; } + if (!SetupLegoOmni()) { + return FAILURE; + } + DetectGameVersion(); GameState()->SerializePlayersInfo(LegoStorage::c_read); GameState()->SerializeScoreHistory(LegoStorage::c_read); diff --git a/extensions/include/extensions/siloader.h b/extensions/include/extensions/siloader.h index 92cc3bfe..3fc7ab0a 100644 --- a/extensions/include/extensions/siloader.h +++ b/extensions/include/extensions/siloader.h @@ -19,10 +19,10 @@ class SiLoader { static bool RemoveWith(StreamObject p_object, LegoWorld* world); static std::map options; + static std::vector files; static bool enabled; private: - static std::vector files; static std::vector> startWith; static std::vector> removeWith; diff --git a/extensions/src/siloader.cpp b/extensions/src/siloader.cpp index 3532fc76..bfbddd88 100644 --- a/extensions/src/siloader.cpp +++ b/extensions/src/siloader.cpp @@ -10,24 +10,29 @@ using namespace Extensions; std::map SiLoader::options; +std::vector SiLoader::files; std::vector> SiLoader::startWith; std::vector> SiLoader::removeWith; bool SiLoader::enabled = false; void SiLoader::Initialize() -{ -} - -bool SiLoader::Load() { char* files = SDL_strdup(options["si loader:files"].c_str()); char* saveptr; for (char* file = SDL_strtok_r(files, ",\n", &saveptr); file; file = SDL_strtok_r(NULL, ",\n", &saveptr)) { - LoadFile(file); + SiLoader::files.emplace_back(file); } SDL_free(files); +} + +bool SiLoader::Load() +{ + for (const auto& file : files) { + LoadFile(file.c_str()); + } + return true; }