diff options
| author | Fabien Romano <fabienromano@gmail.com> | 2026-01-09 19:13:37 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-01-09 11:13:37 -0700 |
| commit | aaae77f3bcb0a93b6fd34bbb82784ba046726083 (patch) | |
| tree | 3f7ec4acfc4168606d0d6ab4a755323b08fadc2e /src | |
| parent | e71c422afbadb49aef7fbcaae02b74eb214f72c1 (diff) | |
Fix NON_PORTABLE build. Ship::Context needs to be initialized first. (#618)
* Fix NON_PORTABLE build. Ship::Context needs to be initialized before resolving files. Move offending calls inside functions where they are used. Those will always be called after GameEngine() which runs Ship::Context::CreateUninitializedInstance() early.
* Replace hardcoded string mk64.o2r and spaghetti.o2r with variables game_asset_file and engine_asset_file.
Diffstat (limited to 'src')
| -rw-r--r-- | src/engine/mods/ModManager.cpp | 7 | ||||
| -rw-r--r-- | src/port/Engine.cpp | 2 | ||||
| -rw-r--r-- | src/port/Engine.h | 13 |
3 files changed, 14 insertions, 8 deletions
diff --git a/src/engine/mods/ModManager.cpp b/src/engine/mods/ModManager.cpp index a94d8f558..137fb9743 100644 --- a/src/engine/mods/ModManager.cpp +++ b/src/engine/mods/ModManager.cpp @@ -19,8 +19,6 @@ void DetectOutdatedDependencies(); void SortModsByDependencies(); std::vector<std::tuple<ModMetadata, std::shared_ptr<Ship::Archive>>> Mods = {}; -const std::string main_path = Ship::Context::GetPathRelativeToAppDirectory("mk64.o2r"); -const std::string assets_path = Ship::Context::LocateFileAcrossAppDirs("spaghetti.o2r"); void InitModsSystem() { CheckMK64O2RExists(); @@ -65,6 +63,9 @@ void GenerateAssetsMods() { } std::vector<std::string> ListMods() { + const std::string main_path = Ship::Context::GetPathRelativeToAppDirectory(game_asset_file); + const std::string assets_path = Ship::Context::LocateFileAcrossAppDirs(engine_asset_file); + std::vector<std::string> archiveFiles; if (std::filesystem::exists(main_path)) { archiveFiles.push_back(main_path); @@ -202,6 +203,8 @@ void AddCoreDependencies() { } void CheckMK64O2RExists() { + const std::string main_path = Ship::Context::GetPathRelativeToAppDirectory(game_asset_file); + if (!std::filesystem::exists(main_path)) { GenerateAssetsMods(); } diff --git a/src/port/Engine.cpp b/src/port/Engine.cpp index 5a4b75c39..2cd2c99b9 100644 --- a/src/port/Engine.cpp +++ b/src/port/Engine.cpp @@ -166,7 +166,7 @@ GameEngine::GameEngine() { { BTN_DDOWN, "DDown" }, }); auto controlDeck = std::make_shared<LUS::ControlDeck>(std::vector<CONTROLLERBUTTONS_T>(), defaultMappings, buttonNames); - const std::string assets_path = Ship::Context::LocateFileAcrossAppDirs("spaghetti.o2r"); + const std::string assets_path = Ship::Context::LocateFileAcrossAppDirs(engine_asset_file); this->context->InitResourceManager({assets_path}, {}, 3); // without this line InitWindow fails in Gui::Init() this->context->InitConsole(); // without this line the GuiWindow constructor fails in ConsoleWindow::InitElement() diff --git a/src/port/Engine.h b/src/port/Engine.h index d837bcaa3..d5368a92f 100644 --- a/src/port/Engine.h +++ b/src/port/Engine.h @@ -2,14 +2,17 @@ #include "port/audio/HMAS.h" +static const char game_asset_file[] = "mk64.o2r"; +static const char engine_asset_file[] = "spaghetti.o2r"; + #define LOAD_ASSET(path) \ (path == NULL ? NULL \ : (GameEngine_OTRSigCheck((const char*) path) ? ResourceGetDataByName((const char*) path) : path)) - #define LOAD_ASSET_RAW(path) ResourceGetDataByName((const char*) path) - - #ifdef __cplusplus - #include <vector> - #include <SDL2/SDL.h> +#define LOAD_ASSET_RAW(path) ResourceGetDataByName((const char*) path) + +#ifdef __cplusplus +#include <vector> +#include <SDL2/SDL.h> #include <fast/Fast3dWindow.h> #include <fast/interpreter.h> #include "ship/Context.h" |
