diff options
| author | AltoXorg <56553686+Alto1772@users.noreply.github.com> | 2025-07-31 09:33:02 +0800 |
|---|---|---|
| committer | Lywx <kiritodev01@gmail.com> | 2025-08-09 23:27:32 -0600 |
| commit | ad19b9d6ccbf474f14edd2dcfdac62244123c2de (patch) | |
| tree | 7a71321e547f7faacb28b2877450626e34bd3a02 /src | |
| parent | a2fdf9849887de5f85ad51007eb1facb3f445cd5 (diff) | |
Fix non-portable build
Diffstat (limited to 'src')
| -rw-r--r-- | src/port/Engine.cpp | 24 | ||||
| -rw-r--r-- | src/port/extractor/GameExtractor.cpp | 7 |
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 +} |
