summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorFabien Romano <fabienromano@gmail.com>2026-01-09 19:13:37 +0100
committerGitHub <noreply@github.com>2026-01-09 11:13:37 -0700
commitaaae77f3bcb0a93b6fd34bbb82784ba046726083 (patch)
tree3f7ec4acfc4168606d0d6ab4a755323b08fadc2e /src
parente71c422afbadb49aef7fbcaae02b74eb214f72c1 (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.cpp7
-rw-r--r--src/port/Engine.cpp2
-rw-r--r--src/port/Engine.h13
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"