summaryrefslogtreecommitdiffstats
path: root/src/chat-server/chathandler.cpp
diff options
context:
space:
mode:
authorDavid Athay <ko2fan@gmail.com>2008-07-22 13:43:58 +0000
committerDavid Athay <ko2fan@gmail.com>2008-07-22 13:43:58 +0000
commit8be5590e63235f10bc037ab4c05d589e4df6a9fe (patch)
tree90006fb0243917c7db81d3311841f4a6e3113e6f /src/chat-server/chathandler.cpp
parent55be8c761bc2f5658aba9e7775461fc562f6d21c (diff)
downloadmanaserv-8be5590e63235f10bc037ab4c05d589e4df6a9fe.tar.gz
manaserv-8be5590e63235f10bc037ab4c05d589e4df6a9fe.tar.xz
manaserv-8be5590e63235f10bc037ab4c05d589e4df6a9fe.zip
Add permissions to guild members
Diffstat (limited to 'src/chat-server/chathandler.cpp')
-rw-r--r--src/chat-server/chathandler.cpp33
1 files changed, 16 insertions, 17 deletions
diff --git a/src/chat-server/chathandler.cpp b/src/chat-server/chathandler.cpp
index f2c48e3..946be36 100644
--- a/src/chat-server/chathandler.cpp
+++ b/src/chat-server/chathandler.cpp
@@ -326,12 +326,12 @@ void ChatHandler::handleEnterChannelMessage(ChatClient &client, MessageIn &msg)
ChatChannel *channel = NULL;
if(chatChannelManager->channelExists(channelName) ||
chatChannelManager->tryNewPublicChannel(channelName))
- {
+ {
channel = chatChannelManager->getChannel(channelName);
}
if (!channel)
- {
+ {
reply.writeByte(ERRMSG_INVALID_ARGUMENT);
}
else if (!channel->getPassword().empty() &&
@@ -532,7 +532,7 @@ ChatHandler::handleGuildInvitation(ChatClient &client, MessageIn &msg)
{
// check permissions of inviter, and that they arent inviting themself,
// and arent someone already in the guild
- if (guild->checkLeader(client.characterName) &&
+ if (guild->canInvite(client.characterName) &&
(client.characterName != character) &&
!guild->checkInGuild(character))
{
@@ -615,11 +615,11 @@ ChatHandler::handleGuildRetrieveMembers(ChatClient &client, MessageIn &msg)
{
reply.writeByte(ERRMSG_OK);
reply.writeShort(guildId);
- for(std::list<std::string>::const_iterator itr = guild->getMembers()->begin();
- itr != guild->getMembers()->end(); ++itr)
+ for(std::list<GuildMember*>::const_iterator itr = guild->getMembers().begin();
+ itr != guild->getMembers().end(); ++itr)
{
- reply.writeString((*itr));
- reply.writeByte(mPlayerMap.find((*itr)) != mPlayerMap.end());
+ reply.writeString((*itr)->getName());
+ reply.writeByte(mPlayerMap.find((*itr)->getName()) != mPlayerMap.end());
}
}
}
@@ -655,6 +655,8 @@ ChatHandler::handleGuildQuit(ChatClient &client, MessageIn &msg)
}
else
{
+ // guild manager checks if the member is the last in the guild
+ // and removes the guild if so
guildManager->removeGuildMember(guild, client.characterName);
sendGuildListUpdate(guild->getName(), client.characterName, GUILD_EVENT_LEAVING_PLAYER);
}
@@ -737,15 +739,12 @@ void ChatHandler::sendGuildRejoin(ChatClient &client)
for (unsigned int i = 0; i != guilds.size(); ++i)
{
Guild *guild = guilds[i];
- short leader = 0;
+ short permissions;
if (!guild)
{
return;
}
- if (guild->checkLeader(client.characterName))
- {
- leader = 1;
- }
+ permissions = guild->getUserPermissions(client.characterName);
std::string guildName = guild->getName();
@@ -753,7 +752,7 @@ void ChatHandler::sendGuildRejoin(ChatClient &client)
MessageOut msg(CPMSG_GUILD_REJOIN);
msg.writeString(guildName);
msg.writeShort(guild->getId());
- msg.writeByte(leader);
+ msg.writeShort(permissions);
// get channel id of guild channel
ChatChannel *channel = joinGuildChannel(guildName, client);
@@ -806,12 +805,12 @@ void ChatHandler::sendGuildListUpdate(const std::string &guildName,
msg.writeString(characterName);
msg.writeByte(eventId);
std::map<std::string, ChatClient*>::const_iterator chr;
- std::list<std::string> *members = guild->getMembers();
+ std::list<GuildMember*> members = guild->getMembers();
- for (std::list<std::string>::const_iterator itr = members->begin();
- itr != members->end(); ++itr)
+ for (std::list<GuildMember*>::const_iterator itr = members.begin();
+ itr != members.end(); ++itr)
{
- chr = mPlayerMap.find((*itr));
+ chr = mPlayerMap.find((*itr)->getName());
if (chr != mPlayerMap.end())
{
chr->second->send(msg);