Веб-сайт самохостера Lotigara

summaryrefslogtreecommitdiff
path: root/source/frontend/StarMainInterface.cpp
diff options
context:
space:
mode:
authorKae <80987908+Novaenia@users.noreply.github.com>2023-07-04 19:27:16 +1000
committerKae <80987908+Novaenia@users.noreply.github.com>2023-07-04 19:27:16 +1000
commite3461e90531345650fe70ada38d875a68f87f416 (patch)
tree41b923b02ca8dbac1b075654052c972545aab16e /source/frontend/StarMainInterface.cpp
parentab72b03ad8679437ebf01ead65d9f0d3195e6bae (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.cpp23
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();