diff --git a/src/assets/AssetsLoader.cpp b/src/assets/AssetsLoader.cpp index f1db04cb..c34f554b 100644 --- a/src/assets/AssetsLoader.cpp +++ b/src/assets/AssetsLoader.cpp @@ -14,6 +14,7 @@ #include "../content/Content.h" #include "../content/ContentPack.h" #include "../logic/scripting/scripting.h" +#include "../logic/scripting/Environment.h" static debug::Logger logger("assets-loader"); diff --git a/src/assets/assetload_funcs.cpp b/src/assets/assetload_funcs.cpp index 1a53916e..d57d8b9a 100644 --- a/src/assets/assetload_funcs.cpp +++ b/src/assets/assetload_funcs.cpp @@ -18,7 +18,6 @@ #include "../graphics/core/Font.h" #include "../graphics/core/TextureAnimation.h" #include "../frontend/UiDocument.h" -#include "../logic/scripting/scripting.h" namespace fs = std::filesystem; diff --git a/src/content/ContentLoader.cpp b/src/content/ContentLoader.cpp index 93be9b84..60557ef0 100644 --- a/src/content/ContentLoader.cpp +++ b/src/content/ContentLoader.cpp @@ -19,6 +19,7 @@ #include "ContentPack.h" #include "../logic/scripting/scripting.h" +#include "../logic/scripting/Environment.h" namespace fs = std::filesystem; diff --git a/src/content/ContentPack.cpp b/src/content/ContentPack.cpp index 59382539..15509dee 100644 --- a/src/content/ContentPack.cpp +++ b/src/content/ContentPack.cpp @@ -7,7 +7,7 @@ #include "../files/files.h" #include "../files/engine_paths.h" #include "../data/dynamic.h" -#include "../logic/scripting/scripting.h" +#include "../logic/scripting/Environment.h" namespace fs = std::filesystem; @@ -145,3 +145,6 @@ ContentPackRuntime::ContentPackRuntime( ) : info(info), env(std::move(env)) { } + +ContentPackRuntime::~ContentPackRuntime() { +} diff --git a/src/content/ContentPack.h b/src/content/ContentPack.h index 7f6d024e..a9cfd875 100644 --- a/src/content/ContentPack.h +++ b/src/content/ContentPack.h @@ -91,6 +91,7 @@ public: ContentPack info, std::unique_ptr env ); + ~ContentPackRuntime(); inline const ContentPackStats& getStats() const { return stats; diff --git a/src/engine.cpp b/src/engine.cpp index 13fc1051..8f5f998a 100644 --- a/src/engine.cpp +++ b/src/engine.cpp @@ -13,17 +13,14 @@ #include "frontend/locale/langs.h" #include "frontend/menu/menu.h" #include "frontend/screens.h" -#include "frontend/UiDocument.h" #include "graphics/core/Batch2D.h" #include "graphics/core/GfxContext.h" #include "graphics/core/ImageData.h" #include "graphics/core/Shader.h" #include "graphics/ui/GUI.h" -#include "graphics/ui/elements/UINode.h" -#include "graphics/ui/elements/containers.h" #include "logic/scripting/scripting.h" -#include "util/platform.h" #include "util/listutil.h" +#include "util/platform.h" #include "voxels/DefaultWorldGenerator.h" #include "voxels/FlatWorldGenerator.h" #include "window/Camera.h" @@ -32,12 +29,9 @@ #include "window/Window.h" #include "world/WorldGenerators.h" -#include #include #include -#include #include -#include #include #include @@ -116,12 +110,7 @@ Engine::Engine(EngineSettings& settings, EnginePaths* paths) } void Engine::onAssetsLoaded() { - assets->store(new UiDocument( - "core:root", - uidocscript {}, - std::dynamic_pointer_cast(gui->getContainer()), - nullptr - ), "core:root"); + gui->onAssetsLoad(assets.get()); } void Engine::updateTimers() { @@ -145,12 +134,13 @@ void Engine::updateHotkeys() { } void Engine::mainloop() { + logger.info() << "starting menu screen"; setScreen(std::make_shared(this)); Batch2D batch(1024); lastTime = Window::time(); - - logger.info() << "initialized"; + + logger.info() << "engine started"; while (!Window::isShouldClose()){ assert(screen != nullptr); updateTimers(); diff --git a/src/frontend/InventoryView.cpp b/src/frontend/InventoryView.cpp index f7e19956..e45bf0a7 100644 --- a/src/frontend/InventoryView.cpp +++ b/src/frontend/InventoryView.cpp @@ -17,6 +17,7 @@ #include "../items/Inventory.h" #include "../items/ItemDef.h" #include "../logic/scripting/scripting.h" +#include "../logic/scripting/Environment.h" #include "../maths/voxmaths.h" #include "../objects/Player.h" #include "../util/stringutil.h" diff --git a/src/frontend/UiDocument.h b/src/frontend/UiDocument.h index 14cd4f9b..8fa6dd6c 100644 --- a/src/frontend/UiDocument.h +++ b/src/frontend/UiDocument.h @@ -1,6 +1,8 @@ #ifndef FRONTEND_UI_DOCUMENT_H_ #define FRONTEND_UI_DOCUMENT_H_ +#include "../logic/scripting/Environment.h" + #include #include #include diff --git a/src/frontend/screens.cpp b/src/frontend/screens.cpp index 8ef9df93..f8a62b53 100644 --- a/src/frontend/screens.cpp +++ b/src/frontend/screens.cpp @@ -16,6 +16,7 @@ #include "../logic/LevelController.h" #include "../logic/scripting/scripting_hud.h" #include "../logic/scripting/scripting.h" +#include "../logic/scripting/Environment.h" #include "../objects/Player.h" #include "../physics/Hitbox.h" #include "../util/stringutil.h" diff --git a/src/graphics/ui/GUI.cpp b/src/graphics/ui/GUI.cpp index 1e09c817..b8529be5 100644 --- a/src/graphics/ui/GUI.cpp +++ b/src/graphics/ui/GUI.cpp @@ -6,6 +6,7 @@ #include #include "../../assets/Assets.h" +#include "../../frontend/UiDocument.h" #include "../../graphics/core/Batch2D.h" #include "../../graphics/core/Shader.h" #include "../../graphics/core/GfxContext.h" @@ -34,6 +35,15 @@ std::shared_ptr GUI::getMenu() { return menu; } +void GUI::onAssetsLoad(Assets* assets) { + assets->store(new UiDocument( + "core:root", + uidocscript {}, + std::dynamic_pointer_cast(container), + nullptr + ), "core:root"); +} + /** Mouse related input and logic handling * @param delta delta time */ diff --git a/src/graphics/ui/GUI.h b/src/graphics/ui/GUI.h index 2bfd9e6a..3dddfda9 100644 --- a/src/graphics/ui/GUI.h +++ b/src/graphics/ui/GUI.h @@ -122,6 +122,8 @@ namespace gui { /// @deprecated std::shared_ptr getContainer() const; + void onAssetsLoad(Assets* assets); + void postRunnable(runnable callback); }; } diff --git a/src/graphics/ui/gui_util.cpp b/src/graphics/ui/gui_util.cpp index 6b4dc96e..25a41a37 100644 --- a/src/graphics/ui/gui_util.cpp +++ b/src/graphics/ui/gui_util.cpp @@ -5,7 +5,7 @@ #include -#include "../../logic/scripting/scripting.h" +#include "../../logic/scripting/Environment.h" #include "../../frontend/locale/langs.h" #include "../../util/stringutil.h" #include "../../delegates.h" diff --git a/src/graphics/ui/gui_xml.cpp b/src/graphics/ui/gui_xml.cpp index 8c7aca2d..214ccecb 100644 --- a/src/graphics/ui/gui_xml.cpp +++ b/src/graphics/ui/gui_xml.cpp @@ -8,6 +8,7 @@ #include "../../frontend/locale/langs.h" #include "../../logic/scripting/scripting.h" +#include "../../logic/scripting/Environment.h" #include "../../util/stringutil.h" using namespace gui; diff --git a/src/logic/scripting/Environment.h b/src/logic/scripting/Environment.h new file mode 100644 index 00000000..17a052f8 --- /dev/null +++ b/src/logic/scripting/Environment.h @@ -0,0 +1,19 @@ +#ifndef LOGIC_SCRIPTING_ENVIRONMENT_H_ +#define LOGIC_SCRIPTING_ENVIRONMENT_H_ + +namespace scripting { + /// @brief Lua environment wrapper for automatic deletion + class Environment { + int env; + public: + Environment(int env); + ~Environment(); + + int getId() const; + + // @brief Release namespace control + void release(); + }; +} + +#endif // LOGIC_SCRIPTING_ENVIRONMENT_H_ diff --git a/src/logic/scripting/scripting.cpp b/src/logic/scripting/scripting.cpp index 2c965a7c..ad8cfa3a 100644 --- a/src/logic/scripting/scripting.cpp +++ b/src/logic/scripting/scripting.cpp @@ -17,6 +17,7 @@ #include "../../logic/LevelController.h" #include "../../frontend/UiDocument.h" #include "../../engine.h" +#include "Environment.h" #include "lua/LuaState.h" #include "../../util/stringutil.h" #include "../../util/timeutil.h" diff --git a/src/logic/scripting/scripting.h b/src/logic/scripting/scripting.h index b7e8d728..2e7094b1 100644 --- a/src/logic/scripting/scripting.h +++ b/src/logic/scripting/scripting.h @@ -33,18 +33,7 @@ namespace scripting { extern BlocksController* blocks; extern LevelController* controller; - /// @brief Lua environment wrapper for automatic deletion - class Environment { - int env; - public: - Environment(int env); - ~Environment(); - - int getId() const; - - // @brief Release namespace control - void release(); - }; + class Environment; void initialize(Engine* engine);