From 564463fa017e39a0c364300e13791f1a8608dc5d Mon Sep 17 00:00:00 2001 From: Eduardo Bart Date: Thu, 26 Jul 2012 19:56:46 -0300 Subject: [PATCH] Minimize talk messages spam on screen --- src/otclient/statictext.cpp | 13 ++++++++----- src/otclient/statictext.h | 4 ++-- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/src/otclient/statictext.cpp b/src/otclient/statictext.cpp index fe92e908..33be6fa7 100644 --- a/src/otclient/statictext.cpp +++ b/src/otclient/statictext.cpp @@ -66,7 +66,11 @@ bool StaticText::addMessage(const std::string& name, Otc::MessageMode mode, cons m_updateEvent = nullptr; } - m_messages.push_back(text); + int delay = std::max(Otc::STATIC_DURATION_PER_CHARACTER * text.length(), Otc::MIN_STATIC_TEXT_DURATION); + if(isYell()) + delay *= 2; + + m_messages.push_back(std::make_pair(text, g_clock.millis() + delay)); compose(); if(!m_updateEvent) @@ -90,8 +94,7 @@ void StaticText::update() void StaticText::scheduleUpdate() { - int len = m_messages.front().length(); - int delay = std::max(Otc::STATIC_DURATION_PER_CHARACTER * len, (int)Otc::MIN_STATIC_TEXT_DURATION); + int delay = std::max(m_messages.front().second - g_clock.millis(), 0); auto self = asStaticText(); m_updateEvent = g_dispatcher.scheduleEvent([self]() { @@ -117,7 +120,7 @@ void StaticText::compose() text += m_name; text += " yells:\n"; m_color = Color(239, 239, 0); - } else if(m_mode == Otc::MessageMonsterSay || m_mode == Otc::MessageMonsterYell) { + } else if(m_mode == Otc::MessageMonsterSay || m_mode == Otc::MessageMonsterYell || m_mode == Otc::MessageSpell) { m_color = Color(254, 101, 0); } else if(m_mode == Otc::MessageNpcFrom) { text += m_name; @@ -128,7 +131,7 @@ void StaticText::compose() } for(uint i = 0; i < m_messages.size(); ++i) { - text += m_messages[i]; + text += m_messages[i].first; if(i < m_messages.size() - 1) text += "\n"; diff --git a/src/otclient/statictext.h b/src/otclient/statictext.h index 0bf62fbf..4680112a 100644 --- a/src/otclient/statictext.h +++ b/src/otclient/statictext.h @@ -37,7 +37,7 @@ public: std::string getName() { return m_name; } Otc::MessageMode getMessageMode() { return m_mode; } - std::string getFirstMessage() { return m_messages[0]; } + std::string getFirstMessage() { return m_messages[0].first; } bool isYell() { return m_mode == Otc::MessageYell || m_mode == Otc::MessageMonsterYell; } @@ -52,7 +52,7 @@ private: void compose(); Boolean m_yell; - std::deque m_messages; + std::deque> m_messages; std::string m_name; Otc::MessageMode m_mode; Color m_color;