diff options
author | David Athay <ko2fan@gmail.com> | 2008-11-04 17:07:58 +0000 |
---|---|---|
committer | David Athay <ko2fan@gmail.com> | 2008-11-04 17:07:58 +0000 |
commit | 861fcef3203ffe32c3d8e9b62aa79e2a54934c09 (patch) | |
tree | d3a3f8296b479931fc51f1a6a015179ecb2397f7 /src/chat-server/chathandler.cpp | |
parent | 450ef8ede6ff81f09fcadc3683ec7659c994ae83 (diff) | |
download | manaserv-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.cpp | 38 |
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; |