summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog5
-rw-r--r--src/chat-server/chathandler.cpp18
-rw-r--r--src/chat-server/chathandler.hpp8
3 files changed, 30 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index 78a0da25..18d13064 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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);