From 5d6c2b9b8ec264eb7cdbf7bf5f79df5ad5244c12 Mon Sep 17 00:00:00 2001 From: MihailRis Date: Fri, 26 Jan 2024 15:59:04 +0300 Subject: [PATCH] added paths 'world:' entry point --- src/files/engine_paths.cpp | 8 ++++++++ src/files/engine_paths.h | 2 ++ src/frontend/menu.cpp | 2 ++ 3 files changed, 12 insertions(+) diff --git a/src/files/engine_paths.cpp b/src/files/engine_paths.cpp index 8096fedc..482ff029 100644 --- a/src/files/engine_paths.cpp +++ b/src/files/engine_paths.cpp @@ -76,6 +76,10 @@ void EnginePaths::setResources(fs::path folder) { this->resources = folder; } +void EnginePaths::setWorldFolder(fs::path folder) { + this->worldFolder = folder; +} + void EnginePaths::setContentPacks(std::vector* contentPacks) { this->contentPacks = contentPacks; } @@ -96,6 +100,10 @@ fs::path EnginePaths::resolve(std::string path) { return userfiles/fs::path(filename); } + if (prefix == "world") { + return worldFolder/fs::path(filename); + } + if (contentPacks) { for (auto& pack : *contentPacks) { if (pack.id == prefix) { diff --git a/src/files/engine_paths.h b/src/files/engine_paths.h index d8506f70..29b3b2e7 100644 --- a/src/files/engine_paths.h +++ b/src/files/engine_paths.h @@ -12,6 +12,7 @@ namespace fs = std::filesystem; class EnginePaths { fs::path userfiles {"."}; fs::path resources {"res"}; + fs::path worldFolder {""}; std::vector* contentPacks = nullptr; public: fs::path getUserfiles() const; @@ -24,6 +25,7 @@ public: void setUserfiles(fs::path folder); void setResources(fs::path folder); void setContentPacks(std::vector* contentPacks); + void setWorldFolder(fs::path folder); std::vector scanForWorlds(); diff --git a/src/frontend/menu.cpp b/src/frontend/menu.cpp index e6bdf360..a7701e9a 100644 --- a/src/frontend/menu.cpp +++ b/src/frontend/menu.cpp @@ -165,6 +165,7 @@ void open_world(std::string name, Engine* engine) { L": "+util::str2wstr_utf8(error.what())); return; } + paths->setWorldFolder(folder); auto& packs = engine->getContentPacks(); auto* content = engine->getContent(); @@ -303,6 +304,7 @@ void create_new_world_panel(Engine* engine, PagesControl* menu) { try { engine->loadAllPacks(); engine->loadContent(); + paths->setWorldFolder(folder); } catch (const contentpack_error& error) { guiutil::alert(engine->getGUI(), langs::get(L"Content Error", L"menu")+