summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorDavid Athay <ko2fan@gmail.com>2008-04-03 16:41:10 +0000
committerDavid Athay <ko2fan@gmail.com>2008-04-03 16:41:10 +0000
commitdcca185bee0acac9dfc3f6d62a8f7252c2c69c6c (patch)
tree1a4a9ff138d46ff6ab04706814a53e29a4cb4144 /src
parent438ead13e1132da8ed9e5c3afe0ccc9f8961d787 (diff)
downloadmanaserv-dcca185bee0acac9dfc3f6d62a8f7252c2c69c6c.tar.gz
manaserv-dcca185bee0acac9dfc3f6d62a8f7252c2c69c6c.tar.bz2
manaserv-dcca185bee0acac9dfc3f6d62a8f7252c2c69c6c.tar.xz
manaserv-dcca185bee0acac9dfc3f6d62a8f7252c2c69c6c.zip
Fixed accepting guild invites, and added updating the guild member list when player joins
Diffstat (limited to 'src')
-rw-r--r--src/chat-server/chathandler.cpp29
-rw-r--r--src/chat-server/chathandler.hpp6
-rw-r--r--src/defines.h7
3 files changed, 38 insertions, 4 deletions
diff --git a/src/chat-server/chathandler.cpp b/src/chat-server/chathandler.cpp
index 3d2d8742..dd56a383 100644
--- a/src/chat-server/chathandler.cpp
+++ b/src/chat-server/chathandler.cpp
@@ -669,8 +669,8 @@ ChatHandler::handleGuildAcceptInvite(ChatClient &client, MessageIn &msg)
{
guild->addMember(client.characterName);
reply.writeByte(ERRMSG_OK);
- reply.writeShort(guild->getId());
reply.writeString(guild->getName());
+ reply.writeShort(guild->getId());
reply.writeByte(false);
short id = joinGuildChannel(guild->getName(), client);
@@ -881,7 +881,34 @@ int ChatHandler::joinGuildChannel(const std::string &guildName, ChatClient &clie
// in the channel.
warnUsersAboutPlayerEventInChat(channel, client.characterName,
CHAT_EVENT_NEW_PLAYER);
+
+ sendGuildListUpdate(guildName, client.characterName);
}
return channelId;
}
+
+void ChatHandler::sendGuildListUpdate(const std::string &guildName,
+ const std::string &characterName)
+{
+ Guild *guild = guildManager->findByName(guildName);
+ if (guild)
+ {
+ MessageOut msg(CPMSG_GUILD_UPDATE_LIST);
+
+ msg.writeShort(guild->getId());
+ msg.writeString(characterName);
+
+ // TODO: This should get a list of all members
+ // and iterate through them
+ std::map<std::string, ChatClient*>::iterator itr;
+ for (int i = 0; i < guild->totalMembers(); ++i)
+ {
+ itr = mPlayerMap.find(guild->getMember(i));
+ if (itr != mPlayerMap.end())
+ {
+ itr->second->send(msg);
+ }
+ }
+ }
+}
diff --git a/src/chat-server/chathandler.hpp b/src/chat-server/chathandler.hpp
index c5d225fd..32197057 100644
--- a/src/chat-server/chathandler.hpp
+++ b/src/chat-server/chathandler.hpp
@@ -126,6 +126,12 @@ class ChatHandler : public ConnectionHandler
const std::string &inviterName,
const std::string &guildName);
+ /**
+ * Send the new list of guild members
+ */
+ void sendGuildListUpdate(const std::string &guildName,
+ const std::string &characterName);
+
private:
/**
* Deal with command messages.
diff --git a/src/defines.h b/src/defines.h
index 4a78fa4d..1a19abd5 100644
--- a/src/defines.h
+++ b/src/defines.h
@@ -189,18 +189,19 @@ enum {
// Guild
PCMSG_GUILD_CREATE = 0x0350, // S name
- CPMSG_GUILD_CREATE_RESPONSE = 0x0351, // B error, W id, S name
+ CPMSG_GUILD_CREATE_RESPONSE = 0x0351, // B error, W guild, B rights, W channel
PCMSG_GUILD_INVITE = 0x0352, // W id, S name
CPMSG_GUILD_INVITE_RESPONSE = 0x0353, // B error
PCMSG_GUILD_ACCEPT = 0x0354, // W id
- CPMSG_GUILD_ACCEPT_RESPONSE = 0x0355, // B error, W id, S name, W leader
+ CPMSG_GUILD_ACCEPT_RESPONSE = 0x0355, // B error, W guild, B rights, W channel
PCMSG_GUILD_GET_MEMBERS = 0x0356, // W id
CPMSG_GUILD_GET_MEMBERS_RESPONSE = 0x0357, // S names
+ CPMSG_GUILD_UPDATE_LIST = 0x0358, // W id, S name
PCMSG_GUILD_QUIT = 0x0360, // W id
CPMSG_GUILD_QUIT_RESPONSE = 0x0361, // B error
CPMSG_GUILD_INVITED = 0x0370, // S char name, S guild name, W id
- CPMSG_GUILD_REJOIN = 0x0371, // S name, W id, W rights
+ CPMSG_GUILD_REJOIN = 0x0371, // S name, W guild, B rights, W channel
// Chat
CPMSG_ERROR = 0x0401, // B error