summaryrefslogtreecommitdiffstats
path: root/sigbattle
diff options
context:
space:
mode:
authorBen Boeckel <MathStuf@gmail.com>2008-09-10 00:43:08 +0000
committerBen Boeckel <MathStuf@gmail.com>2008-09-10 00:43:08 +0000
commit08040a630b6aed8b88246f3ba3ee85d5f7bd3afb (patch)
tree2770012f6ce3c5a8b76d90d28be823603744e6c8 /sigbattle
parentddb180ad4d8aa6e08ae725c83af9a52f57dd851f (diff)
downloadsigen-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.cpp19
-rw-r--r--sigbattle/ATBArena.h6
-rw-r--r--sigbattle/Arena.cpp3
-rw-r--r--sigbattle/Arena.h2
-rw-r--r--sigbattle/Player.cpp22
-rw-r--r--sigbattle/Player.h6
-rw-r--r--sigbattle/TeamMember.cpp3
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));
}