summaryrefslogtreecommitdiff
path: root/src/net/tmwa
diff options
context:
space:
mode:
authorJared Adams <jaxad0127@gmail.com>2010-08-04 22:22:40 -0600
committerJared Adams <jaxad0127@gmail.com>2010-08-05 01:04:58 -0600
commitdd1463241c00f38de5855b9e9869b773f683373f (patch)
treea5ceea8ccfded6f48214021bc7481a98b81abebc /src/net/tmwa
parent154ea41225505eee0c77652a04738d845a2e93cd (diff)
downloadmana-dd1463241c00f38de5855b9e9869b773f683373f.tar.gz
mana-dd1463241c00f38de5855b9e9869b773f683373f.tar.bz2
mana-dd1463241c00f38de5855b9e9869b773f683373f.tar.xz
mana-dd1463241c00f38de5855b9e9869b773f683373f.zip
Have Being manage speech creation and add permissions to events
The Being and Player Chat events now have the precomuted permissions for SPEECH_LOG and SPEECH_FLOAT. The Being class now acts on those events to show speech (if SPEECH_FLOAT is present). ChatWindow now checks for the SPEECH_LOG permission. Reviewed-by: Freeyorp
Diffstat (limited to 'src/net/tmwa')
-rw-r--r--src/net/tmwa/chathandler.cpp42
1 files changed, 24 insertions, 18 deletions
diff --git a/src/net/tmwa/chathandler.cpp b/src/net/tmwa/chathandler.cpp
index b3400528..a5d7f337 100644
--- a/src/net/tmwa/chathandler.cpp
+++ b/src/net/tmwa/chathandler.cpp
@@ -155,28 +155,33 @@ void ChatHandler::handleMessage(Net::MessageIn &msg)
chatMsg.erase(0, pos + 3);
}
+ int perms;
+
+ if (being->getType() == Being::PLAYER)
+ {
+ perms = player_relations.checkPermissionSilently(sender_name,
+ PlayerRelation::SPEECH_LOG | PlayerRelation::SPEECH_FLOAT);
+ }
+ else
+ {
+ perms = player_relations.getDefault()
+ & (PlayerRelation::SPEECH_LOG
+ | PlayerRelation::SPEECH_FLOAT);
+ }
+
trim(chatMsg);
std::string reducedMessage = chatMsg;
chatMsg = removeColors(sender_name) + " : " + reducedMessage;
- // We use getIgnorePlayer instead of ignoringPlayer here because ignorePlayer' side
- // effects are triggered right below for Being::IGNORE_SPEECH_FLOAT.
- if (player_relations.checkPermissionSilently(sender_name, PlayerRelation::SPEECH_LOG))
- {
- Mana::Event event("Being");
- event.setString("message", chatMsg);
- event.setString("text", reducedMessage);
- event.setString("nick", sender_name);
- event.setInt("beingId", beingId);
- Mana::EventManager::trigger("Chat", event);
- }
+ Mana::Event event("Being");
+ event.setString("message", chatMsg);
+ event.setString("text", reducedMessage);
+ event.setString("nick", sender_name);
+ event.setInt("beingId", beingId);
+ event.setInt("permissions", perms);
+ Mana::EventManager::trigger("Chat", event);
- if (player_relations.hasPermission(sender_name,
- PlayerRelation::SPEECH_FLOAT))
- {
- being->setSpeech(chatMsg, SPEECH_TIME);
- }
break;
}
@@ -205,9 +210,10 @@ void ChatHandler::handleMessage(Net::MessageIn &msg)
event.setString("text", chatMsg);
event.setString("nick", player_node->getName());
event.setInt("beingId", player_node->getId());
+ event.setInt("permissions", player_relations.getDefault()
+ & (PlayerRelation::SPEECH_LOG
+ | PlayerRelation::SPEECH_FLOAT));
Mana::EventManager::trigger("Chat", event);
-
- player_node->setSpeech(chatMsg, SPEECH_TIME);
}
else
{