00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #include "guild.hpp"
00022 #include "defines.h"
00023
00024 #include <algorithm>
00025
00026 Guild::Guild(const std::string &name) :
00027 mName(name)
00028 {
00029 }
00030
00031 Guild::~Guild()
00032 {
00033 }
00034
00035 void Guild::addMember(int playerId, int permissions)
00036 {
00037
00038 GuildMember *member = new GuildMember();
00039 member->mId = playerId;
00040 member->mPermissions = permissions;
00041
00042
00043 mMembers.push_back(member);
00044
00045 if (checkInvited(playerId))
00046 {
00047 mInvited.remove(playerId);
00048 }
00049 }
00050
00051 void Guild::removeMember(int playerId)
00052 {
00053 if (getOwner() == playerId)
00054 {
00055
00056 std::list<GuildMember*>::iterator itr = mMembers.begin();
00057 ++itr;
00058 if (itr != mMembers.end())
00059 setOwner((*itr)->mId);
00060 }
00061 GuildMember *member = getMember(playerId);
00062 if (member)
00063 mMembers.remove(member);
00064 }
00065
00066 int Guild::getOwner()
00067 {
00068 std::list<GuildMember*>::iterator itr = mMembers.begin();
00069 std::list<GuildMember*>::iterator itr_end = mMembers.end();
00070
00071 while (itr != itr_end)
00072 {
00073 if ((*itr)->mPermissions == GAL_OWNER)
00074 {
00075 return (*itr)->mId;
00076 }
00077
00078 ++itr;
00079 }
00080
00081 return 0;
00082 }
00083
00084 void Guild::setOwner(int playerId)
00085 {
00086 GuildMember *member = getMember(playerId);
00087 if (member)
00088 {
00089 member->mPermissions = GAL_OWNER;
00090 }
00091 }
00092
00093 bool Guild::checkInvited(int playerId)
00094 {
00095 return std::find(mInvited.begin(), mInvited.end(), playerId) != mInvited.end();
00096 }
00097
00098 void Guild::addInvited(int playerId)
00099 {
00100 mInvited.push_back(playerId);
00101 }
00102
00103 bool Guild::checkInGuild(int playerId)
00104 {
00105 GuildMember *member = getMember(playerId);
00106 return member ? true : false;
00107 }
00108
00109 GuildMember* Guild::getMember(int playerId)
00110 {
00111 std::list<GuildMember*>::iterator itr = mMembers.begin(), itr_end = mMembers.end();
00112 while (itr != itr_end)
00113 {
00114 if ((*itr)->mId == playerId)
00115 {
00116 return (*itr);
00117 }
00118
00119 ++itr;
00120 }
00121
00122 return NULL;
00123 }
00124
00125 bool Guild::canInvite(int playerId)
00126 {
00127
00128
00129 GuildMember *member = getMember(playerId);
00130 if (member->mPermissions & GAL_INVITE)
00131 return true;
00132 return false;
00133 }
00134
00135 int Guild::getUserPermissions(int playerId)
00136 {
00137 GuildMember *member = getMember(playerId);
00138 return member->mPermissions;
00139 }
00140
00141 void Guild::setUserPermissions(int playerId, int level)
00142 {
00143 GuildMember *member = getMember(playerId);
00144 member->mPermissions = level;
00145 }