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

summaryrefslogtreecommitdiff
path: root/source/windowing
diff options
context:
space:
mode:
authorKae <80987908+Novaenia@users.noreply.github.com>2023-07-30 00:41:38 +1000
committerKae <80987908+Novaenia@users.noreply.github.com>2023-07-30 00:41:38 +1000
commitffd1507f725582bd51fe3064263b14ecd7db5edf (patch)
tree23856a19c61f8da76f53753a1a81ffcba4f804e3 /source/windowing
parent057f3727deb83a768a45ad3b91282166683e039d (diff)
ScriptPanes can specify paneLayer and interactive
Diffstat (limited to 'source/windowing')
-rw-r--r--source/windowing/StarPaneManager.cpp18
-rw-r--r--source/windowing/StarPaneManager.hpp3
2 files changed, 21 insertions, 0 deletions
diff --git a/source/windowing/StarPaneManager.cpp b/source/windowing/StarPaneManager.cpp
index 9dd7737..dcdace9 100644
--- a/source/windowing/StarPaneManager.cpp
+++ b/source/windowing/StarPaneManager.cpp
@@ -6,6 +6,14 @@
namespace Star {
+EnumMap<PaneLayer> const PaneLayerNames{
+ {PaneLayer::Tooltip, "Tooltip"},
+ {PaneLayer::ModalWindow, "ModalWindow"},
+ {PaneLayer::Window, "Window"},
+ {PaneLayer::Hud, "Hud"},
+ {PaneLayer::World, "World"}
+};
+
PaneManager::PaneManager()
: m_context(GuiContext::singletonPtr()), m_prevInterfaceScale(1) {
auto assets = Root::singleton().assets();
@@ -350,24 +358,34 @@ Vec2I PaneManager::calculateNewInterfacePosition(PanePtr const& pane, float inte
switch (pane->anchor()) {
case PaneAnchor::None:
scale = Mat3F::scaling(interfaceScaleRatio, Vec2F(windowSize()) / 2);
+ break;
case PaneAnchor::BottomLeft:
scale = Mat3F::scaling(interfaceScaleRatio);
+ break;
case PaneAnchor::BottomRight:
scale = Mat3F::scaling(interfaceScaleRatio, {size[0], 0});
+ break;
case PaneAnchor::TopLeft:
scale = Mat3F::scaling(interfaceScaleRatio, {0, size[1]});
+ break;
case PaneAnchor::TopRight:
scale = Mat3F::scaling(interfaceScaleRatio, size);
+ break;
case PaneAnchor::CenterTop:
scale = Mat3F::scaling(interfaceScaleRatio, {size[0] / 2, size[1]});
+ break;
case PaneAnchor::CenterBottom:
scale = Mat3F::scaling(interfaceScaleRatio, {size[0] / 2, 0});
+ break;
case PaneAnchor::CenterLeft:
scale = Mat3F::scaling(interfaceScaleRatio, {0, size[1] / 2});
+ break;
case PaneAnchor::CenterRight:
scale = Mat3F::scaling(interfaceScaleRatio, {size[0], size[1] / 2});
+ break;
case PaneAnchor::Center:
scale = Mat3F::scaling(interfaceScaleRatio, size / 2);
+ break;
default:
scale = Mat3F::scaling(interfaceScaleRatio, Vec2F(windowSize()) / 2);
}
diff --git a/source/windowing/StarPaneManager.hpp b/source/windowing/StarPaneManager.hpp
index e69f699..37634ea 100644
--- a/source/windowing/StarPaneManager.hpp
+++ b/source/windowing/StarPaneManager.hpp
@@ -3,6 +3,7 @@
#include "StarPane.hpp"
#include "StarOrderedMap.hpp"
+#include "StarBiMap.hpp"
namespace Star {
@@ -25,6 +26,8 @@ enum class PaneLayer {
// handled by GUI panes (such as wires)
World
};
+extern EnumMap<PaneLayer> const PaneLayerNames;
+
// This class handles a set of panes to be drawn as a collective windowing
// interface. It is a set of panes on separate distinct layers, where each