diff options
author | Kae <80987908+Novaenia@users.noreply.github.com> | 2023-07-04 19:27:16 +1000 |
---|---|---|
committer | Kae <80987908+Novaenia@users.noreply.github.com> | 2023-07-04 19:27:16 +1000 |
commit | e3461e90531345650fe70ada38d875a68f87f416 (patch) | |
tree | 41b923b02ca8dbac1b075654052c972545aab16e /source/frontend/StarMainInterface.cpp | |
parent | ab72b03ad8679437ebf01ead65d9f0d3195e6bae (diff) |
Start of Interface callbacks, starting with a bindCanvas function for the whole screen
Diffstat (limited to 'source/frontend/StarMainInterface.cpp')
-rw-r--r-- | source/frontend/StarMainInterface.cpp | 23 |
1 files changed, 23 insertions, 0 deletions
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<CanvasWidget>()).first->second; + canvas->setPosition(Vec2I()); + canvas->setSize(Vec2I(m_guiContext->windowSize())); + canvas->setIgnoreInterfaceScale(true); + return canvas; + } +} + PanePtr MainInterface::createEscapeDialog() { auto assets = Root::singleton().assets(); |