From c6bd52eed2589a75f900bc76b5c37c3897ab8d61 Mon Sep 17 00:00:00 2001 From: MihailRis Date: Wed, 14 Feb 2024 00:31:45 +0300 Subject: [PATCH] gui: more xml and lua support --- res/layouts/inventory.xml | 32 ++++++++++++++----- res/layouts/inventory.xml.lua | 4 +++ src/delegates.h | 2 ++ src/engine.cpp | 4 +++ src/engine.h | 1 + src/frontend/gui/controls.h | 3 -- src/frontend/gui/gui_xml.cpp | 30 +++++++++++++++++- src/logic/scripting/api/api_lua.h | 6 ++++ src/logic/scripting/scripting.cpp | 52 ++++++++++++++++++++----------- src/logic/scripting/scripting.h | 6 ++++ 10 files changed, 110 insertions(+), 30 deletions(-) diff --git a/res/layouts/inventory.xml b/res/layouts/inventory.xml index 1ef2b20f..416778b6 100644 --- a/res/layouts/inventory.xml +++ b/res/layouts/inventory.xml @@ -1,10 +1,26 @@ - + - + + + + + + + + + + 4321.40 + + + + 120.0 + + + + -424.10 + + + + + diff --git a/res/layouts/inventory.xml.lua b/res/layouts/inventory.xml.lua index c5cd5791..2386812c 100644 --- a/res/layouts/inventory.xml.lua +++ b/res/layouts/inventory.xml.lua @@ -9,3 +9,7 @@ end function inventory_share_func(invid, slotid) inventory.set(invid, slotid, 0, 0) end + +function time_change(x) + world.set_day_time(x) +end diff --git a/src/delegates.h b/src/delegates.h index 61360464..c938cd02 100644 --- a/src/delegates.h +++ b/src/delegates.h @@ -8,5 +8,7 @@ using runnable = std::function; using stringconsumer = std::function; using wstringsupplier = std::function; using wstringconsumer = std::function; +using doublesupplier = std::function; +using doubleconsumer = std::function; #endif // DELEGATES_H_ diff --git a/src/engine.cpp b/src/engine.cpp index d1e85eeb..80d9114a 100644 --- a/src/engine.cpp +++ b/src/engine.cpp @@ -208,6 +208,10 @@ void Engine::loadAllPacks() { ContentPack::scan(paths, contentPacks); } +double Engine::getDelta() const { + return delta; +} + void Engine::setScreen(std::shared_ptr screen) { this->screen = screen; } diff --git a/src/engine.h b/src/engine.h index 1532e84b..90ffc8b5 100644 --- a/src/engine.h +++ b/src/engine.h @@ -63,6 +63,7 @@ public: void loadContent(); void loadWorldContent(const fs::path& folder); void loadAllPacks(); + double getDelta() const; std::shared_ptr getScreen(); }; diff --git a/src/frontend/gui/controls.h b/src/frontend/gui/controls.h index ae07b4d7..80e7d42f 100644 --- a/src/frontend/gui/controls.h +++ b/src/frontend/gui/controls.h @@ -17,9 +17,6 @@ class Batch2D; class Assets; namespace gui { - using doublesupplier = std::function; - using doubleconsumer = std::function; - using boolsupplier = std::function; using boolconsumer = std::function; diff --git a/src/frontend/gui/gui_xml.cpp b/src/frontend/gui/gui_xml.cpp index 2721b5c1..43daee3b 100644 --- a/src/frontend/gui/gui_xml.cpp +++ b/src/frontend/gui/gui_xml.cpp @@ -124,6 +124,13 @@ static std::shared_ptr readContainer(UiXmlReader& reader, xml::xmlelemen return container; } +static std::shared_ptr readPanel(UiXmlReader& reader, xml::xmlelement element) { + float interval = element->attr("interval", "2").asFloat(); + auto panel = std::make_shared(glm::vec2(), glm::vec4(), interval); + _readPanel(reader, element, *panel); + return panel; +} + static std::shared_ptr readButton(UiXmlReader& reader, xml::xmlelement element) { std::wstring text = readAndProcessInnerText(element); auto button = std::make_shared