From 9fcff65ccacab06e36731b4c34fd857a86167fff Mon Sep 17 00:00:00 2001 From: MihailRis Date: Thu, 7 Aug 2025 22:37:40 +0300 Subject: [PATCH] cleanup --- res/project_script.lua | 24 ++++++++++++++++-------- src/devtools/Project.cpp | 3 +++ src/devtools/Project.hpp | 8 ++++++++ src/engine/Engine.cpp | 9 ++++----- src/engine/Engine.hpp | 5 ----- 5 files changed, 31 insertions(+), 18 deletions(-) diff --git a/res/project_script.lua b/res/project_script.lua index 5f28c300..0da3b54d 100644 --- a/res/project_script.lua +++ b/res/project_script.lua @@ -1,13 +1,13 @@ local menubg -function on_screen_changed(screen) - if screen ~= "menu" then - if menubg then - menubg:destruct() - menubg = nil - end - return +local function clear_menu() + if menubg then + menubg:destruct() + menubg = nil end +end + +local function configure_menu() local controller = {} function controller.resize_menu_bg() local w, h = unpack(gui.get_viewport()) @@ -19,8 +19,16 @@ function on_screen_changed(screen) end _GUI_ROOT.root:add( "", controller) + "z-index='-1' interactive='true'/>", controller) menubg = _GUI_ROOT.menubg controller.resize_menu_bg() menu.page = "main" end + +function on_screen_changed(screen) + if screen ~= "menu" then + clear_menu() + else + configure_menu() + end +end diff --git a/src/devtools/Project.cpp b/src/devtools/Project.cpp index c1d382ee..881f6cc7 100644 --- a/src/devtools/Project.cpp +++ b/src/devtools/Project.cpp @@ -1,6 +1,9 @@ #include "Project.hpp" #include "data/dv_util.hpp" +#include "logic/scripting/scripting.hpp" + +Project::~Project() = default; dv::value Project::serialize() const { return dv::object({ diff --git a/src/devtools/Project.hpp b/src/devtools/Project.hpp index 857b58f1..3824ecfd 100644 --- a/src/devtools/Project.hpp +++ b/src/devtools/Project.hpp @@ -2,13 +2,21 @@ #include #include +#include #include "interfaces/Serializable.hpp" +namespace scripting { + class IProjectScript; +} + struct Project : Serializable { std::string name; std::string title; std::vector basePacks; + std::unique_ptr script; + + ~Project(); dv::value serialize() const override; void deserialize(const dv::value& src) override; diff --git a/src/engine/Engine.cpp b/src/engine/Engine.cpp index 5e5ba681..3f1ae9e5 100644 --- a/src/engine/Engine.cpp +++ b/src/engine/Engine.cpp @@ -185,7 +185,7 @@ void Engine::initialize(CoreParameters coreParameters) { langs::setup(lang, paths.resPaths.collectRoots()); }, true)); - projectScript = load_project_script(); + project->script = load_project_script(); } void Engine::loadSettings() { @@ -242,7 +242,6 @@ void Engine::run() { } } -#include "graphics/ui/elements/Container.hpp" void Engine::postUpdate() { network->update(); postRunnables.run(); @@ -285,7 +284,6 @@ void Engine::saveSettings() { } void Engine::close() { - projectScript.reset(); saveSettings(); logger.info() << "shutting down"; if (screen) { @@ -302,6 +300,7 @@ void Engine::close() { audio::close(); network.reset(); clearKeepedObjects(); + project.reset(); scripting::close(); logger.info() << "scripting finished"; if (!params.headless) { @@ -368,8 +367,8 @@ void Engine::setScreen(std::shared_ptr screen) { if (this->screen) { this->screen->onOpen(); } - if (projectScript && this->screen) { - projectScript->onScreenChange(this->screen->getName()); + if (project->script && this->screen) { + project->script->onScreenChange(this->screen->getName()); } } diff --git a/src/engine/Engine.hpp b/src/engine/Engine.hpp index d82fc4e6..35619a2a 100644 --- a/src/engine/Engine.hpp +++ b/src/engine/Engine.hpp @@ -75,7 +75,6 @@ class Engine : public util::ObjectsKeeper { std::unique_ptr input; std::unique_ptr gui; std::unique_ptr editor; - std::unique_ptr projectScript; PostRunnables postRunnables; Time time; OnWorldOpen levelConsumer; @@ -183,8 +182,4 @@ public: const Project& getProject() { return *project; } - - scripting::IProjectScript* getProjectScript() { - return projectScript.get(); - } };