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

summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKae <80987908+Novaenia@users.noreply.github.com>2023-06-26 18:39:40 +1000
committerKae <80987908+Novaenia@users.noreply.github.com>2023-06-26 18:39:40 +1000
commit4b9b02783f1bbfc1049e11b606883c5cfa0b215e (patch)
tree83b1df588ba8154d28a99d7c1ac3ffc6bac764bc
parent32411daa670e57150d6a5c54593305ddd09693d1 (diff)
HD Cursor
-rw-r--r--assets/opensb/cursors/cursors.frames.patch5
-rw-r--r--assets/opensb/cursors/cursors.pngbin0 -> 2083 bytes
-rw-r--r--assets/opensb/cursors/inspect.cursor.patch3
-rw-r--r--assets/opensb/cursors/link.cursor.patch3
-rw-r--r--assets/opensb/cursors/pointer.cursor.patch3
-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
10 files changed, 44 insertions, 14 deletions
diff --git a/assets/opensb/cursors/cursors.frames.patch b/assets/opensb/cursors/cursors.frames.patch
new file mode 100644
index 0000000..c2f200a
--- /dev/null
+++ b/assets/opensb/cursors/cursors.frames.patch
@@ -0,0 +1,5 @@
+{
+ "frameGrid" : {
+ "size" : [32, 32]
+ }
+} \ No newline at end of file
diff --git a/assets/opensb/cursors/cursors.png b/assets/opensb/cursors/cursors.png
new file mode 100644
index 0000000..6b30ce1
--- /dev/null
+++ b/assets/opensb/cursors/cursors.png
Binary files differ
diff --git a/assets/opensb/cursors/inspect.cursor.patch b/assets/opensb/cursors/inspect.cursor.patch
new file mode 100644
index 0000000..7ca7bef
--- /dev/null
+++ b/assets/opensb/cursors/inspect.cursor.patch
@@ -0,0 +1,3 @@
+{
+ "scale" : 1
+} \ No newline at end of file
diff --git a/assets/opensb/cursors/link.cursor.patch b/assets/opensb/cursors/link.cursor.patch
new file mode 100644
index 0000000..7ca7bef
--- /dev/null
+++ b/assets/opensb/cursors/link.cursor.patch
@@ -0,0 +1,3 @@
+{
+ "scale" : 1
+} \ No newline at end of file
diff --git a/assets/opensb/cursors/pointer.cursor.patch b/assets/opensb/cursors/pointer.cursor.patch
new file mode 100644
index 0000000..7ca7bef
--- /dev/null
+++ b/assets/opensb/cursors/pointer.cursor.patch
@@ -0,0 +1,3 @@
+{
+ "scale" : 1
+} \ No newline at end of file
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 {