From d0f8aec244a0d71f67863f94cab4c5f84d93de22 Mon Sep 17 00:00:00 2001 From: Kae <80987908+Novaenia@users.noreply.github.com> Date: Wed, 24 Apr 2024 07:44:53 +1000 Subject: feat: unicode emoji support + other stuff --- source/frontend/StarChat.cpp | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) (limited to 'source/frontend/StarChat.cpp') diff --git a/source/frontend/StarChat.cpp b/source/frontend/StarChat.cpp index d780d23..bbb28c1 100644 --- a/source/frontend/StarChat.cpp +++ b/source/frontend/StarChat.cpp @@ -27,6 +27,7 @@ Chat::Chat(UniverseClientPtr client) : m_client(client) { m_chatVisTime = config.get("visTime").toFloat(); m_fadeRate = config.get("fadeRate").toDouble(); m_chatHistoryLimit = config.get("chatHistoryLimit").toInt(); + m_chatFormatString = config.getString("chatFormatString"); m_portraitTextOffset = jsonToVec2I(config.get("portraitTextOffset")); m_portraitImageOffset = jsonToVec2I(config.get("portraitImageOffset")); @@ -180,7 +181,7 @@ void Chat::addMessages(List const& messages, bool showPane) guiContext.setTextStyle(m_chatTextStyle); StringList lines; if (message.fromNick != "" && message.portrait == "") - lines = guiContext.wrapInterfaceText(strf("<{}> {}", message.fromNick, message.text), wrapWidth); + lines = guiContext.wrapInterfaceText(strf(m_chatFormatString.utf8Ptr(), message.fromNick, message.text), wrapWidth); else lines = guiContext.wrapInterfaceText(message.text, wrapWidth); @@ -203,7 +204,8 @@ void Chat::addMessages(List const& messages, bool showPane) show(); } - m_receivedMessages.resize(std::min((unsigned)m_receivedMessages.size(), m_chatHistoryLimit)); + if ((unsigned)m_receivedMessages.size() > m_chatHistoryLimit) + m_receivedMessages.resize(m_chatHistoryLimit); } void Chat::addHistory(String const& chat) { @@ -216,6 +218,13 @@ void Chat::addHistory(String const& chat) { m_client->playerStorage()->setMetadata("chatHistory", JsonArray::from(m_chatHistory)); } +void Chat::clear(size_t count) { + if (count > m_receivedMessages.size()) + m_receivedMessages.clear(); + else + m_receivedMessages.erase(m_receivedMessages.begin(), m_receivedMessages.begin() + count); +} + void Chat::renderImpl() { Pane::renderImpl(); if (m_textBox->hasFocus()) -- cgit v1.2.3