diff --git a/src/content/ContentControl.cpp b/src/content/ContentControl.cpp index f12ac6cd..2256e260 100644 --- a/src/content/ContentControl.cpp +++ b/src/content/ContentControl.cpp @@ -48,6 +48,8 @@ std::vector& ContentControl::getBasePacks() { } void ContentControl::resetContent() { + paths.setCurrentWorldFolder(""); + scripting::cleanup(); std::vector resRoots; { diff --git a/src/content/ContentControl.hpp b/src/content/ContentControl.hpp index e637f170..87cae83e 100644 --- a/src/content/ContentControl.hpp +++ b/src/content/ContentControl.hpp @@ -29,6 +29,7 @@ public: std::vector& getBasePacks(); + /// @brief Reset content to base packs list void resetContent(); void loadContent(const std::vector& names); diff --git a/src/engine/Engine.cpp b/src/engine/Engine.cpp index 9f766a0c..0015da56 100644 --- a/src/engine/Engine.cpp +++ b/src/engine/Engine.cpp @@ -13,7 +13,6 @@ #include "coders/json.hpp" #include "coders/toml.hpp" #include "coders/commons.hpp" -#include "content/Content.hpp" #include "content/ContentControl.hpp" #include "core_defs.hpp" #include "io/io.hpp" @@ -322,20 +321,6 @@ void Engine::loadAssets() { } } -void Engine::loadContent() { - content->loadContent(); -} - -void Engine::resetContent() { - paths.setCurrentWorldFolder(""); - content->resetContent(); -} - -void Engine::loadWorldContent(const io::path& folder) { - paths.setCurrentWorldFolder(folder); - content->loadContent(ContentPack::worldPacksList("world:")); -} - void Engine::setScreen(std::shared_ptr screen) { // reset audio channels (stop all sources) audio::reset_channel(audio::get_channel_index("regular")); diff --git a/src/engine/Engine.hpp b/src/engine/Engine.hpp index ba8da81a..2e91c808 100644 --- a/src/engine/Engine.hpp +++ b/src/engine/Engine.hpp @@ -4,9 +4,6 @@ #include "typedefs.hpp" #include "settings.hpp" -#include "content/content_fwd.hpp" -#include "content/ContentPack.hpp" -#include "content/PacksManager.hpp" #include "io/engine_paths.hpp" #include "io/settings_io.hpp" #include "util/ObjectsKeeper.hpp" @@ -15,7 +12,6 @@ #include #include -#include class Window; class Assets; @@ -114,17 +110,6 @@ public: /// @param locale isolanguage_ISOCOUNTRY (example: en_US) void setLanguage(std::string locale); - /// @brief Load all selected content-packs and reload assets - void loadContent(); - - /// @brief Reset content to base packs list - void resetContent(); - - /// @brief Collect world content-packs and load content - /// @see loadContent - /// @param folder world folder - void loadWorldContent(const io::path& folder); - /// @brief Get active assets storage instance Assets* getAssets(); diff --git a/src/frontend/menu.cpp b/src/frontend/menu.cpp index 020e1fbd..9877cf60 100644 --- a/src/frontend/menu.cpp +++ b/src/frontend/menu.cpp @@ -18,6 +18,7 @@ #include "settings.hpp" #include "util/stringutil.hpp" #include "assets/assetload_funcs.hpp" +#include "content/ContentPack.hpp" using namespace gui; diff --git a/src/frontend/screens/MenuScreen.cpp b/src/frontend/screens/MenuScreen.cpp index 62699488..f7e091ba 100644 --- a/src/frontend/screens/MenuScreen.cpp +++ b/src/frontend/screens/MenuScreen.cpp @@ -1,5 +1,6 @@ #include "MenuScreen.hpp" +#include "content/ContentControl.hpp" #include "graphics/ui/GUI.hpp" #include "graphics/ui/elements/Menu.hpp" #include "graphics/core/Batch2D.hpp" @@ -12,7 +13,7 @@ #include "engine/Engine.hpp" MenuScreen::MenuScreen(Engine& engine) : Screen(engine) { - engine.resetContent(); + engine.getContentControl().resetContent(); auto menu = engine.getGUI().getMenu(); menu->reset(); diff --git a/src/logic/EngineController.cpp b/src/logic/EngineController.cpp index 57b0f375..bedda6c3 100644 --- a/src/logic/EngineController.cpp +++ b/src/logic/EngineController.cpp @@ -10,6 +10,7 @@ #include "coders/json.hpp" #include "content/ContentReport.hpp" #include "content/ContentControl.hpp" +#include "content/PacksManager.hpp" #include "world/files/WorldConverter.hpp" #include "world/files/WorldFiles.hpp" #include "frontend/locale.hpp" @@ -130,12 +131,15 @@ static void show_convert_request( } static bool load_world_content(Engine& engine, const io::path& folder) { + auto& paths = engine.getPaths(); + auto& contentControl = engine.getContentControl(); + paths.setCurrentWorldFolder(folder); if (engine.isHeadless()) { - engine.loadWorldContent(folder); + contentControl.loadContent(ContentPack::worldPacksList("world:")); return true; } else { - return menus::call(engine, [&engine, folder]() { - engine.loadWorldContent(folder); + return menus::call(engine, [&contentControl]() { + contentControl.loadContent(ContentPack::worldPacksList("world:")); }); } } @@ -263,10 +267,10 @@ void EngineController::createWorld( auto folder = paths.getWorldsFolder() / name; if (engine.isHeadless()) { - engine.loadContent(); + engine.getContentControl().loadContent(); paths.setCurrentWorldFolder(folder); } else if (!menus::call(engine, [this, &paths, folder]() { - engine.loadContent(); + engine.getContentControl().loadContent(); paths.setCurrentWorldFolder(folder); })) { return; diff --git a/src/logic/scripting/lua/libs/libcore.cpp b/src/logic/scripting/lua/libs/libcore.cpp index 43f8f857..568802b3 100644 --- a/src/logic/scripting/lua/libs/libcore.cpp +++ b/src/logic/scripting/lua/libs/libcore.cpp @@ -6,6 +6,7 @@ #include "constants.hpp" #include "assets/Assets.hpp" #include "content/Content.hpp" +#include "content/ContentControl.hpp" #include "debug/Logger.hpp" #include "engine/Engine.hpp" #include "io/engine_paths.hpp" @@ -30,7 +31,7 @@ static int l_get_version(lua::State* L) { } static int l_load_content(lua::State* L) { - engine->loadContent(); + content_control->loadContent(); return 0; } @@ -38,7 +39,7 @@ static int l_reset_content(lua::State* L) { if (level != nullptr) { throw std::runtime_error("world must be closed before"); } - engine->resetContent(); + content_control->resetContent(); return 0; } diff --git a/src/logic/scripting/lua/libs/libpack.cpp b/src/logic/scripting/lua/libs/libpack.cpp index 9c7e4181..10993cac 100644 --- a/src/logic/scripting/lua/libs/libpack.cpp +++ b/src/logic/scripting/lua/libs/libpack.cpp @@ -7,6 +7,7 @@ #include "assets/AssetsLoader.hpp" #include "content/Content.hpp" #include "content/ContentControl.hpp" +#include "content/PacksManager.hpp" #include "engine/Engine.hpp" #include "graphics/ui/gui_util.hpp" #include "graphics/ui/elements/Menu.hpp" @@ -44,10 +45,6 @@ static int l_pack_get_installed(lua::State* L) { /// @brief pack.get_available() -> array static int l_pack_get_available(lua::State* L) { - io::path worldFolder; - if (level) { - worldFolder = level->getWorld()->wfile->getFolder(); - } PacksManager manager; manager.setSources(content_control->getDefaultSources()); manager.scan(); @@ -150,10 +147,6 @@ static int pack_get_infos(lua::State* L) { } } if (!ids.empty()) { - io::path worldFolder; - if (level) { - worldFolder = level->getWorld()->wfile->getFolder(); - } PacksManager manager; manager.setSources(content_control->getDefaultSources()); manager.scan();