From fe39570810969993f51a0ff6045d0a5d4397a5e5 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Mon, 23 May 2011 01:51:17 +0300 Subject: Show speach messages variable time, depend on message size. --- src/being.cpp | 6 ++++++ src/being.h | 5 +++-- src/map.cpp | 10 +++++----- src/net/manaserv/chathandler.cpp | 2 +- src/net/tmwa/chathandler.cpp | 4 ++-- src/playerrelations.cpp | 2 +- 6 files changed, 18 insertions(+), 11 deletions(-) (limited to 'src') diff --git a/src/being.cpp b/src/being.cpp index df698cf30..b995338a4 100644 --- a/src/being.cpp +++ b/src/being.cpp @@ -447,6 +447,12 @@ void Being::setSpeech(const std::string &text, int time) if (mSpeech.length() < 1) return; + if (!time && mSpeech.size() < 200) + time = SPEECH_TIME - 300 + (3 * mSpeech.size()); + + if (time < SPEECH_MIN_TIME) + time = SPEECH_MIN_TIME; + // Check for links std::string::size_type start = mSpeech.find('['); std::string::size_type end = mSpeech.find(']', start); diff --git a/src/being.h b/src/being.h index 91cafa69a..04cee8bcc 100644 --- a/src/being.h +++ b/src/being.h @@ -50,7 +50,8 @@ #define STATUS_EFFECTS 32 #define SPEECH_TIME 500 -#define SPEECH_MAX_TIME 1000 +#define SPEECH_MIN_TIME 200 +#define SPEECH_MAX_TIME 800 class AnimatedSprite; class BeingCacheEntry; @@ -239,7 +240,7 @@ class Being : public ActorSprite, public ConfigListener * @param text The text that should appear. * @param time The amount of time the text should stay in milliseconds. */ - void setSpeech(const std::string &text, int time = 500); + void setSpeech(const std::string &text, int time = 0); /** * Puts a damage bubble above this being. diff --git a/src/map.cpp b/src/map.cpp index e9ce78bd0..87e0ccbc6 100644 --- a/src/map.cpp +++ b/src/map.cpp @@ -1488,19 +1488,19 @@ void Map::setPvpMode(int mode) switch (mPvp) { case 0: - player_node->setSpeech("pvp off, gvg off", SPEECH_TIME); + player_node->setSpeech("pvp off, gvg off"); break; case 1: - player_node->setSpeech("pvp on", SPEECH_TIME); + player_node->setSpeech("pvp on"); break; case 2: - player_node->setSpeech("gvg on", SPEECH_TIME); + player_node->setSpeech("gvg on"); break; case 3: - player_node->setSpeech("pvp on, gvg on", SPEECH_TIME); + player_node->setSpeech("pvp on, gvg on"); break; default: - player_node->setSpeech("unknown pvp", SPEECH_TIME); + player_node->setSpeech("unknown pvp"); break; } } diff --git a/src/net/manaserv/chathandler.cpp b/src/net/manaserv/chathandler.cpp index bdb903fe1..9fc85be2d 100644 --- a/src/net/manaserv/chathandler.cpp +++ b/src/net/manaserv/chathandler.cpp @@ -164,7 +164,7 @@ void ChatHandler::handleGameChatMessage(Net::MessageIn &msg) if (being) { mes = being->getName() + " : " + chatMsg; - being->setSpeech(chatMsg, SPEECH_TIME); + being->setSpeech(chatMsg); } else mes = "Unknown : " + chatMsg; diff --git a/src/net/tmwa/chathandler.cpp b/src/net/tmwa/chathandler.cpp index d8a842003..3a3b45a3c 100644 --- a/src/net/tmwa/chathandler.cpp +++ b/src/net/tmwa/chathandler.cpp @@ -278,7 +278,7 @@ void ChatHandler::handleMessage(Net::MessageIn &msg) if (player_relations.hasPermission(sender_name, PlayerRelation::SPEECH_FLOAT)) { - being->setSpeech(chatMsg, SPEECH_TIME); + being->setSpeech(chatMsg); } break; } @@ -315,7 +315,7 @@ void ChatHandler::handleMessage(Net::MessageIn &msg) trim(chatMsg); if (player_node) - player_node->setSpeech(chatMsg, SPEECH_TIME); + player_node->setSpeech(chatMsg); } else if (localChatTab) { diff --git a/src/playerrelations.cpp b/src/playerrelations.cpp index ae953cd75..4b40eff33 100644 --- a/src/playerrelations.cpp +++ b/src/playerrelations.cpp @@ -425,7 +425,7 @@ public: return; logger->log("ignoring: " + being->getName()); - being->setSpeech("...", 500); + being->setSpeech("..."); } }; -- cgit v1.2.3-60-g2f50