summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAltoXorg <56553686+Alto1772@users.noreply.github.com>2025-07-31 09:33:02 +0800
committerLywx <kiritodev01@gmail.com>2025-08-09 23:27:32 -0600
commitad19b9d6ccbf474f14edd2dcfdac62244123c2de (patch)
tree7a71321e547f7faacb28b2877450626e34bd3a02 /src
parenta2fdf9849887de5f85ad51007eb1facb3f445cd5 (diff)
Fix non-portable build
Diffstat (limited to 'src')
-rw-r--r--src/port/Engine.cpp24
-rw-r--r--src/port/extractor/GameExtractor.cpp7
2 files changed, 15 insertions, 16 deletions
diff --git a/src/port/Engine.cpp b/src/port/Engine.cpp
index d2bee9ec..bc0ccb1f 100644
--- a/src/port/Engine.cpp
+++ b/src/port/Engine.cpp
@@ -63,6 +63,9 @@ std::vector<uint8_t*> MemoryPool;
GameEngine* GameEngine::Instance;
GameEngine::GameEngine() {
+ // Initialize context properties early to recognize paths properly for non-portable builds
+ this->context = Ship::Context::CreateUninitializedInstance("Starship", "ship", "starship.cfg.json");
+
#ifdef __SWITCH__
Ship::Switch::Init(Ship::PreInitPhase);
Ship::Switch::Init(Ship::PostInitPhase);
@@ -70,21 +73,12 @@ GameEngine::GameEngine() {
std::vector<std::string> archiveFiles;
const std::string main_path = Ship::Context::GetPathRelativeToAppDirectory("sf64.o2r");
-#ifdef __linux__
- const std::string assets_path = Ship::Context::GetPathRelativeToAppBundle("starship.o2r");
-#else
- const std::string assets_path = Ship::Context::GetPathRelativeToAppDirectory("starship.o2r");
-#endif
-
+ const std::string assets_path = Ship::Context::LocateFileAcrossAppDirs("starship.o2r");
#ifdef _WIN32
AllocConsole();
#endif
- if (!fs::exists("mods")) {
- fs::create_directories("mods");
- }
-
if (std::filesystem::exists(main_path)) {
archiveFiles.push_back(main_path);
} else {
@@ -111,7 +105,11 @@ GameEngine::GameEngine() {
}
if (const std::string patches_path = Ship::Context::GetPathRelativeToAppDirectory("mods");
- !patches_path.empty() && std::filesystem::exists(patches_path)) {
+ !patches_path.empty()) {
+ if (!std::filesystem::exists(patches_path)) {
+ std::filesystem::create_directories(patches_path);
+ }
+
if (std::filesystem::is_directory(patches_path)) {
for (const auto& p : std::filesystem::recursive_directory_iterator(patches_path)) {
const auto ext = p.path().extension().string();
@@ -127,8 +125,6 @@ GameEngine::GameEngine() {
}
}
- this->context = Ship::Context::CreateUninitializedInstance("Starship", "ship", "starship.cfg.json");
-
this->context->InitConfiguration(); // without this line InitConsoleVariables fails at Config::Reload()
this->context->InitConsoleVariables(); // without this line the controldeck constructor failes in
// ShipDeviceIndexMappingManager::UpdateControllerNamesFromConfig()
@@ -849,4 +845,4 @@ extern "C" void GameEngine_Free(void* ptr) {
break;
}
}
-} \ No newline at end of file
+}
diff --git a/src/port/extractor/GameExtractor.cpp b/src/port/extractor/GameExtractor.cpp
index f8392bc8..d75ab3c3 100644
--- a/src/port/extractor/GameExtractor.cpp
+++ b/src/port/extractor/GameExtractor.cpp
@@ -54,7 +54,10 @@ std::optional<std::string> GameExtractor::ValidateChecksum() const {
}
bool GameExtractor::GenerateOTR() const {
- Companion::Instance = new Companion(this->mGameData, ArchiveType::O2R, false);
+ const std::string assets_path = Ship::Context::GetAppBundlePath();
+ const std::string game_path = Ship::Context::GetAppDirectoryPath();
+
+ Companion::Instance = new Companion(this->mGameData, ArchiveType::O2R, false, assets_path, game_path);
try {
Companion::Instance->Init(ExportType::Binary);
@@ -63,4 +66,4 @@ bool GameExtractor::GenerateOTR() const {
}
return true;
-} \ No newline at end of file
+}