summaryrefslogtreecommitdiff
path: root/src/party.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/party.cpp')
-rw-r--r--src/party.cpp73
1 files changed, 45 insertions, 28 deletions
diff --git a/src/party.cpp b/src/party.cpp
index a8e18b2d..e01aab50 100644
--- a/src/party.cpp
+++ b/src/party.cpp
@@ -23,32 +23,19 @@
#include "beingmanager.h"
#include "player.h"
-PartyMember::PartyMember(int partyId, int id, const std::string &name):
- Avatar(name), mId(id), mLeader(false)
+PartyMember::PartyMember(Party *party, int id, const std::string &name):
+ Avatar(name), mId(id), mParty(party), mLeader(false)
{
- mParty = Party::getParty(partyId);
-
- if (beingManager)
- {
- Player *player = dynamic_cast<Player*>(beingManager->findBeing(id));
- if (player)
- {
- player->setParty(mParty);
- }
- }
}
-PartyMember::PartyMember(int PartyId, int id):
- mId(id), mLeader(false)
+PartyMember::PartyMember(Party *party, int id):
+ mId(id), mParty(party), mLeader(false)
{
- mParty = Party::getParty(PartyId);
+}
- if (beingManager)
- {
- Player *player = dynamic_cast<Player*>(beingManager->findBeing(id));
- if (player)
- player->setParty(mParty);
- }
+PartyMember::PartyMember(Party *party, const std::string &name):
+ Avatar(name), mParty(party), mLeader(false)
+{
}
Party::PartyMap Party::parties;
@@ -59,19 +46,49 @@ Party::Party(short id):
{
parties[id] = this;
}
+PartyMember *Party::addMember(int id, const std::string &name)
+{
+ PartyMember *m;
+ if ((m = getMember(id)))
+ {
+ return m;
+ }
+
+ m = new PartyMember(this, id, name);
-void Party::addMember(PartyMember *member)
+ mMembers.push_back(m);
+
+ return m;
+}
+
+PartyMember *Party::addMember(int id)
{
- if (member->mParty > 0 && member->mParty != this)
+ PartyMember *m;
+ if ((m = getMember(id)))
{
- throw "Member in another Party!";
+ return m;
}
- if (!isMember(member))
+ m = new PartyMember(this, id);
+
+ mMembers.push_back(m);
+
+ return m;
+}
+
+PartyMember *Party::addMember(const std::string &name)
+{
+ PartyMember *m;
+ if ((m = getMember(name)))
{
- mMembers.push_back(member);
- member->mParty = this;
+ return m;
}
+
+ m = new PartyMember(this, name);
+
+ mMembers.push_back(m);
+
+ return m;
}
PartyMember *Party::getMember(int id)
@@ -230,7 +247,7 @@ bool Party::isMember(const std::string &name) const
return false;
}
-const void Party::getNames(std::vector<std::string> &names) const
+void Party::getNames(std::vector<std::string> &names) const
{
names.clear();
MemberList::const_iterator it = mMembers.begin(),