added paths 'world:' entry point

This commit is contained in:
MihailRis 2024-01-26 15:59:04 +03:00
parent c6a2fc90a8
commit 5d6c2b9b8e
3 changed files with 12 additions and 0 deletions

View File

@ -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<ContentPack>* 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) {

View File

@ -12,6 +12,7 @@ namespace fs = std::filesystem;
class EnginePaths {
fs::path userfiles {"."};
fs::path resources {"res"};
fs::path worldFolder {""};
std::vector<ContentPack>* 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<ContentPack>* contentPacks);
void setWorldFolder(fs::path folder);
std::vector<fs::path> scanForWorlds();

View File

@ -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")+