summaryrefslogtreecommitdiff
path: root/src/chat-server/guild.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/chat-server/guild.cpp')
-rw-r--r--src/chat-server/guild.cpp77
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();
}