diff --git a/src/assets/AssetsLoader.cpp b/src/assets/AssetsLoader.cpp index 8dc7c31c..0fde22fc 100644 --- a/src/assets/AssetsLoader.cpp +++ b/src/assets/AssetsLoader.cpp @@ -9,7 +9,7 @@ #include "content/Content.hpp" #include "content/ContentPack.hpp" #include "debug/Logger.hpp" -#include "io/engine_paths.hpp" +#include "engine/EnginePaths.hpp" #include "io/io.hpp" #include "graphics/core/Texture.hpp" #include "logic/scripting/scripting.hpp" diff --git a/src/assets/assetload_funcs.cpp b/src/assets/assetload_funcs.cpp index 4fda3b0d..a1c04dfc 100644 --- a/src/assets/assetload_funcs.cpp +++ b/src/assets/assetload_funcs.cpp @@ -15,7 +15,7 @@ #include "coders/vec3.hpp" #include "constants.hpp" #include "debug/Logger.hpp" -#include "io/engine_paths.hpp" +#include "engine/EnginePaths.hpp" #include "io/io.hpp" #include "frontend/UiDocument.hpp" #include "graphics/core/Atlas.hpp" diff --git a/src/coders/GLSLExtension.cpp b/src/coders/GLSLExtension.cpp index 5d53cb35..fa1335f3 100644 --- a/src/coders/GLSLExtension.cpp +++ b/src/coders/GLSLExtension.cpp @@ -6,7 +6,7 @@ #include #include "debug/Logger.hpp" -#include "io/engine_paths.hpp" +#include "engine/EnginePaths.hpp" #include "typedefs.hpp" #include "util/stringutil.hpp" #include "coders/json.hpp" diff --git a/src/content/ContentControl.cpp b/src/content/ContentControl.cpp index 543931d3..6140c3d2 100644 --- a/src/content/ContentControl.cpp +++ b/src/content/ContentControl.cpp @@ -1,7 +1,7 @@ #include "ContentControl.hpp" #include "io/io.hpp" -#include "io/engine_paths.hpp" +#include "engine/EnginePaths.hpp" #include "Content.hpp" #include "ContentPack.hpp" #include "ContentBuilder.hpp" diff --git a/src/content/ContentLoader.cpp b/src/content/ContentLoader.cpp index ea29e27c..a88146be 100644 --- a/src/content/ContentLoader.cpp +++ b/src/content/ContentLoader.cpp @@ -13,7 +13,7 @@ #include "objects/rigging.hpp" #include "util/listutil.hpp" #include "util/stringutil.hpp" -#include "io/engine_paths.hpp" +#include "engine/EnginePaths.hpp" static debug::Logger logger("content-loader"); diff --git a/src/content/ContentPack.cpp b/src/content/ContentPack.cpp index 021f083e..d2ffdc9e 100644 --- a/src/content/ContentPack.cpp +++ b/src/content/ContentPack.cpp @@ -8,7 +8,7 @@ #include "coders/json.hpp" #include "constants.hpp" #include "data/dv.hpp" -#include "io/engine_paths.hpp" +#include "engine/EnginePaths.hpp" #include "io/io.hpp" #include "coders/commons.hpp" #include "debug/Logger.hpp" diff --git a/src/content/loading/GeneratorLoader.cpp b/src/content/loading/GeneratorLoader.cpp index 2f8f40d5..668425e0 100644 --- a/src/content/loading/GeneratorLoader.cpp +++ b/src/content/loading/GeneratorLoader.cpp @@ -6,7 +6,7 @@ #include "../ContentPack.hpp" #include "io/io.hpp" -#include "io/engine_paths.hpp" +#include "engine/EnginePaths.hpp" #include "logic/scripting/scripting.hpp" #include "util/stringutil.hpp" #include "world/generator/GeneratorDef.hpp" diff --git a/src/core_defs.cpp b/src/core_defs.cpp index 79551cd4..a72d6eef 100644 --- a/src/core_defs.cpp +++ b/src/core_defs.cpp @@ -4,7 +4,7 @@ #include "content/Content.hpp" #include "content/ContentBuilder.hpp" #include "io/io.hpp" -#include "io/engine_paths.hpp" +#include "engine/EnginePaths.hpp" #include "window/input.hpp" #include "voxels/Block.hpp" #include "coders/toml.hpp" diff --git a/src/devtools/Editor.cpp b/src/devtools/Editor.cpp index 82475ee4..0bd0af7d 100644 --- a/src/devtools/Editor.cpp +++ b/src/devtools/Editor.cpp @@ -1,7 +1,7 @@ #include "Editor.hpp" #include "engine/Engine.hpp" -#include "io/engine_paths.hpp" +#include "engine/EnginePaths.hpp" #include "coders/syntax_parser.hpp" #include "SyntaxProcessor.hpp" diff --git a/src/engine/Engine.cpp b/src/engine/Engine.cpp index ca8edc89..b892908c 100644 --- a/src/engine/Engine.cpp +++ b/src/engine/Engine.cpp @@ -37,6 +37,7 @@ #include "Mainloop.hpp" #include "ServerMainloop.hpp" #include "WindowControl.hpp" +#include "EnginePaths.hpp" #include #include @@ -61,7 +62,7 @@ Engine& Engine::getInstance() { void Engine::onContentLoad() { editor->loadTools(); - langs::setup(langs::get_current(), paths.resPaths.collectRoots()); + langs::setup(langs::get_current(), paths->resPaths.collectRoots()); if (isHeadless()) { return; @@ -130,7 +131,7 @@ void Engine::initialize(CoreParameters coreParameters) { if (params.projectFolder.empty()) { params.projectFolder = params.resFolder; } - paths.prepare(params); + paths = std::make_unique(params); loadProject(); editor = std::make_unique(*this); @@ -161,7 +162,7 @@ void Engine::initialize(CoreParameters coreParameters) { langs::locale_by_envlocale(platform::detect_locale()) ); } - content = std::make_unique(*project, paths, *input, [this]() { + content = std::make_unique(*project, *paths, *input, [this]() { onContentLoad(); }); scripting::initialize(this); @@ -170,7 +171,7 @@ void Engine::initialize(CoreParameters coreParameters) { gui->setPageLoader(scripting::create_page_loader()); } keepAlive(settings.ui.language.observe([this](auto lang) { - langs::setup(lang, paths.resPaths.collectRoots()); + langs::setup(lang, paths->resPaths.collectRoots()); }, true)); project->loadProjectStartScript(); @@ -345,12 +346,12 @@ void Engine::setLevelConsumer(OnWorldOpen levelConsumer) { void Engine::loadAssets() { logger.info() << "loading assets"; - Shader::preprocessor->setPaths(&paths.resPaths); + Shader::preprocessor->setPaths(&paths->resPaths); auto content = this->content->get(); auto new_assets = std::make_unique(); - AssetsLoader loader(*this, *new_assets, paths.resPaths); + AssetsLoader loader(*this, *new_assets, paths->resPaths); AssetsLoader::addDefaults(loader, content); // no need @@ -426,11 +427,11 @@ Assets* Engine::getAssets() { } EnginePaths& Engine::getPaths() { - return paths; + return *paths; } ResPaths& Engine::getResPaths() { - return paths.resPaths; + return paths->resPaths; } std::shared_ptr Engine::getScreen() { diff --git a/src/engine/Engine.hpp b/src/engine/Engine.hpp index 5087ab50..58a79f95 100644 --- a/src/engine/Engine.hpp +++ b/src/engine/Engine.hpp @@ -4,7 +4,6 @@ #include "PostRunnables.hpp" #include "Time.hpp" #include "delegates.hpp" -#include "io/engine_paths.hpp" #include "settings.hpp" #include "typedefs.hpp" #include "util/ObjectsKeeper.hpp" @@ -15,8 +14,10 @@ class Assets; class ContentControl; class EngineController; +class EnginePaths; class Input; class Level; +class ResPaths; class Screen; class SettingsHandler; class Window; @@ -50,8 +51,7 @@ using OnWorldOpen = std::function, int64_t)>; class Engine : public util::ObjectsKeeper { CoreParameters params; EngineSettings settings; - EnginePaths paths; - + std::unique_ptr paths; std::unique_ptr project; std::unique_ptr settingsHandler; std::unique_ptr assets; diff --git a/src/io/engine_paths.cpp b/src/engine/EnginePaths.cpp similarity index 92% rename from src/io/engine_paths.cpp rename to src/engine/EnginePaths.cpp index 506230ad..8a786140 100644 --- a/src/io/engine_paths.cpp +++ b/src/engine/EnginePaths.cpp @@ -1,4 +1,4 @@ -#include "engine_paths.hpp" +#include "EnginePaths.hpp" #include "debug/Logger.hpp" #include "io/devices/StdfsDevice.hpp" @@ -39,10 +39,10 @@ static std::string generate_random_base64() { return util::base64_urlsafe_encode(bytes, n); } -void EnginePaths::prepare(CoreParameters& params) { - resourcesFolder = params.resFolder; - userFilesFolder = params.userFolder; - projectFolder = params.projectFolder; +EnginePaths::EnginePaths(CoreParameters& params) + : resourcesFolder(params.resFolder), + userFilesFolder(params.userFolder), + projectFolder(params.projectFolder) { if (!params.scriptFile.empty()) { scriptFolder = params.scriptFile.parent_path(); io::set_device("script", std::make_shared(*scriptFolder)); @@ -71,14 +71,6 @@ void EnginePaths::prepare(CoreParameters& params) { io::create_subdevice("config", "user", "config"); } -const fs::path& EnginePaths::getUserFilesFolder() const { - return userFilesFolder; -} - -const fs::path& EnginePaths::getResourcesFolder() const { - return resourcesFolder; -} - io::path EnginePaths::getNewScreenshotFile(const std::string& ext) const { auto folder = SCREENSHOTS_FOLDER; if (!io::is_directory(folder)) { @@ -107,10 +99,6 @@ io::path EnginePaths::getWorldsFolder() const { return WORLDS_FOLDER; } -io::path EnginePaths::getCurrentWorldFolder() { - return currentWorldFolder; -} - io::path EnginePaths::getWorldFolderByName(const std::string& name) { return getWorldsFolder() / name; } diff --git a/src/io/engine_paths.hpp b/src/engine/EnginePaths.hpp similarity index 81% rename from src/io/engine_paths.hpp rename to src/engine/EnginePaths.hpp index fd411db7..41d02236 100644 --- a/src/io/engine_paths.hpp +++ b/src/engine/EnginePaths.hpp @@ -1,8 +1,8 @@ #pragma once -#include "io.hpp" +#include "io/io.hpp" #include "data/dv.hpp" -#include "engine/CoreParameters.hpp" +#include "CoreParameters.hpp" #include #include @@ -46,16 +46,12 @@ class EnginePaths { public: ResPaths resPaths; - void prepare(CoreParameters& params); - - const std::filesystem::path& getUserFilesFolder() const; - const std::filesystem::path& getResourcesFolder() const; + EnginePaths(CoreParameters& params); io::path getWorldFolderByName(const std::string& name); io::path getWorldsFolder() const; void setCurrentWorldFolder(io::path folder); - io::path getCurrentWorldFolder(); io::path getNewScreenshotFile(const std::string& ext) const; std::string mount(const io::path& file); @@ -73,9 +69,9 @@ public: static inline io::path CONTROLS_FILE = "user:controls.toml"; static inline io::path SETTINGS_FILE = "user:settings.toml"; private: - std::filesystem::path userFilesFolder {"."}; - std::filesystem::path resourcesFolder {"res"}; - std::filesystem::path projectFolder = resourcesFolder; + std::filesystem::path resourcesFolder; + std::filesystem::path userFilesFolder; + std::filesystem::path projectFolder; io::path currentWorldFolder; std::optional scriptFolder; std::vector entryPoints; diff --git a/src/engine/ServerMainloop.cpp b/src/engine/ServerMainloop.cpp index 7fb8ffed..41887aee 100644 --- a/src/engine/ServerMainloop.cpp +++ b/src/engine/ServerMainloop.cpp @@ -1,6 +1,7 @@ #include "ServerMainloop.hpp" #include "Engine.hpp" +#include "EnginePaths.hpp" #include "logic/scripting/scripting.hpp" #include "logic/LevelController.hpp" #include "interfaces/Process.hpp" diff --git a/src/engine/WindowControl.cpp b/src/engine/WindowControl.cpp index 8557c5be..0dabd009 100644 --- a/src/engine/WindowControl.cpp +++ b/src/engine/WindowControl.cpp @@ -1,6 +1,7 @@ #include "WindowControl.hpp" #include "Engine.hpp" +#include "engine/EnginePaths.hpp" #include "devtools/Project.hpp" #include "coders/imageio.hpp" #include "window/Window.hpp" diff --git a/src/frontend/menu.cpp b/src/frontend/menu.cpp index e46888df..372264a5 100644 --- a/src/frontend/menu.cpp +++ b/src/frontend/menu.cpp @@ -11,7 +11,7 @@ #include "graphics/ui/elements/Menu.hpp" #include "graphics/ui/gui_util.hpp" #include "interfaces/Task.hpp" -#include "io/engine_paths.hpp" +#include "engine/EnginePaths.hpp" #include "locale.hpp" #include "logic/scripting/scripting.hpp" #include "screens/MenuScreen.hpp" diff --git a/src/frontend/screens/LevelScreen.cpp b/src/frontend/screens/LevelScreen.cpp index d398b3cc..f3694d85 100644 --- a/src/frontend/screens/LevelScreen.cpp +++ b/src/frontend/screens/LevelScreen.cpp @@ -6,6 +6,7 @@ #include "core_defs.hpp" #include "debug/Logger.hpp" #include "engine/Engine.hpp" +#include "engine/EnginePaths.hpp" #include "assets/Assets.hpp" #include "frontend/ContentGfxCache.hpp" #include "frontend/LevelFrontend.hpp" diff --git a/src/graphics/render/Decorator.cpp b/src/graphics/render/Decorator.cpp index 94b8ee13..8bbb2c9d 100644 --- a/src/graphics/render/Decorator.cpp +++ b/src/graphics/render/Decorator.cpp @@ -19,6 +19,7 @@ #include "logic/LevelController.hpp" #include "util/stringutil.hpp" #include "engine/Engine.hpp" +#include "engine/EnginePaths.hpp" #include "io/io.hpp" #include "audio/audio.hpp" #include "maths/util.hpp" diff --git a/src/logic/EngineController.cpp b/src/logic/EngineController.cpp index 0d0a5a60..d6820fa1 100644 --- a/src/logic/EngineController.cpp +++ b/src/logic/EngineController.cpp @@ -4,28 +4,29 @@ #include #include -#include "engine/Engine.hpp" #include "coders/commons.hpp" -#include "debug/Logger.hpp" #include "coders/json.hpp" -#include "content/ContentReport.hpp" #include "content/ContentControl.hpp" +#include "content/ContentReport.hpp" #include "content/PacksManager.hpp" -#include "world/files/WorldConverter.hpp" -#include "world/files/WorldFiles.hpp" +#include "debug/Logger.hpp" +#include "engine/Engine.hpp" +#include "engine/EnginePaths.hpp" #include "frontend/locale.hpp" #include "frontend/menu.hpp" #include "frontend/screens/LevelScreen.hpp" #include "frontend/screens/MenuScreen.hpp" -#include "graphics/ui/GUI.hpp" #include "graphics/ui/elements/Menu.hpp" #include "graphics/ui/gui_util.hpp" -#include "objects/Players.hpp" +#include "graphics/ui/GUI.hpp" #include "interfaces/Task.hpp" +#include "LevelController.hpp" +#include "objects/Players.hpp" #include "util/stringutil.hpp" +#include "world/files/WorldConverter.hpp" +#include "world/files/WorldFiles.hpp" #include "world/Level.hpp" #include "world/World.hpp" -#include "LevelController.hpp" static debug::Logger logger("engine-control"); diff --git a/src/logic/scripting/lua/libs/libaudio.cpp b/src/logic/scripting/lua/libs/libaudio.cpp index db868c57..606c4351 100644 --- a/src/logic/scripting/lua/libs/libaudio.cpp +++ b/src/logic/scripting/lua/libs/libaudio.cpp @@ -1,6 +1,7 @@ #include "audio/audio.hpp" #include "assets/Assets.hpp" #include "engine/Engine.hpp" +#include "engine/EnginePaths.hpp" #include "api_lua.hpp" inline const char* DEFAULT_CHANNEL = "regular"; diff --git a/src/logic/scripting/lua/libs/libcore.cpp b/src/logic/scripting/lua/libs/libcore.cpp index 9f14e2a0..34c33d6d 100644 --- a/src/logic/scripting/lua/libs/libcore.cpp +++ b/src/logic/scripting/lua/libs/libcore.cpp @@ -8,7 +8,7 @@ #include "content/Content.hpp" #include "content/ContentControl.hpp" #include "engine/Engine.hpp" -#include "io/engine_paths.hpp" +#include "engine/EnginePaths.hpp" #include "io/io.hpp" #include "io/settings_io.hpp" #include "frontend/menu.hpp" diff --git a/src/logic/scripting/lua/libs/libentity.cpp b/src/logic/scripting/lua/libs/libentity.cpp index 26d3ea61..3b9730c2 100644 --- a/src/logic/scripting/lua/libs/libentity.cpp +++ b/src/logic/scripting/lua/libs/libentity.cpp @@ -2,6 +2,7 @@ #include "content/Content.hpp" #include "engine/Engine.hpp" +#include "engine/EnginePaths.hpp" #include "objects/Entities.hpp" #include "objects/EntityDef.hpp" #include "objects/Entity.hpp" diff --git a/src/logic/scripting/lua/libs/libfile.cpp b/src/logic/scripting/lua/libs/libfile.cpp index 28ed5a6e..c3ee4bdb 100644 --- a/src/logic/scripting/lua/libs/libfile.cpp +++ b/src/logic/scripting/lua/libs/libfile.cpp @@ -3,7 +3,7 @@ #include "coders/gzip.hpp" #include "engine/Engine.hpp" -#include "io/engine_paths.hpp" +#include "engine/EnginePaths.hpp" #include "io/io.hpp" #include "io/devices/ZipFileDevice.hpp" #include "util/stringutil.hpp" diff --git a/src/logic/scripting/lua/libs/libgeneration.cpp b/src/logic/scripting/lua/libs/libgeneration.cpp index 5c060382..49407022 100644 --- a/src/logic/scripting/lua/libs/libgeneration.cpp +++ b/src/logic/scripting/lua/libs/libgeneration.cpp @@ -9,6 +9,7 @@ #include "content/Content.hpp" #include "content/ContentControl.hpp" #include "engine/Engine.hpp" +#include "engine/EnginePaths.hpp" #include "../lua_custom_types.hpp" using namespace scripting; diff --git a/src/logic/scripting/lua/libs/libpack.cpp b/src/logic/scripting/lua/libs/libpack.cpp index f23e96b3..b7162b4d 100644 --- a/src/logic/scripting/lua/libs/libpack.cpp +++ b/src/logic/scripting/lua/libs/libpack.cpp @@ -10,7 +10,7 @@ #include "graphics/ui/elements/Menu.hpp" #include "frontend/locale.hpp" #include "world/files/WorldFiles.hpp" -#include "io/engine_paths.hpp" +#include "engine/EnginePaths.hpp" #include "world/Level.hpp" #include "world/World.hpp" #include "api_lua.hpp" diff --git a/src/logic/scripting/lua/libs/libworld.cpp b/src/logic/scripting/lua/libs/libworld.cpp index 41778204..eb966f50 100644 --- a/src/logic/scripting/lua/libs/libworld.cpp +++ b/src/logic/scripting/lua/libs/libworld.cpp @@ -10,7 +10,7 @@ #include "content/ContentControl.hpp" #include "engine/Engine.hpp" #include "world/files/WorldFiles.hpp" -#include "io/engine_paths.hpp" +#include "engine/EnginePaths.hpp" #include "io/io.hpp" #include "lighting/Lighting.hpp" #include "voxels/Chunk.hpp" diff --git a/src/logic/scripting/lua/lua_engine.cpp b/src/logic/scripting/lua/lua_engine.cpp index 08d2eb85..324b3d3b 100644 --- a/src/logic/scripting/lua/lua_engine.cpp +++ b/src/logic/scripting/lua/lua_engine.cpp @@ -4,7 +4,7 @@ #include #include "io/io.hpp" -#include "io/engine_paths.hpp" +#include "engine/EnginePaths.hpp" #include "debug/Logger.hpp" #include "util/stringutil.hpp" #include "libs/api_lua.hpp" diff --git a/src/logic/scripting/lua/usertypes/lua_type_heightmap.cpp b/src/logic/scripting/lua/usertypes/lua_type_heightmap.cpp index 3e015b72..2800035a 100644 --- a/src/logic/scripting/lua/usertypes/lua_type_heightmap.cpp +++ b/src/logic/scripting/lua/usertypes/lua_type_heightmap.cpp @@ -13,6 +13,7 @@ #include "graphics/core/ImageData.hpp" #include "maths/Heightmap.hpp" #include "engine/Engine.hpp" +#include "engine/EnginePaths.hpp" #include "../lua_util.hpp" using namespace lua; diff --git a/src/logic/scripting/scripting.cpp b/src/logic/scripting/scripting.cpp index 586feeb8..b9efda4b 100644 --- a/src/logic/scripting/scripting.cpp +++ b/src/logic/scripting/scripting.cpp @@ -9,7 +9,7 @@ #include "content/ContentControl.hpp" #include "debug/Logger.hpp" #include "engine/Engine.hpp" -#include "io/engine_paths.hpp" +#include "engine/EnginePaths.hpp" #include "io/io.hpp" #include "frontend/UiDocument.hpp" #include "items/Inventory.hpp" diff --git a/src/util/command_line.cpp b/src/util/command_line.cpp index 3691b77b..7cb3614e 100644 --- a/src/util/command_line.cpp +++ b/src/util/command_line.cpp @@ -6,7 +6,7 @@ #include #include -#include "io/engine_paths.hpp" +#include "engine/EnginePaths.hpp" #include "util/ArgsReader.hpp" #include "engine/Engine.hpp"