diff options
Diffstat (limited to 'src/party.cpp')
-rw-r--r-- | src/party.cpp | 73 |
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(), |