From ced16a1bb9ef735a2fe44b64ac594bf9b4a7f9bf Mon Sep 17 00:00:00 2001 From: Dan Goodliffe Date: Wed, 19 Mar 2025 01:44:18 +0000 Subject: Replace basic rail builder UI with a ImGui version --- ui/editNetwork.cpp | 35 ++++++++++++++++++----------------- 1 file changed, 18 insertions(+), 17 deletions(-) (limited to 'ui/editNetwork.cpp') diff --git a/ui/editNetwork.cpp b/ui/editNetwork.cpp index 2887491..a11fe3c 100644 --- a/ui/editNetwork.cpp +++ b/ui/editNetwork.cpp @@ -2,6 +2,7 @@ #include "builders/freeExtend.h" #include "builders/join.h" #include "builders/straight.h" +#include "imgui_wrap.h" #include "text.h" #include #include @@ -11,16 +12,7 @@ const std::filesystem::path fontpath {"/usr/share/fonts/hack/Hack-Regular.ttf"}; constexpr const glm::u8vec4 TRANSPARENT_BLUE {30, 50, 255, 200}; -EditNetwork::EditNetwork(Network * n) : - network {n}, - builderToolbar { - {"ui/icon/network.png", mode.toggle()}, - {"ui/icon/network.png", mode.toggle()}, - {"ui/icon/network.png", mode.toggle()}, - }, - blue {1, 1, &TRANSPARENT_BLUE}, font {fontpath, 15} -{ -} +EditNetwork::EditNetwork(Network * n) : network {n}, blue {1, 1, &TRANSPARENT_BLUE}, font {fontpath, 15} { } bool EditNetwork::click(const SDL_MouseButtonEvent & e, const Ray & ray) @@ -42,9 +34,9 @@ EditNetwork::move(const SDL_MouseMotionEvent & e, const Ray & } bool -EditNetwork::handleInput(const SDL_Event & e, const UIComponent::Position & parentPos) +EditNetwork::handleInput(const SDL_Event &, const UIComponent::Position &) { - return builderToolbar.handleInput(e, parentPos); + return false; } void @@ -75,10 +67,19 @@ EditNetwork::Builder::setHeightsFor(Network * network, const Link::CCollection & } void -EditNetwork::render(const UIShader & shader, const UIComponent::Position & parentPos) const +EditNetwork::render(const UIShader &, const UIComponent::Position &) { - if (builder) { - Text {builder->hint(), font, {{50, 10}, {0, 15}}, {1, 1, 0}}.render(shader, parentPos); - } - builderToolbar.render(shader, parentPos); + ImGui::Begin("Edit Network"); + + auto builderChoice = [this](const char * name) { + if (ImGui::RadioButton(name, dynamic_cast(builder.get()))) { + builder = std::make_unique(); + } + }; + builderChoice.operator()("Straight"); + builderChoice.operator()("Join"); + builderChoice.operator()("Free Extend"); + ImGui::TextUnformatted(builder ? builder->hint().c_str() : "Select a build mode"); + + ImGui::End(); } -- cgit v1.2.3