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

summaryrefslogtreecommitdiff
path: root/source/frontend
diff options
context:
space:
mode:
Diffstat (limited to 'source/frontend')
-rw-r--r--source/frontend/StarErrorScreen.cpp10
-rw-r--r--source/frontend/StarInterfaceCursor.cpp6
-rw-r--r--source/frontend/StarInterfaceCursor.hpp2
-rw-r--r--source/frontend/StarMainInterface.cpp15
-rw-r--r--source/frontend/StarTitleScreen.cpp11
5 files changed, 30 insertions, 14 deletions
diff --git a/source/frontend/StarErrorScreen.cpp b/source/frontend/StarErrorScreen.cpp
index 6809d95..6d4e6b3 100644
--- a/source/frontend/StarErrorScreen.cpp
+++ b/source/frontend/StarErrorScreen.cpp
@@ -76,11 +76,13 @@ void ErrorScreen::renderCursor() {
Vec2I cursorPos = m_cursorScreenPos;
Vec2I cursorSize = m_cursor.size();
Vec2I cursorOffset = m_cursor.offset();
+ unsigned int cursorScale = m_cursor.scale(interfaceScale());
+ Drawable cursorDrawable = m_cursor.drawable();
- cursorPos[0] -= cursorOffset[0] * interfaceScale();
- cursorPos[1] -= (cursorSize[1] - cursorOffset[1]) * interfaceScale();
- if (!m_guiContext->trySetCursor(m_cursor.drawable(), cursorOffset, interfaceScale()))
- m_guiContext->drawDrawable(m_cursor.drawable(), Vec2F(cursorPos), interfaceScale());
+ cursorPos[0] -= cursorOffset[0] * cursorScale;
+ cursorPos[1] -= (cursorSize[1] - cursorOffset[1]) * cursorScale;
+ if (!m_guiContext->trySetCursor(cursorDrawable, cursorOffset, cursorScale))
+ m_guiContext->drawDrawable(cursorDrawable, Vec2F(cursorPos), cursorScale);
}
float ErrorScreen::interfaceScale() const {
diff --git a/source/frontend/StarInterfaceCursor.cpp b/source/frontend/StarInterfaceCursor.cpp
index 8844da2..9fa01f7 100644
--- a/source/frontend/StarInterfaceCursor.cpp
+++ b/source/frontend/StarInterfaceCursor.cpp
@@ -36,6 +36,8 @@ void InterfaceCursor::setCursor(String const& configFile) {
m_drawable = Animation(config.get("animation"), "/interface");
m_size = Vec2I(m_drawable.get<Animation>().drawable(1.0f).boundBox(false).size());
}
+
+ m_scale = config.getUInt("scale", 0);
}
Drawable InterfaceCursor::drawable() const {
@@ -53,6 +55,10 @@ Vec2I InterfaceCursor::offset() const {
return m_offset;
}
+unsigned int InterfaceCursor::scale(unsigned int interfaceScale) const {
+ return m_scale ? m_scale : interfaceScale;
+}
+
void InterfaceCursor::update(float dt) {
if (m_drawable.is<Animation>()) {
m_drawable.get<Animation>().update(dt);
diff --git a/source/frontend/StarInterfaceCursor.hpp b/source/frontend/StarInterfaceCursor.hpp
index 2f58867..6936700 100644
--- a/source/frontend/StarInterfaceCursor.hpp
+++ b/source/frontend/StarInterfaceCursor.hpp
@@ -20,6 +20,7 @@ public:
Drawable drawable() const;
Vec2I size() const;
Vec2I offset() const;
+ unsigned int scale(unsigned int interfaceScale = 0) const;
void update(float dt);
@@ -27,6 +28,7 @@ private:
String m_configFile;
Vec2I m_offset;
Vec2I m_size;
+ unsigned int m_scale;
MVariant<String, Animation> m_drawable;
};
diff --git a/source/frontend/StarMainInterface.cpp b/source/frontend/StarMainInterface.cpp
index 1dcb6c4..6c29587 100644
--- a/source/frontend/StarMainInterface.cpp
+++ b/source/frontend/StarMainInterface.cpp
@@ -1375,10 +1375,13 @@ void MainInterface::renderCursor() {
Vec2I cursorPos = m_cursorScreenPos;
Vec2I cursorSize = m_cursor.size();
Vec2I cursorOffset = m_cursor.offset();
- cursorPos[0] -= cursorOffset[0] * interfaceScale();
- cursorPos[1] -= (cursorSize[1] - cursorOffset[1]) * interfaceScale();
- if (!m_guiContext->trySetCursor(m_cursor.drawable(), cursorOffset, interfaceScale()))
- m_guiContext->drawDrawable(m_cursor.drawable(), Vec2F(cursorPos), interfaceScale());
+ unsigned int cursorScale = m_cursor.scale(interfaceScale());
+ Drawable cursorDrawable = m_cursor.drawable();
+
+ cursorPos[0] -= cursorOffset[0] * cursorScale;
+ cursorPos[1] -= (cursorSize[1] - cursorOffset[1]) * cursorScale;
+ if (!m_guiContext->trySetCursor(cursorDrawable, cursorOffset, cursorScale))
+ m_guiContext->drawDrawable(cursorDrawable, Vec2F(cursorPos), cursorScale);
if (m_cursorTooltip) {
auto assets = Root::singleton().assets();
@@ -1388,7 +1391,7 @@ void MainInterface::renderCursor() {
auto rawCursorOffset = jsonToVec2I(assets->json("/interface.config:cursorTooltip.offset"));
Vec2I tooltipSize = Vec2I(imgDb->imageSize(backgroundImage)) * interfaceScale();
- Vec2I cursorOffset = (Vec2I{0, -m_cursor.size().y()} + rawCursorOffset) * interfaceScale();
+ Vec2I cursorOffset = (Vec2I{0, -m_cursor.size().y()} + rawCursorOffset) * cursorScale;
Vec2I tooltipOffset = m_cursorScreenPos + cursorOffset;
size_t fontSize = assets->json("/interface.config:cursorTooltip.fontSize").toUInt();
String font = assets->json("/interface.config:cursorTooltip.font").toString();
@@ -1404,7 +1407,7 @@ void MainInterface::renderCursor() {
VerticalAnchor::VMidAnchor));
}
- m_cursorItem->setPosition(m_cursorScreenPos / interfaceScale() + m_config->inventoryItemMouseOffset);
+ m_cursorItem->setPosition(m_cursorScreenPos / cursorScale + m_config->inventoryItemMouseOffset);
if (auto swapItem = m_client->mainPlayer()->inventory()->swapSlotItem())
m_cursorItem->setItem(swapItem);
diff --git a/source/frontend/StarTitleScreen.cpp b/source/frontend/StarTitleScreen.cpp
index 4571f04..e2963f0 100644
--- a/source/frontend/StarTitleScreen.cpp
+++ b/source/frontend/StarTitleScreen.cpp
@@ -414,11 +414,14 @@ void TitleScreen::renderCursor() {
Vec2I cursorPos = m_cursorScreenPos;
Vec2I cursorSize = m_cursor.size();
Vec2I cursorOffset = m_cursor.offset();
+ unsigned int cursorScale = m_cursor.scale(interfaceScale());
+ Drawable cursorDrawable = m_cursor.drawable();
- cursorPos[0] -= cursorOffset[0] * interfaceScale();
- cursorPos[1] -= (cursorSize[1] - cursorOffset[1]) * interfaceScale();
- if (!m_guiContext->trySetCursor(m_cursor.drawable(), cursorOffset, interfaceScale()))
- m_guiContext->drawDrawable(m_cursor.drawable(), Vec2F(cursorPos), interfaceScale());
+ cursorPos[0] -= cursorOffset[0] * cursorScale;
+ cursorPos[1] -= (cursorSize[1] - cursorOffset[1]) * cursorScale;
+
+ if (!m_guiContext->trySetCursor(cursorDrawable, cursorOffset, cursorScale))
+ m_guiContext->drawDrawable(cursorDrawable, Vec2F(cursorPos), cursorScale);
}
float TitleScreen::interfaceScale() const {