summaryrefslogtreecommitdiffstats
path: root/sigencore/Player.cpp
diff options
context:
space:
mode:
authorBen Boeckel <MathStuf@gmail.com>2009-02-06 00:38:10 -0500
committerBen Boeckel <MathStuf@gmail.com>2009-02-06 00:38:10 -0500
commit8647e94656f3b480d7431d18bcbd6bd9f403fcef (patch)
tree93ac647befa6296c2af24ee223e06eb14f3d7ced /sigencore/Player.cpp
parenta9503d5f442359e185b81be517a22b74ad543d52 (diff)
downloadsigen-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.cpp76
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;
}