diff options
Diffstat (limited to 'src/chat-server/guild.cpp')
-rw-r--r-- | src/chat-server/guild.cpp | 77 |
1 files changed, 72 insertions, 5 deletions
diff --git a/src/chat-server/guild.cpp b/src/chat-server/guild.cpp index 7a2a43d9..3110b05f 100644 --- a/src/chat-server/guild.cpp +++ b/src/chat-server/guild.cpp @@ -24,6 +24,26 @@ #include <algorithm> +GuildMember::GuildMember(std::string name) : + mName(name), + mPermissions(0) +{ +} + +std::string GuildMember::getName() const +{ + return mName; +} + +void GuildMember::setPermission(int perm) +{ + mPermissions = perm; +} + +int GuildMember::getPermissions() const +{ + return mPermissions; +} Guild::Guild(const std::string &name) : mName(name) @@ -36,18 +56,32 @@ Guild::~Guild() void Guild::addMember(const std::string &playerName) { - mMembers.push_back(playerName); + GuildMember *member = new GuildMember(playerName); + mMembers.push_back(member); + if (checkInvited(playerName)) + { + mInvited.remove(playerName); + } } void Guild::removeMember(const std::string &playerName) { - mMembers.remove(playerName); + GuildMember *member = getMember(playerName); + if (member) + mMembers.remove(member); } bool Guild::checkLeader(const std::string &playerName) { - std::string leaderName = mMembers.front(); - return leaderName == playerName; + // check that guild member permissions is set to LEADER + int leader = 0; + GuildMember *member = getMember(playerName); + if (member) + leader = member->getPermissions(); + if (leader == GuildMember::LEADER) + return true; + return false; + } bool Guild::checkInvited(const std::string &playerName) @@ -62,5 +96,38 @@ void Guild::addInvited(const std::string &playerName) bool Guild::checkInGuild(const std::string &playerName) { - return std::find(mMembers.begin(), mMembers.end(), playerName) != mMembers.end(); + GuildMember *member = getMember(playerName); + return member ? true : false; +} + +GuildMember* Guild::getMember(const std::string &playerName) +{ + std::list<GuildMember*>::iterator itr = mMembers.begin(), itr_end = mMembers.end(); + while (itr != itr_end) + { + if ((*itr)->getName() == playerName) + { + return (*itr); + } + + ++itr; + } + + return NULL; +} + +bool Guild::canInvite(const std::string &playerName) +{ + // Guild members with permissions above NONE can invite + // Check that guild members permissions are not NONE + GuildMember *member = getMember(playerName); + if (member->getPermissions() > GuildMember::NONE) + return true; + return false; +} + +int Guild::getUserPermissions(const std::string &playerName) +{ + GuildMember *member = getMember(playerName); + return member->getPermissions(); } |