diff --git a/src/frontend/InventoryView.cpp b/src/frontend/InventoryView.cpp index 99d7722f..869a227e 100644 --- a/src/frontend/InventoryView.cpp +++ b/src/frontend/InventoryView.cpp @@ -11,7 +11,6 @@ #include "../graphics/core/GfxContext.h" #include "../graphics/core/Shader.h" #include "../graphics/render/BlocksPreview.h" -#include "../graphics/ui/elements/controls.h" #include "../items/Inventories.h" #include "../items/Inventory.h" #include "../items/ItemDef.h" diff --git a/src/frontend/InventoryView.h b/src/frontend/InventoryView.h index 8cc76a03..9bb86e7b 100644 --- a/src/frontend/InventoryView.h +++ b/src/frontend/InventoryView.h @@ -6,8 +6,7 @@ #include #include "../graphics/ui/elements/UINode.h" -#include "../graphics/ui/elements/Container.hpp" -#include "../graphics/ui/elements/controls.h" +#include "../graphics/ui/elements/layout/Container.hpp" #include "../items/ItemStack.h" #include "../typedefs.h" diff --git a/src/frontend/debug_panel.cpp b/src/frontend/debug_panel.cpp index 89bdb28e..7f5c7ecd 100644 --- a/src/frontend/debug_panel.cpp +++ b/src/frontend/debug_panel.cpp @@ -6,7 +6,10 @@ #include "../delegates.h" #include "../engine.h" #include "../graphics/core/Mesh.h" -#include "../graphics/ui/elements/controls.h" +#include "../graphics/ui/elements/control/CheckBox.hpp" +#include "../graphics/ui/elements/control/TextBox.hpp" +#include "../graphics/ui/elements/control/TrackBar.hpp" +#include "../graphics/ui/elements/control/InputBindBox.hpp" #include "../graphics/render/WorldRenderer.h" #include "../objects/Player.h" #include "../physics/Hitbox.h" diff --git a/src/frontend/hud.cpp b/src/frontend/hud.cpp index d5c14111..aa2550d5 100644 --- a/src/frontend/hud.cpp +++ b/src/frontend/hud.cpp @@ -15,10 +15,10 @@ #include "../graphics/core/Texture.h" #include "../graphics/render/BlocksPreview.h" #include "../graphics/render/WorldRenderer.h" -#include "../graphics/ui/elements/controls.h" #include "../graphics/ui/elements/UINode.h" -#include "../graphics/ui/elements/Menu.hpp" -#include "../graphics/ui/elements/Plotter.hpp" +#include "../graphics/ui/elements/layout/Menu.hpp" +#include "../graphics/ui/elements/layout/Panel.hpp" +#include "../graphics/ui/elements/display/Plotter.hpp" #include "../graphics/ui/GUI.h" #include "../items/Inventories.h" #include "../items/Inventory.h" diff --git a/src/frontend/menu/menu.cpp b/src/frontend/menu/menu.cpp index 5c11b629..0d05df91 100644 --- a/src/frontend/menu/menu.cpp +++ b/src/frontend/menu/menu.cpp @@ -11,8 +11,9 @@ #include "../../interfaces/Task.h" #include "../../graphics/ui/GUI.h" #include "../../graphics/ui/gui_util.h" -#include "../../graphics/ui/elements/Menu.hpp" -#include "../../graphics/ui/elements/controls.h" +#include "../../graphics/ui/elements/layout/Menu.hpp" +#include "../../graphics/ui/elements/display/Label.hpp" +#include "../../graphics/ui/elements/control/Button.hpp" #include "../screens.h" #include "../UiDocument.h" #include "../../logic/scripting/scripting.h" diff --git a/src/frontend/screens.cpp b/src/frontend/screens.cpp index 5f3cbee3..18f0762a 100644 --- a/src/frontend/screens.cpp +++ b/src/frontend/screens.cpp @@ -10,7 +10,7 @@ #include "../graphics/core/Shader.h" #include "../graphics/core/TextureAnimation.h" #include "../graphics/render/WorldRenderer.h" -#include "../graphics/ui/elements/Menu.hpp" +#include "../graphics/ui/elements/layout/Menu.hpp" #include "../graphics/ui/GUI.h" #include "../logic/ChunksController.h" #include "../logic/LevelController.h" diff --git a/src/graphics/ui/GUI.cpp b/src/graphics/ui/GUI.cpp index 4799d344..0549d569 100644 --- a/src/graphics/ui/GUI.cpp +++ b/src/graphics/ui/GUI.cpp @@ -1,6 +1,6 @@ #include "GUI.h" #include "elements/UINode.h" -#include "elements/Menu.hpp" +#include "elements/layout/Menu.hpp" #include #include diff --git a/src/graphics/ui/elements/UINode.cpp b/src/graphics/ui/elements/UINode.cpp index c3a7501c..dc1436e7 100644 --- a/src/graphics/ui/elements/UINode.cpp +++ b/src/graphics/ui/elements/UINode.cpp @@ -1,6 +1,6 @@ #include "UINode.h" -#include "Container.hpp" +#include "layout/Container.hpp" #include "../../core/Batch2D.h" using gui::UINode; diff --git a/src/graphics/ui/elements/control/Button.cpp b/src/graphics/ui/elements/control/Button.cpp new file mode 100644 index 00000000..a0ea5439 --- /dev/null +++ b/src/graphics/ui/elements/control/Button.cpp @@ -0,0 +1,98 @@ +#include "Button.hpp" + +#include "../display/Label.hpp" +#include "../../../core/GfxContext.h" +#include "../../../core/Batch2D.h" + +using namespace gui; + +Button::Button(std::shared_ptr content, glm::vec4 padding) + : Panel(glm::vec2(), padding, 0) { + glm::vec4 margin = getMargin(); + setSize(content->getSize()+ + glm::vec2(padding[0]+padding[2]+margin[0]+margin[2], + padding[1]+padding[3]+margin[1]+margin[3])); + add(content); + setScrollable(false); + setHoverColor(glm::vec4(0.05f, 0.1f, 0.15f, 0.75f)); + setPressedColor(glm::vec4(0.0f, 0.0f, 0.0f, 0.95f)); + content->setInteractive(false); +} + +Button::Button( + std::wstring text, + glm::vec4 padding, + onaction action, + glm::vec2 size +) : Panel(size, padding, 0) +{ + if (size.y < 0.0f) { + size = glm::vec2( + glm::max(padding.x + padding.z + text.length()*8, size.x), + glm::max(padding.y + padding.w + 16, size.y) + ); + } + setSize(size); + + if (action) { + listenAction(action); + } + setScrollable(false); + + label = std::make_shared