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

summaryrefslogtreecommitdiff
path: root/source/frontend
diff options
context:
space:
mode:
Diffstat (limited to 'source/frontend')
-rw-r--r--source/frontend/StarChat.cpp19
-rw-r--r--source/frontend/StarChat.hpp2
-rw-r--r--source/frontend/StarWidgetLuaBindings.cpp4
3 files changed, 18 insertions, 7 deletions
diff --git a/source/frontend/StarChat.cpp b/source/frontend/StarChat.cpp
index b444ce4..b89bd4e 100644
--- a/source/frontend/StarChat.cpp
+++ b/source/frontend/StarChat.cpp
@@ -21,7 +21,9 @@ Chat::Chat(UniverseClientPtr client) : m_client(client) {
auto assets = Root::singleton().assets();
m_timeChatLastActive = Time::monotonicMilliseconds();
- m_fontSize = assets->json("/interface/chat/chat.config:config.font.baseSize").toInt();
+ auto fontConfig = assets->json("/interface/chat/chat.config:config.font");
+ m_fontSize = fontConfig.getInt("baseSize");
+ m_fontDirectives = fontConfig.queryString("directives", "");
m_chatLineHeight = assets->json("/interface/chat/chat.config:config.lineHeight").toFloat();
m_chatVisTime = assets->json("/interface/chat/chat.config:config.visTime").toFloat();
m_fadeRate = assets->json("/interface/chat/chat.config:config.fadeRate").toDouble();
@@ -69,6 +71,13 @@ Chat::Chat(UniverseClientPtr client) : m_client(client) {
m_say = fetchChild<LabelWidget>("say");
m_chatLog = fetchChild<CanvasWidget>("chatLog");
+ if (auto logPadding = fontConfig.optQuery("padding")) {
+ m_chatLogPadding = jsonToVec2I(logPadding.get());
+ m_chatLog->setSize(m_chatLog->size() + m_chatLogPadding * 2);
+ m_chatLog->setPosition(m_chatLog->position() - m_chatLogPadding);
+ }
+ else
+ m_chatLogPadding = Vec2I();
m_bottomButton = fetchChild<ButtonWidget>("bottomButton");
m_upButton = fetchChild<ButtonWidget>("upButton");
@@ -224,7 +233,7 @@ void Chat::renderImpl() {
m_say->setColor(fadeGreen);
m_chatLog->clear();
- Vec2I chatMin;
+ Vec2I chatMin = m_chatLogPadding;
int messageIndex = -m_historyOffset;
GuiContext& guiContext = GuiContext::singleton();
@@ -249,7 +258,7 @@ void Chat::renderImpl() {
float messageHeight = 0;
float lineHeightMargin = + ((m_chatLineHeight * m_fontSize) - m_fontSize);
- unsigned wrapWidth = m_chatLog->size()[0];
+ unsigned wrapWidth = m_chatLog->size()[0] - m_chatLogPadding[0];
if (message.portrait != "") {
TextPositioning tp = {Vec2F(chatMin + m_portraitTextOffset), HorizontalAnchor::LeftAnchor, VerticalAnchor::VMidAnchor, (wrapWidth - m_portraitTextOffset[0])};
@@ -262,13 +271,13 @@ void Chat::renderImpl() {
m_chatLog->drawImage(m_portraitBackground, Vec2F(imagePosition), 1.0f, fade);
m_chatLog->drawImage(message.portrait, Vec2F(imagePosition + m_portraitImageOffset), m_portraitScale, fade);
tp.pos += Vec2F(0, floor(messageHeight / 2));
- m_chatLog->drawText(messageString, tp, m_fontSize, fade, FontMode::Normal, m_chatLineHeight);
+ m_chatLog->drawText(messageString, tp, m_fontSize, fade, FontMode::Normal, m_chatLineHeight, m_fontDirectives);
} else {
TextPositioning tp = {Vec2F(chatMin), HorizontalAnchor::LeftAnchor, VerticalAnchor::BottomAnchor, wrapWidth};
messageHeight = guiContext.determineInterfaceTextSize(messageString, tp).size()[1] + lineHeightMargin;
- m_chatLog->drawText(messageString, tp, m_fontSize, fade, FontMode::Normal, m_chatLineHeight);
+ m_chatLog->drawText(messageString, tp, m_fontSize, fade, FontMode::Normal, m_chatLineHeight, m_fontDirectives);
}
chatMin[1] += ceil(messageHeight);
diff --git a/source/frontend/StarChat.hpp b/source/frontend/StarChat.hpp
index 4c0dae9..9c1f8f4 100644
--- a/source/frontend/StarChat.hpp
+++ b/source/frontend/StarChat.hpp
@@ -68,11 +68,13 @@ private:
float m_chatVisTime;
float m_fadeRate;
unsigned m_fontSize;
+ String m_fontDirectives;
float m_chatLineHeight;
unsigned m_chatHistoryLimit;
int m_historyOffset;
CanvasWidgetPtr m_chatLog;
+ Vec2I m_chatLogPadding;
ImageStretchWidgetPtr m_background;
int m_defaultHeight;
diff --git a/source/frontend/StarWidgetLuaBindings.cpp b/source/frontend/StarWidgetLuaBindings.cpp
index f9a8af5..eb81f51 100644
--- a/source/frontend/StarWidgetLuaBindings.cpp
+++ b/source/frontend/StarWidgetLuaBindings.cpp
@@ -78,8 +78,8 @@ struct LuaUserDataMethods<CanvasWidgetPtr> {
canvasWidget->drawTriangles(tris, color.value(Color::White).toRgba());
});
methods.registerMethod("drawText",
- [](CanvasWidgetPtr canvasWidget, String text, Json tp, unsigned fontSize, Maybe<Color> color) {
- canvasWidget->drawText(text, TextPositioning(tp), fontSize, color.value(Color::White).toRgba());
+ [](CanvasWidgetPtr canvasWidget, String text, Json tp, unsigned fontSize, Maybe<Color> color, Maybe<float> lineSpacing, Maybe<String> directives) {
+ canvasWidget->drawText(text, TextPositioning(tp), fontSize, color.value(Color::White).toRgba(), FontMode::Normal, lineSpacing.value(DefaultLineSpacing), directives.value(""));
});
return methods;