summaryrefslogtreecommitdiff
path: root/src/chat-server/chathandler.cpp
diff options
context:
space:
mode:
authorDavid Athay <ko2fan@gmail.com>2008-11-04 17:07:58 +0000
committerDavid Athay <ko2fan@gmail.com>2008-11-04 17:07:58 +0000
commit861fcef3203ffe32c3d8e9b62aa79e2a54934c09 (patch)
treed3a3f8296b479931fc51f1a6a015179ecb2397f7 /src/chat-server/chathandler.cpp
parent450ef8ede6ff81f09fcadc3683ec7659c994ae83 (diff)
downloadmanaserv-861fcef3203ffe32c3d8e9b62aa79e2a54934c09.tar.gz
manaserv-861fcef3203ffe32c3d8e9b62aa79e2a54934c09.tar.bz2
manaserv-861fcef3203ffe32c3d8e9b62aa79e2a54934c09.tar.xz
manaserv-861fcef3203ffe32c3d8e9b62aa79e2a54934c09.zip
Added notifiying party members when a player joins or leaves the party.
Diffstat (limited to 'src/chat-server/chathandler.cpp')
-rw-r--r--src/chat-server/chathandler.cpp38
1 files changed, 38 insertions, 0 deletions
diff --git a/src/chat-server/chathandler.cpp b/src/chat-server/chathandler.cpp
index 2cffbc2a..f0e97de9 100644
--- a/src/chat-server/chathandler.cpp
+++ b/src/chat-server/chathandler.cpp
@@ -983,6 +983,9 @@ bool ChatHandler::handlePartyJoin(const std::string &invited, const std::string
out.writeByte(ERRMSG_OK);
c1->send(out);
+ // tell everyone a player joined
+ informPartyMemberJoined(*c2);
+
// tell game server to update info
updateInfo(c2, c2->party->getId());
return true;
@@ -1060,6 +1063,8 @@ void ChatHandler::removeUserFromParty(ChatClient &client)
if (client.party)
{
client.party->removeUser(client.characterName);
+ informPartyMemberQuit(client);
+
// if theres less than 1 member left, remove the party
if (client.party->numUsers() < 1)
{
@@ -1069,6 +1074,39 @@ void ChatHandler::removeUserFromParty(ChatClient &client)
}
}
+void ChatHandler::informPartyMemberQuit(ChatClient &client)
+{
+ std::map<std::string, ChatClient*>::iterator itr;
+ std::map<std::string, ChatClient*>::const_iterator itr_end = mPlayerMap.end();
+
+ for (itr = mPlayerMap.begin(); itr != itr_end; ++itr)
+ {
+ if (itr->second.party == client.party)
+ {
+ MessageOut out(CPMSG_PARTY_MEMBER_LEFT);
+ out.writeShort(client.characterId);
+ itr->second.send(out);
+ }
+ }
+}
+
+void ChatHandler::informPartyMemberJoined(ChatClient &client)
+{
+ std::map<std::string, ChatClient*>::iterator itr;
+ std::map<std::string, ChatClient*>::const_iterator itr_end = mPlayerMap.end();
+
+ for (itr = mPlayerMap.begin(); itr != itr_end; ++itr)
+ {
+ if (itr->second.party == client.party)
+ {
+ MessageOut out(CPMSG_PARTY_NEW_MEMBER);
+ out.writeShort(client.characterId);
+ out.writeString(client.characterName);
+ itr->second.send(out);
+ }
+ }
+}
+
ChatClient* ChatHandler::getClient(const std::string &name)
{
std::map<std::string, ChatClient*>::iterator itr;