diff options
| author | Ben Boeckel <MathStuf@gmail.com> | 2008-09-10 00:43:08 +0000 |
|---|---|---|
| committer | Ben Boeckel <MathStuf@gmail.com> | 2008-09-10 00:43:08 +0000 |
| commit | 08040a630b6aed8b88246f3ba3ee85d5f7bd3afb (patch) | |
| tree | 2770012f6ce3c5a8b76d90d28be823603744e6c8 /sigbattle | |
| parent | ddb180ad4d8aa6e08ae725c83af9a52f57dd851f (diff) | |
| download | sigen-08040a630b6aed8b88246f3ba3ee85d5f7bd3afb.tar.gz sigen-08040a630b6aed8b88246f3ba3ee85d5f7bd3afb.tar.xz sigen-08040a630b6aed8b88246f3ba3ee85d5f7bd3afb.zip | |
[FIX] Players now have money
[FIX] Some more things added to Arena stuff
[FIX] Can now delete objects in the tree in Sigmodr
[FIX] Setting Sigmods as dirty is better now
git-svn-id: https://pokegen.svn.sourceforge.net/svnroot/pokegen/trunk@258 6ecfd1a5-f3ed-3746-8530-beee90d26b22
Diffstat (limited to 'sigbattle')
| -rw-r--r-- | sigbattle/ATBArena.cpp | 19 | ||||
| -rw-r--r-- | sigbattle/ATBArena.h | 6 | ||||
| -rw-r--r-- | sigbattle/Arena.cpp | 3 | ||||
| -rw-r--r-- | sigbattle/Arena.h | 2 | ||||
| -rw-r--r-- | sigbattle/Player.cpp | 22 | ||||
| -rw-r--r-- | sigbattle/Player.h | 6 | ||||
| -rw-r--r-- | sigbattle/TeamMember.cpp | 3 |
7 files changed, 50 insertions, 11 deletions
diff --git a/sigbattle/ATBArena.cpp b/sigbattle/ATBArena.cpp index 12ca823a..1c90816d 100644 --- a/sigbattle/ATBArena.cpp +++ b/sigbattle/ATBArena.cpp @@ -51,16 +51,23 @@ void Sigbattle::ATBArena::processActions() } } if (numActiveTeams() <= 1) - { - // TODO: end battle - } + cleanUp(); +} + +void Sigbattle::ATBArena::cleanUp() +{ + delete m_atbTimer; + m_atbTimer = NULL; + delete m_processTicker; + m_processTicker = NULL; + Arena::cleanUp(); } void Sigbattle::ATBArena::setupBattle() { m_atbTimer = new ATBTimer(this, m_decisions); - QTimer* moveTimer = new QTimer(this); - connect(moveTimer, SIGNAL(timeout()), this, SLOT(processActions())); - moveTimer->start(100); + m_processTicker = new QTimer(this); + connect(m_processTicker, SIGNAL(timeout()), this, SLOT(processActions())); + m_processTicker->start(100); Arena::setupBattle(); } diff --git a/sigbattle/ATBArena.h b/sigbattle/ATBArena.h index 1140e8d0..12e4ac3c 100644 --- a/sigbattle/ATBArena.h +++ b/sigbattle/ATBArena.h @@ -22,9 +22,11 @@ #include "ActionQueue.h" #include "Arena.h" +// Forward declaraions +class QTimer; + namespace Sigbattle { -// Forward declaraions class ATBTimer; class SIGBATTLE_EXPORT ATBArena : public Arena @@ -39,11 +41,13 @@ class SIGBATTLE_EXPORT ATBArena : public Arena public slots: protected slots: void processActions(); + void cleanUp(); protected: void setupBattle(); private: ActionQueue m_decisions; ATBTimer* m_atbTimer; + QTimer* m_processTicker; }; } diff --git a/sigbattle/Arena.cpp b/sigbattle/Arena.cpp index 6ede9fba..af4dcf0d 100644 --- a/sigbattle/Arena.cpp +++ b/sigbattle/Arena.cpp @@ -106,6 +106,9 @@ void Sigbattle::Arena::cleanUp() QList<Kross::Action*> actions = m_actions->actions(); foreach (Kross::Action* action, actions) m_actions->removeAction(action); + // TODO: Split up money + foreach (Player* player, m_players) + player->exitArena(); } void Sigbattle::Arena::handleAction(TeamMember* teamMember, TeamMember::Action action) diff --git a/sigbattle/Arena.h b/sigbattle/Arena.h index 0e3e3bcd..2f005332 100644 --- a/sigbattle/Arena.h +++ b/sigbattle/Arena.h @@ -66,7 +66,7 @@ class SIGBATTLE_EXPORT Arena : public Sigscript::Config public slots: void registerScript(const Sigmod::Script& script); protected slots: - void cleanUp(); + virtual void cleanUp(); protected: Arena(Sigscript::SigmodWrapper* sigmod, QList<Player*> players, const bool isWild, QObject* parent); diff --git a/sigbattle/Player.cpp b/sigbattle/Player.cpp index 8fff4b74..8103d52f 100644 --- a/sigbattle/Player.cpp +++ b/sigbattle/Player.cpp @@ -24,7 +24,8 @@ Sigbattle::Player::Player(Sigscript::SigmodWrapper* sigmod, QObject* parent) : Team(sigmod, parent), - m_arena(NULL) + m_arena(NULL), + m_money(0) { } @@ -53,6 +54,11 @@ void Sigbattle::Player::switchOut(TeamMember* oldActive, TeamMember* newActive) m_active.append(newActive); } +int Sigbattle::Player::money() const +{ + return m_money; +} + void Sigbattle::Player::exitArena() { foreach (TeamMember* member, m_active) @@ -60,3 +66,17 @@ void Sigbattle::Player::exitArena() m_active.clear(); m_arena = NULL; } + +void Sigbattle::Player::giveMoney(const int amount) +{ + m_money += amount; + if (sigmod()->rules()->maxMoney() < m_money) + m_money = sigmod()->rules()->maxMoney(); +} + +void Sigbattle::Player::takeMoney(const int amount) +{ + m_money -= amount; + if (m_money < 0) + m_money = 0; +} diff --git a/sigbattle/Player.h b/sigbattle/Player.h index 69d85bd7..40427e2b 100644 --- a/sigbattle/Player.h +++ b/sigbattle/Player.h @@ -48,15 +48,21 @@ class SIGBATTLE_EXPORT Player : public Team QList<TeamMember*> active(); void switchOut(TeamMember* oldActive, TeamMember* newActive); + + int money() const; signals: public slots: void exitArena(); + void giveMoney(const int amount); + void takeMoney(const int amount); + virtual TeamMember::Action requestAction(const TeamMember* teamMember) const = 0; protected slots: protected: QList<TeamMember*> m_active; Arena* m_arena; + int m_money; }; } Q_DECLARE_METATYPE(Sigbattle::Player*) diff --git a/sigbattle/TeamMember.cpp b/sigbattle/TeamMember.cpp index c8e3042a..adbd2fcc 100644 --- a/sigbattle/TeamMember.cpp +++ b/sigbattle/TeamMember.cpp @@ -389,8 +389,7 @@ void Sigbattle::TeamMember::cureStatus(Sigscript::StatusWrapper* status) if (m_status.contains(status)) { QList<Kross::Action*> actions = m_status.values(status); - foreach (Kross::Action* action, actions) - delete action; + qDeleteAll(actions); m_status.remove(status); emit(statusCured(status)); } |
