From e19ed3d23950cc5c13c7ad38b3feed1b84ec1659 Mon Sep 17 00:00:00 2001 From: MihailRis Date: Wed, 14 Aug 2024 00:24:22 +0300 Subject: [PATCH] add pseudopack 'core' --- src/content/ContentPack.cpp | 7 +++++++ src/content/ContentPack.hpp | 2 ++ src/engine.cpp | 15 +++++++++++++-- src/files/engine_paths.cpp | 19 ------------------- src/logic/scripting/scripting.cpp | 1 - 5 files changed, 22 insertions(+), 22 deletions(-) diff --git a/src/content/ContentPack.cpp b/src/content/ContentPack.cpp index 90e4b73a..9bcd8aef 100644 --- a/src/content/ContentPack.cpp +++ b/src/content/ContentPack.cpp @@ -4,6 +4,7 @@ #include #include +#include "constants.hpp" #include "coders/json.hpp" #include "data/dynamic.hpp" #include "files/engine_paths.hpp" @@ -11,6 +12,12 @@ namespace fs = std::filesystem; +ContentPack ContentPack::createCore(const EnginePaths* paths) { + return ContentPack { + "core", "Core", ENGINE_VERSION_STRING, "", "", paths->getResourcesFolder(), {} + }; +} + const std::vector ContentPack::RESERVED_NAMES = { "res", "abs", "local", "core", "user", "world", "none", "null"}; diff --git a/src/content/ContentPack.hpp b/src/content/ContentPack.hpp index 70b34472..7815d009 100644 --- a/src/content/ContentPack.hpp +++ b/src/content/ContentPack.hpp @@ -67,6 +67,8 @@ struct ContentPack { const fs::path& worldDir, const std::string& name ); + + static ContentPack createCore(const EnginePaths*); }; struct ContentPackStats { diff --git a/src/engine.cpp b/src/engine.cpp index 17bb2b8b..787a257b 100644 --- a/src/engine.cpp +++ b/src/engine.cpp @@ -313,12 +313,17 @@ void Engine::loadContent() { contentPacks = manager.getAll(names); std::vector resRoots; + { + auto pack = ContentPack::createCore(paths); + resRoots.push_back({"core", pack.folder}); + ContentLoader(&pack, contentBuilder).load(); + load_configs(pack.folder); + } for (auto& pack : contentPacks) { resRoots.push_back({pack.id, pack.folder}); ContentLoader(&pack, contentBuilder).load(); load_configs(pack.folder); } - load_configs(paths->getResourcesFolder()); content = contentBuilder.build(); resPaths = std::make_unique(resdir, resRoots); @@ -330,7 +335,13 @@ void Engine::loadContent() { void Engine::resetContent() { auto resdir = paths->getResourcesFolder(); - resPaths = std::make_unique(resdir, std::vector()); + std::vector resRoots; + { + auto pack = ContentPack::createCore(paths); + resRoots.push_back({"core", pack.folder}); + load_configs(pack.folder); + } + resPaths = std::make_unique(resdir, resRoots); contentPacks.clear(); content.reset(); diff --git a/src/files/engine_paths.cpp b/src/files/engine_paths.cpp index 759d277e..1be3ca20 100644 --- a/src/files/engine_paths.cpp +++ b/src/files/engine_paths.cpp @@ -218,10 +218,6 @@ std::string ResPaths::findRaw(const std::string& filename) const { return root.name + ":" + filename; } } - auto resDir = mainRoot; - if (fs::exists(resDir / std::filesystem::path(filename))) { - return "core:" + filename; - } throw std::runtime_error("could not to find file " + util::quote(filename)); } @@ -236,14 +232,6 @@ std::vector ResPaths::listdirRaw(const std::string& folderName) con entries.emplace_back(root.name + ":" + folderName + "/" + name); } } - { - auto folder = mainRoot / fs::u8path(folderName); - if (!fs::is_directory(folder)) return entries; - for (const auto& entry : fs::directory_iterator(folder)) { - auto name = entry.path().filename().u8string(); - entries.emplace_back("core:" + folderName + "/" + name); - } - } return entries; } @@ -259,13 +247,6 @@ std::vector ResPaths::listdir( entries.push_back(entry.path()); } } - { - auto folder = mainRoot / fs::u8path(folderName); - if (!fs::is_directory(folder)) return entries; - for (const auto& entry : fs::directory_iterator(folder)) { - entries.push_back(entry.path()); - } - } return entries; } diff --git a/src/logic/scripting/scripting.cpp b/src/logic/scripting/scripting.cpp index 05beaa32..aeedc1d9 100644 --- a/src/logic/scripting/scripting.cpp +++ b/src/logic/scripting/scripting.cpp @@ -39,7 +39,6 @@ LevelController* scripting::controller = nullptr; static void load_script(const fs::path& name, bool throwable) { auto paths = scripting::engine->getPaths(); fs::path file = paths->getResourcesFolder() / fs::path("scripts") / name; - std::string src = files::read_string(file); auto L = lua::get_main_thread(); lua::loadbuffer(L, 0, src, file.u8string());