From 4ef33d4df6198e613b0f27406d49978c8ea2fb97 Mon Sep 17 00:00:00 2001 From: zaaarf Date: Sun, 10 Dec 2023 23:15:41 +0100 Subject: feat: improved identifier registry macro --- src/openvic-simulation/interface/GUI.cpp | 8 +++----- src/openvic-simulation/interface/GUI.hpp | 11 ++++------- src/openvic-simulation/interface/UI.cpp | 2 -- src/openvic-simulation/interface/UI.hpp | 15 ++++----------- 4 files changed, 11 insertions(+), 25 deletions(-) (limited to 'src/openvic-simulation/interface') diff --git a/src/openvic-simulation/interface/GUI.cpp b/src/openvic-simulation/interface/GUI.cpp index 61b8683..244909e 100644 --- a/src/openvic-simulation/interface/GUI.cpp +++ b/src/openvic-simulation/interface/GUI.cpp @@ -42,11 +42,9 @@ bool Element::_fill_elements_key_map( return ret; } -Scene::Scene() : elements { "scene elements" } {} - bool Scene::_fill_key_map(NodeTools::key_map_t& key_map, UIManager const& ui_manager) { return Element::_fill_elements_key_map(key_map, [this](std::unique_ptr&& element) -> bool { - return elements.add_item(std::move(element)); + return scene_elements.add_item(std::move(element)); }, ui_manager); } @@ -59,11 +57,11 @@ node_callback_t Scene::expect_scene( }, ui_manager); } -Window::Window() : elements { "window elements" }, size {}, moveable { false }, fullscreen { false } {} +Window::Window() : moveable { false }, fullscreen { false } {} bool Window::_fill_key_map(NodeTools::key_map_t& key_map, UIManager const& ui_manager) { bool ret = Element::_fill_elements_key_map(key_map, [this](std::unique_ptr&& element) -> bool { - return elements.add_item(std::move(element)); + return window_elements.add_item(std::move(element)); }, ui_manager); ret &= Element::_fill_key_map(key_map, ui_manager); ret &= add_key_map_entries(key_map, diff --git a/src/openvic-simulation/interface/GUI.hpp b/src/openvic-simulation/interface/GUI.hpp index f8434f6..47bd57d 100644 --- a/src/openvic-simulation/interface/GUI.hpp +++ b/src/openvic-simulation/interface/GUI.hpp @@ -40,10 +40,10 @@ namespace OpenVic::GUI { class Scene : public Named { friend std::unique_ptr std::make_unique(); - NamedInstanceRegistry elements; + NamedInstanceRegistry IDENTIFIER_REGISTRY(scene_element); protected: - Scene(); + Scene() = default; bool _fill_key_map(NodeTools::key_map_t& key_map, UIManager const& ui_manager) override; @@ -57,13 +57,12 @@ namespace OpenVic::GUI { std::string_view scene_name, NodeTools::callback_t&&> callback, UIManager const& ui_manager ); - IDENTIFIER_REGISTRY_ACCESSORS(element) }; class Window final : public Element { friend std::unique_ptr std::make_unique(); - NamedInstanceRegistry elements; + NamedInstanceRegistry IDENTIFIER_REGISTRY(window_element); fvec2_t PROPERTY(size); bool PROPERTY(moveable); @@ -80,8 +79,6 @@ namespace OpenVic::GUI { virtual ~Window() = default; OV_DETAIL_GET_TYPE - - IDENTIFIER_REGISTRY_ACCESSORS(element) }; class Icon final : public Element { @@ -127,7 +124,7 @@ namespace OpenVic::GUI { // TODO - clicksound protected: - Button() ; + Button(); bool _fill_key_map(NodeTools::key_map_t& key_map, UIManager const& ui_manager) override; diff --git a/src/openvic-simulation/interface/UI.cpp b/src/openvic-simulation/interface/UI.cpp index 4653e5b..3fc8295 100644 --- a/src/openvic-simulation/interface/UI.cpp +++ b/src/openvic-simulation/interface/UI.cpp @@ -5,8 +5,6 @@ using namespace OpenVic::NodeTools; using namespace OpenVic::GFX; using namespace OpenVic::GUI; -UIManager::UIManager() : sprites { "sprites" }, scenes { "scenes" }, fonts { "fonts" } {} - bool UIManager::add_font(std::string_view identifier, colour_t colour, std::string_view fontname) { if (identifier.empty()) { Logger::error("Invalid font identifier - empty!"); diff --git a/src/openvic-simulation/interface/UI.hpp b/src/openvic-simulation/interface/UI.hpp index 045766b..12eadb5 100644 --- a/src/openvic-simulation/interface/UI.hpp +++ b/src/openvic-simulation/interface/UI.hpp @@ -4,21 +4,14 @@ namespace OpenVic { - class UIManager { - - NamedInstanceRegistry sprites; - NamedInstanceRegistry scenes; - IdentifierRegistry fonts; + class UIManager { + NamedInstanceRegistry IDENTIFIER_REGISTRY(sprite); + NamedInstanceRegistry IDENTIFIER_REGISTRY(scene); + IdentifierRegistry IDENTIFIER_REGISTRY(font); bool _load_font(ast::NodeCPtr node); public: - UIManager(); - - IDENTIFIER_REGISTRY_ACCESSORS(sprite) - IDENTIFIER_REGISTRY_ACCESSORS(scene) - IDENTIFIER_REGISTRY_ACCESSORS(font) - bool add_font(std::string_view identifier, colour_t colour, std::string_view fontname); bool load_gfx_file(ast::NodeCPtr root); -- cgit v1.2.3-56-ga3b1