diff options
Diffstat (limited to 'src/chat-server/guild.cpp')
-rw-r--r-- | src/chat-server/guild.cpp | 35 |
1 files changed, 21 insertions, 14 deletions
diff --git a/src/chat-server/guild.cpp b/src/chat-server/guild.cpp index 8ec2c8cc..47ace46e 100644 --- a/src/chat-server/guild.cpp +++ b/src/chat-server/guild.cpp @@ -19,6 +19,9 @@ */ #include "guild.h" + +#include "chat-server/guildmanager.h" + #include "common/defines.h" #include <algorithm> @@ -42,10 +45,7 @@ void Guild::addMember(int playerId, int permissions) // add new guild member to guild mMembers.push_back(member); - if (checkInvited(playerId)) - { - mInvited.remove(playerId); - } + mInvited.remove(playerId); } void Guild::removeMember(int playerId) @@ -53,10 +53,16 @@ void Guild::removeMember(int playerId) if (getOwner() == playerId) { // if the leader is leaving, assign next member as leader - std::list<GuildMember*>::iterator itr = mMembers.begin(); - ++itr; - if (itr != mMembers.end()) - setOwner((*itr)->mId); + for (std::list<GuildMember*>::iterator it = mMembers.begin(), + it_end = mMembers.end(); it != it_end; ++it) + { + GuildMember *member = *it; + if (member->mId != playerId) + { + setOwner(member->mId); + break; + } + } } GuildMember *member = getMember(playerId); if (member) @@ -80,11 +86,7 @@ int Guild::getOwner() const void Guild::setOwner(int playerId) { - GuildMember *member = getMember(playerId); - if (member) - { - member->mPermissions = GAL_OWNER; - } + guildManager->setUserRights(this, playerId, GAL_OWNER); } bool Guild::checkInvited(int playerId) const @@ -97,6 +99,11 @@ void Guild::addInvited(int playerId) mInvited.push_back(playerId); } +void Guild::removeInvited(int playerId) +{ + mInvited.remove(playerId); +} + bool Guild::checkInGuild(int playerId) const { return getMember(playerId) != 0; @@ -129,7 +136,7 @@ bool Guild::canInvite(int playerId) const int Guild::getUserPermissions(int playerId) const { GuildMember *member = getMember(playerId); - return member->mPermissions; + return member ? member->mPermissions : 0; } void Guild::setUserPermissions(int playerId, int level) |