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 | |
parent | a9503d5f442359e185b81be517a22b74ad543d52 (diff) | |
download | sigen-8647e94656f3b480d7431d18bcbd6bd9f403fcef.tar.gz sigen-8647e94656f3b480d7431d18bcbd6bd9f403fcef.tar.xz sigen-8647e94656f3b480d7431d18bcbd6bd9f403fcef.zip |
Cleaned up Player class
Diffstat (limited to 'sigencore')
-rw-r--r-- | sigencore/Player.cpp | 76 | ||||
-rw-r--r-- | sigencore/Player.h | 29 |
2 files changed, 57 insertions, 48 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; } diff --git a/sigencore/Player.h b/sigencore/Player.h index a3c59fc8..e7336728 100644 --- a/sigencore/Player.h +++ b/sigencore/Player.h @@ -19,39 +19,34 @@ #define SIGENCORE_PLAYER // Sigencore includes +#include "Client.h" #include "Global.h" #include "Team.h" #include "TeamMember.h" -// Qt includes -#include <QtCore/QObject> - // Forward declarations -namespace Sigmod -{ -class Sigmod; -} - namespace Sigencore { class Team; -class SIGENCORE_EXPORT Player : public Team +class SIGENCORE_EXPORT Player : public Client { Q_OBJECT public: Player(Sigscript::SigmodWrapper* sigmod, Sigscript::Config* parent); + virtual ~Player(); - void enterArena(Arena* arena); + Q_SCRIPTABLE TeamMember* findMember(const QUuid& id) const; + Q_SCRIPTABLE QList<TeamMember*> active() const; + Q_SCRIPTABLE void switchOut(TeamMember* oldActive, TeamMember* newActive); - QList<TeamMember*> active(); + Q_SCRIPTABLE bool isKnockedOut() const; - void switchOut(TeamMember* oldActive, TeamMember* newActive); - - int money() const; + Q_SCRIPTABLE int money() const; public slots: - void exitArena(); + virtual bool enterArena(Arena* arena); + virtual void exitArena(); void giveMoney(const int amount); void takeMoney(const int amount); @@ -59,10 +54,10 @@ class SIGENCORE_EXPORT Player : public Team virtual TeamMember::Action requestAction(const TeamMember* teamMember) const = 0; signals: protected: - QList<TeamMember*> m_active; Arena* m_arena; + Team* m_team; + QList<TeamMember*> m_active; int m_money; - protected slots: }; } Q_DECLARE_METATYPE(Sigencore::Player*) |