summaryrefslogtreecommitdiff
path: root/src/guild.cpp
diff options
context:
space:
mode:
authorPhilipp Sehmisch <mana@crushnet.org>2010-02-24 19:28:36 +0100
committerPhilipp Sehmisch <mana@crushnet.org>2010-02-24 19:28:36 +0100
commit48131e2ecfa4d52375d890dac80f9ab1ad45ccf0 (patch)
tree0c973f354d827880cdab7a8bab8fa1357e9f97ec /src/guild.cpp
parenta5e26a9b9a8cab9feeaaa175aa4883913c3ff9d3 (diff)
parentf6d50d0cbe12f8799e6fec844816defc8711df37 (diff)
downloadmana-client-48131e2ecfa4d52375d890dac80f9ab1ad45ccf0.tar.gz
mana-client-48131e2ecfa4d52375d890dac80f9ab1ad45ccf0.tar.bz2
mana-client-48131e2ecfa4d52375d890dac80f9ab1ad45ccf0.tar.xz
mana-client-48131e2ecfa4d52375d890dac80f9ab1ad45ccf0.zip
Merge branch 'master' of gitorious.org:mana/mana
Diffstat (limited to 'src/guild.cpp')
-rw-r--r--src/guild.cpp60
1 files changed, 45 insertions, 15 deletions
diff --git a/src/guild.cpp b/src/guild.cpp
index b4ecaa7e..30c004bc 100644
--- a/src/guild.cpp
+++ b/src/guild.cpp
@@ -24,22 +24,19 @@
#include "beingmanager.h"
#include "player.h"
-GuildMember::GuildMember(int guildId, int id, const std::string &name):
- Avatar(name), mId(id)
+GuildMember::GuildMember(Guild *guild, int id, const std::string &name):
+ Avatar(name), mId(id), mGuild(guild)
{
- mGuild = Guild::getGuild(guildId);
}
-GuildMember::GuildMember(int guildId, int id):
- mId(id)
+GuildMember::GuildMember(Guild *guild, int id):
+ mId(id), mGuild(guild)
{
- mGuild = Guild::getGuild(guildId);
}
-GuildMember::GuildMember(int guildId, const std::string &name):
- Avatar(name), mId(0)
+GuildMember::GuildMember(Guild *guild, const std::string &name):
+ Avatar(name), mId(0), mGuild(guild)
{
- mGuild = Guild::getGuild(guildId);
}
Guild::GuildMap Guild::guilds;
@@ -51,16 +48,49 @@ Guild::Guild(short id):
guilds[id] = this;
}
-void Guild::addMember(GuildMember *member)
+GuildMember *Guild::addMember(int id, const std::string &name)
{
- if (member->mGuild > 0 && member->mGuild != this)
- throw "Member in another guild!";
+ GuildMember *m;
+ if ((m = getMember(id)))
+ {
+ return m;
+ }
+
+ m = new GuildMember(this, id, name);
+
+ mMembers.push_back(m);
- if (!isMember(member))
+ return m;
+}
+
+GuildMember *Guild::addMember(int id)
+{
+ GuildMember *m;
+ if ((m = getMember(id)))
{
- mMembers.push_back(member);
- member->mGuild = this;
+ return m;
}
+
+ m = new GuildMember(this, id);
+
+ mMembers.push_back(m);
+
+ return m;
+}
+
+GuildMember *Guild::addMember(const std::string &name)
+{
+ GuildMember *m;
+ if ((m = getMember(name)))
+ {
+ return m;
+ }
+
+ m = new GuildMember(this, name);
+
+ mMembers.push_back(m);
+
+ return m;
}
GuildMember *Guild::getMember(int id)