diff options
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | src/chat-server/chathandler.cpp | 18 | ||||
-rw-r--r-- | src/chat-server/chathandler.hpp | 8 |
3 files changed, 30 insertions, 1 deletions
@@ -1,3 +1,8 @@ +2008-04-17 David Athay <ko2fan@gmail.com> + + * src/chat-server/chathandler.hpp, src/chat-server/chathandler.cpp: + Added basic party support. + 2008-04-17 Yohann Ferreira <bertram@cegetel.net> * src/Makefile.am: Fixed compilation using automake. diff --git a/src/chat-server/chathandler.cpp b/src/chat-server/chathandler.cpp index b058e60d..9d146ad1 100644 --- a/src/chat-server/chathandler.cpp +++ b/src/chat-server/chathandler.cpp @@ -107,6 +107,9 @@ void ChatHandler::computerDisconnected(NetComputer *comp) // Remove the character from the player map mPlayerMap.erase(computer->characterName); + + // Remove user from party + removeUserFromParty(*computer); } delete computer; @@ -903,15 +906,30 @@ void ChatHandler::sendGuildListUpdate(const std::string &guildName, void ChatHandler::handlePartyCreation(ChatClient &client, MessageIn &msg) { + MessageOut out(CPMSG_PARTY_CREATE_RESPONSE); if (!client.party) { client.party = new Party(); client.party->addUser(client.characterName); + out.writeByte(ERRMSG_OK); + } + else + { + out.writeByte(ERRMSG_FAILURE); } + client.send(out); } void ChatHandler::handlePartyQuit(ChatClient &client, MessageIn &msg) { + removeUserFromParty(client); + MessageOut out(CPMSG_PARTY_QUIT_RESPONSE); + out.writeByte(ERRMSG_OK); + client.send(out); +} + +void ChatHandler::removeUserFromParty(ChatClient &client) +{ if (client.party) { client.party->removeUser(client.characterName); diff --git a/src/chat-server/chathandler.hpp b/src/chat-server/chathandler.hpp index c558326b..5ea3b969 100644 --- a/src/chat-server/chathandler.hpp +++ b/src/chat-server/chathandler.hpp @@ -232,12 +232,18 @@ class ChatHandler : public ConnectionHandler handlePartyCreation(ChatClient &client, MessageIn &msg); /** - * Deal with Announcement messages. + * Deal with leaving a party. */ void handlePartyQuit(ChatClient &client, MessageIn &msg); /** + * Remove user from party + */ + void + removeUserFromParty(ChatClient &client); + + /** * Tell the player to be more polite. */ void warnPlayerAboutBadWords(ChatClient &computer); |