diff options
author | David Athay <ko2fan@gmail.com> | 2008-07-07 14:07:11 +0000 |
---|---|---|
committer | David Athay <ko2fan@gmail.com> | 2008-07-07 14:07:11 +0000 |
commit | 833586f7e321443f86d4b857e762786a3ece440a (patch) | |
tree | 88fe682c734063fefdafc3852501f94813700165 /src/chat-server | |
parent | 6d073b16ac9cfaf431baa6ddef7554fa65a99d4e (diff) | |
download | manaserv-833586f7e321443f86d4b857e762786a3ece440a.tar.gz manaserv-833586f7e321443f86d4b857e762786a3ece440a.tar.bz2 manaserv-833586f7e321443f86d4b857e762786a3ece440a.tar.xz manaserv-833586f7e321443f86d4b857e762786a3ece440a.zip |
Added party support between account and game servers.
Diffstat (limited to 'src/chat-server')
-rw-r--r-- | src/chat-server/chathandler.cpp | 26 | ||||
-rw-r--r-- | src/chat-server/party.cpp | 3 | ||||
-rw-r--r-- | src/chat-server/party.hpp | 6 |
3 files changed, 31 insertions, 4 deletions
diff --git a/src/chat-server/chathandler.cpp b/src/chat-server/chathandler.cpp index 2523445c..189fbe57 100644 --- a/src/chat-server/chathandler.cpp +++ b/src/chat-server/chathandler.cpp @@ -25,6 +25,8 @@ #include <algorithm> #include "defines.h" +#include "account-server/dalstorage.hpp" +#include "account-server/serverhandler.hpp" #include "chat-server/guild.hpp" #include "chat-server/guildmanager.hpp" #include "chat-server/chatchannelmanager.hpp" @@ -49,6 +51,12 @@ void registerChatClient(const std::string &token, chatHandler->mTokenCollector.addPendingConnect(token, p); } +void updateInfo(ChatClient *client, int partyId) +{ + Character *character = storage->getCharacter(client->characterName); + GameServerHandler::sendPartyChange(character, partyId); +} + ChatHandler::ChatHandler(): mTokenCollector(this) { @@ -340,7 +348,7 @@ ChatHandler::handleRegisterChannelMessage(ChatClient &client, MessageIn &msg) { reply.writeByte(ERRMSG_INVALID_ARGUMENT); } - else if (guildManager->doesExist(channelName) || + else if (guildManager->doesExist(channelName) || chatChannelManager->channelExists(channelName)) { // Channel already exists @@ -516,7 +524,7 @@ ChatHandler::handleTopicChange(ChatClient &client, MessageIn &msg) short channelId = msg.readShort(); std::string topic = msg.readString(); ChatChannel *channel = chatChannelManager->getChannel(channelId); - + if(!guildManager->doesExist(channel->getName())) { chatChannelManager->setChannelTopic(channelId, topic); @@ -670,7 +678,7 @@ ChatHandler::handleGuildRetrieveMembers(ChatClient &client, MessageIn &msg) { reply.writeByte(ERRMSG_OK); reply.writeShort(guildId); - for(std::list<std::string>::const_iterator itr = guild->getMembers()->begin(); + for(std::list<std::string>::const_iterator itr = guild->getMembers()->begin(); itr != guild->getMembers()->end(); ++itr) { reply.writeString((*itr)); @@ -863,7 +871,7 @@ void ChatHandler::sendGuildListUpdate(const std::string &guildName, std::map<std::string, ChatClient*>::const_iterator chr; std::list<std::string> *members = guild->getMembers(); - for (std::list<std::string>::const_iterator itr = members->begin(); + for (std::list<std::string>::const_iterator itr = members->begin(); itr != members->end(); ++itr) { chr = mPlayerMap.find((*itr)); @@ -887,6 +895,8 @@ bool ChatHandler::handlePartyJoin(const std::string &invited, const std::string if (!c1->party) { c1->party = new Party(); + // tell game server to update info + updateInfo(c1, c1->party->getId()); } // add inviter to the party @@ -903,6 +913,9 @@ bool ChatHandler::handlePartyJoin(const std::string &invited, const std::string out.writeString(invited); out.writeByte(ERRMSG_OK); c1->send(out); + + // tell game server to update info + updateInfo(c2, c2->party->getId()); return true; } } @@ -958,6 +971,7 @@ void ChatHandler::handlePartyAcceptInvite(ChatClient &client, MessageIn &msg) { out.writeByte(ERRMSG_FAILURE); } + client.send(out); } @@ -967,6 +981,9 @@ void ChatHandler::handlePartyQuit(ChatClient &client) MessageOut out(CPMSG_PARTY_QUIT_RESPONSE); out.writeByte(ERRMSG_OK); client.send(out); + + // tell game server to update info + updateInfo(&client, 0); } void ChatHandler::removeUserFromParty(ChatClient &client) @@ -974,6 +991,7 @@ void ChatHandler::removeUserFromParty(ChatClient &client) if (client.party) { client.party->removeUser(client.characterName); + // if theres less than 1 member left, remove the party if (client.party->numUsers() < 1) { delete client.party; diff --git a/src/chat-server/party.cpp b/src/chat-server/party.cpp index f9c9b174..ff756881 100644 --- a/src/chat-server/party.cpp +++ b/src/chat-server/party.cpp @@ -27,6 +27,9 @@ Party::Party() { + static int id = 0; + id++; + mId = id; } void Party::addUser(const std::string &name) diff --git a/src/chat-server/party.hpp b/src/chat-server/party.hpp index e865f1ce..7d912abf 100644 --- a/src/chat-server/party.hpp +++ b/src/chat-server/party.hpp @@ -53,8 +53,14 @@ public: */ unsigned int numUsers() { return mUsers.size(); } + /** + * Return the party id + */ + unsigned int getId() { return mId; } + private: PartyUsers mUsers; + unsigned int mId; }; #endif |