diff options
author | Ben Boeckel <MathStuf@gmail.com> | 2009-02-06 00:38:10 -0500 |
---|---|---|
committer | Ben Boeckel <MathStuf@gmail.com> | 2009-02-06 00:38:10 -0500 |
commit | 8647e94656f3b480d7431d18bcbd6bd9f403fcef (patch) | |
tree | 93ac647befa6296c2af24ee223e06eb14f3d7ced /sigencore/Player.cpp | |
parent | a9503d5f442359e185b81be517a22b74ad543d52 (diff) | |
download | sigen-8647e94656f3b480d7431d18bcbd6bd9f403fcef.tar.gz sigen-8647e94656f3b480d7431d18bcbd6bd9f403fcef.tar.xz sigen-8647e94656f3b480d7431d18bcbd6bd9f403fcef.zip |
Cleaned up Player class
Diffstat (limited to 'sigencore/Player.cpp')
-rw-r--r-- | sigencore/Player.cpp | 76 |
1 files changed, 45 insertions, 31 deletions
diff --git a/sigencore/Player.cpp b/sigencore/Player.cpp index d4e2d686..f2b8460a 100644 --- a/sigencore/Player.cpp +++ b/sigencore/Player.cpp @@ -18,65 +18,79 @@ // Header include #include "Player.h" -// Sigmod includes +// Sigscript includes #include "../sigscript/RulesWrapper.h" #include "../sigscript/SigmodWrapper.h" Sigencore::Player::Player(Sigscript::SigmodWrapper* sigmod, Sigscript::Config* parent) : - Team(sigmod, parent), + Client(sigmod, parent), m_arena(NULL), + m_team(new Team(sigmod, this)), m_money(0) { } -void Sigencore::Player::enterArena(Arena* arena) +Sigencore::Player::~Player() { - m_arena = arena; - for (int i = 0; (m_active.size() < sigmod()->rules()->maxFight()) && (i < m_members.size()); ++i) +} + +bool Sigencore::Player::enterArena(Arena* arena) +{ + m_active.clear(); + for (int i = 0; (m_active.size() < m_sigmod->rules()->maxFight()) && (i < m_team->numMembers()); ++i) { - if (m_members[i]->currentHp()) - m_active.append(m_members[i]); + TeamMember* member = m_team->members()[i]; + if (member->currentHp()) + { + m_active.append(member); + member->makeActive(arena); + } } - foreach (TeamMember* member, m_active) - member->makeActive(arena); + return (m_active.size() && Client::enterArena(arena)); } -QList<Sigencore::TeamMember*> Sigencore::Player::active() +void Sigencore::Player::exitArena() { - return m_active; + foreach (TeamMember* teamMember, m_active) + teamMember->exitArena(); + m_active.clear(); + Client::exitArena(); } -void Sigencore::Player::switchOut(TeamMember* oldActive, TeamMember* newActive) +void Sigencore::Player::giveMoney(const int amount) { - oldActive->leaveArena(); - newActive->makeActive(m_arena); - m_active.removeAll(oldActive); - m_active.append(newActive); + m_money = qMax(m_sigmod->rules()->maxMoney(), m_money + amount); } -int Sigencore::Player::money() const +void Sigencore::Player::takeMoney(const int amount) { - return m_money; + m_money = qMin(0, m_money - amount); } -void Sigencore::Player::exitArena() +Sigencore::TeamMember* Sigencore::Player::findMember(const QUuid& id) const { - foreach (TeamMember* member, m_active) - member->leaveArena(); - m_active.clear(); - m_arena = NULL; + return m_team->findMember(id); } -void Sigencore::Player::giveMoney(const int amount) +QList<Sigencore::TeamMember*> Sigencore::Player::active() const { - m_money += amount; - if (sigmod()->rules()->maxMoney() < m_money) - m_money = sigmod()->rules()->maxMoney(); + return m_active; } -void Sigencore::Player::takeMoney(const int amount) +void Sigencore::Player::switchOut(TeamMember* oldActive, TeamMember* newActive) +{ + oldActive->exitArena(); + newActive->makeActive(m_arena); + m_active.removeAll(oldActive); + m_active.append(newActive); +} + +bool Sigencore::Player::isKnockedOut() const +{ + return m_team->isKnockedOut(); +} + +int Sigencore::Player::money() const { - m_money -= amount; - if (m_money < 0) - m_money = 0; + return m_money; } |