From e3461e90531345650fe70ada38d875a68f87f416 Mon Sep 17 00:00:00 2001 From: Kae <80987908+Novaenia@users.noreply.github.com> Date: Tue, 4 Jul 2023 19:27:16 +1000 Subject: Start of Interface callbacks, starting with a bindCanvas function for the whole screen --- source/frontend/StarMainInterface.cpp | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) (limited to 'source/frontend/StarMainInterface.cpp') diff --git a/source/frontend/StarMainInterface.cpp b/source/frontend/StarMainInterface.cpp index 0475663..592bc6e 100644 --- a/source/frontend/StarMainInterface.cpp +++ b/source/frontend/StarMainInterface.cpp @@ -24,6 +24,7 @@ #include "StarWireInterface.hpp" #include "StarTeamBar.hpp" #include "StarStatusPane.hpp" +#include "StarCanvasWidget.hpp" #include "StarLabelWidget.hpp" #include "StarItemSlotWidget.hpp" #include "StarPlayer.hpp" @@ -792,6 +793,12 @@ void MainInterface::update() { m_client->mainPlayer()->setBusyState(PlayerBusyState::Chatting); else m_client->mainPlayer()->setBusyState(PlayerBusyState::None); + + for (auto& pair : m_canvases) { + pair.second->setPosition(Vec2I()); + pair.second->setSize(Vec2I(m_guiContext->windowSize())); + pair.second->update(); + } } void MainInterface::renderInWorldElements() { @@ -820,6 +827,10 @@ void MainInterface::render() { renderMainBar(); renderDebug(); + RectI screenRect = RectI::withSize(Vec2I(), Vec2I(m_guiContext->windowSize())); + for (auto& pair : m_canvases) + pair.second->render(screenRect); + renderWindows(); renderCursor(); } @@ -912,6 +923,18 @@ void MainInterface::warpTo(WarpAction const& warpAction) { } } +CanvasWidgetPtr MainInterface::fetchCanvas(String const& canvasName) { + if (auto canvasPtr = m_canvases.ptr(canvasName)) + return *canvasPtr; + else { + CanvasWidgetPtr canvas = m_canvases.emplace(canvasName, make_shared()).first->second; + canvas->setPosition(Vec2I()); + canvas->setSize(Vec2I(m_guiContext->windowSize())); + canvas->setIgnoreInterfaceScale(true); + return canvas; + } +} + PanePtr MainInterface::createEscapeDialog() { auto assets = Root::singleton().assets(); -- cgit v1.2.3