From 861fcef3203ffe32c3d8e9b62aa79e2a54934c09 Mon Sep 17 00:00:00 2001 From: David Athay Date: Tue, 4 Nov 2008 17:07:58 +0000 Subject: Added notifiying party members when a player joins or leaves the party. --- src/chat-server/chathandler.cpp | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) (limited to 'src/chat-server/chathandler.cpp') 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::iterator itr; + std::map::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::iterator itr; + std::map::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::iterator itr; -- cgit v1.2.3-60-g2f50