summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBen Boeckel <MathStuf@gmail.com>2009-03-05 10:54:28 -0500
committerBen Boeckel <MathStuf@gmail.com>2009-03-05 10:54:28 -0500
commitf1baae7f6ab1fc0b60333a8e5192e8cc2f17e5aa (patch)
tree65425ad41f5fe41ad451b7aaed58d5405fedd77d
parent2db63c1fb3268009e5b6d3db3d522f6be950b6df (diff)
downloadsigen-f1baae7f6ab1fc0b60333a8e5192e8cc2f17e5aa.tar.gz
sigen-f1baae7f6ab1fc0b60333a8e5192e8cc2f17e5aa.tar.xz
sigen-f1baae7f6ab1fc0b60333a8e5192e8cc2f17e5aa.zip
Clean up TurnArena for new Arena structure
-rw-r--r--sigencore/plugins/arenas/CMakeLists.txt1
-rw-r--r--sigencore/plugins/arenas/SigenArenas.cpp20
-rw-r--r--sigencore/plugins/arenas/SigenArenas.h4
-rw-r--r--sigencore/plugins/arenas/standard/TurnArena.cpp33
-rw-r--r--sigencore/plugins/arenas/standard/TurnArena.h55
5 files changed, 66 insertions, 47 deletions
diff --git a/sigencore/plugins/arenas/CMakeLists.txt b/sigencore/plugins/arenas/CMakeLists.txt
index c1aa82ba..312885c0 100644
--- a/sigencore/plugins/arenas/CMakeLists.txt
+++ b/sigencore/plugins/arenas/CMakeLists.txt
@@ -2,6 +2,7 @@ project(sigenarenas)
set(sigenarenas_SRCS
SigenArenas.cpp
+ standard/TurnArena.cpp
)
kde4_add_plugin(arena_sigen
diff --git a/sigencore/plugins/arenas/SigenArenas.cpp b/sigencore/plugins/arenas/SigenArenas.cpp
index 60e035e8..23577874 100644
--- a/sigencore/plugins/arenas/SigenArenas.cpp
+++ b/sigencore/plugins/arenas/SigenArenas.cpp
@@ -18,6 +18,9 @@
// Header include
#include "SigenArenas.h"
+// Arena includes
+#include "standard/TurnArena.h"
+
// Sigencore includes
#include <sigencore/Arena.h>
@@ -47,28 +50,39 @@ QString SigenArenas::pluginDescription() const
QStringList SigenArenas::arenas() const
{
// TODO
- return QStringList();
+ return QStringList() << TurnArena::name();
}
QString SigenArenas::description(const QString& name) const
{
- // TODO
- return "";
+ if (name == TurnArena::name())
+ return TurnArena::description();
+ return "(Unknown arena)";
}
QIcon SigenArenas::icon(const QString& name)
{
+ if (name == TurnArena::name())
+ return TurnArena::icon();
// TODO
return QIcon();
}
Arena* SigenArenas::createArena(const QString& name, GameWrapper* game, Config* parent)
{
+ if (name == TurnArena::name())
+ return new TurnArena(game, parent);
// TODO
return NULL;
}
void SigenArenas::cleanupArena(Arena* arena)
{
+ TurnArena* turnArena = qobject_cast<TurnArena*>(arena);
+ if (turnArena)
+ {
+ delete turnArena;
+ return;
+ }
// TODO
}
diff --git a/sigencore/plugins/arenas/SigenArenas.h b/sigencore/plugins/arenas/SigenArenas.h
index 67304bdc..a5eb0719 100644
--- a/sigencore/plugins/arenas/SigenArenas.h
+++ b/sigencore/plugins/arenas/SigenArenas.h
@@ -15,8 +15,8 @@
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef SIGENARENA_SIGENARENAS
-#define SIGENARENA_SIGENARENAS
+#ifndef SIGENARENAS_SIGENARENAS
+#define SIGENARENAS_SIGENARENAS
// Sigencore plugin includes
#include <sigencore/plugins/ArenaPlugin.h>
diff --git a/sigencore/plugins/arenas/standard/TurnArena.cpp b/sigencore/plugins/arenas/standard/TurnArena.cpp
index 2d006011..749bfc41 100644
--- a/sigencore/plugins/arenas/standard/TurnArena.cpp
+++ b/sigencore/plugins/arenas/standard/TurnArena.cpp
@@ -1,5 +1,5 @@
/*
- * Copyright 2008 Ben Boeckel <MathStuf@gmail.com>
+ * Copyright 2008-2009 Ben Boeckel <MathStuf@gmail.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -19,11 +19,11 @@
#include "TurnArena.h"
// Sigcore includes
-#include "../sigcore/Fraction.h"
+#include <sigcore/Fraction.h>
// Sigscript includes
-#include "../sigscript/MoveWrapper.h"
-#include "../sigscript/SigmodWrapper.h"
+#include <sigscript/MoveWrapper.h>
+#include <sigscript/GameWrapper.h>
// KDE includes
#include <kross/core/action.h>
@@ -35,7 +35,11 @@
#include <QtCore/QFuture>
#include <QtCore/QTimer>
-bool Sigbattle::sortActions(const TeamMember::RequestedAction& reqAction1, const TeamMember::RequestedAction& reqAction2)
+using namespace Sigcore;
+using namespace Sigscript;
+using namespace Sigencore;
+
+bool sortActions(const TeamMember::RequestedAction& reqAction1, const TeamMember::RequestedAction& reqAction2)
{
TeamMember::Action action1 = reqAction1.second.isFinished() ? reqAction1.second : TeamMember::Action(TeamMember::Timeout, TeamMember::ActionData());
TeamMember::Action action2 = reqAction2.second.isFinished() ? reqAction2.second : TeamMember::Action(TeamMember::Timeout, TeamMember::ActionData());
@@ -55,8 +59,13 @@ bool Sigbattle::sortActions(const TeamMember::RequestedAction& reqAction1, const
return false;
}
-Sigbattle::TurnArena::TurnArena(Sigscript::SigmodWrapper* sigmod, QSet<Player*> players, const bool isWild, Sigscript::Config* parent) :
- Arena(sigmod, players, isWild, parent),
+QString TurnArena::name()
+{
+ return "sigen_arena_name";
+}
+
+TurnArena::TurnArena(GameWrapper* sigmod, Config* parent) :
+ Arena(sigmod, parent),
m_watcher(new QFutureWatcher<TeamMember::RequestedAction>(this)),
m_timer(new QTimer(this))
{
@@ -65,17 +74,18 @@ Sigbattle::TurnArena::TurnArena(Sigscript::SigmodWrapper* sigmod, QSet<Player*>
connect(m_timer, SIGNAL(timeout()), m_watcher, SLOT(cancel()));
}
-void Sigbattle::TurnArena::setupBattle()
+/*
+void TurnArena::setupBattle()
{
// TODO: setup everything for the arena to do with the turns
Arena::setupBattle();
}
-void Sigbattle::TurnArena::processRound()
+void TurnArena::processRound()
{
emit(roundAboutToStart());
emit(roundStart());
- QFuture<TeamMember::RequestedAction> reqActions = QtConcurrent::mapped(active(), &Sigbattle::requestDecision);
+ QFuture<TeamMember::RequestedAction> reqActions = QtConcurrent::mapped(active(), &requestDecision);
m_watcher->setFuture(reqActions);
m_timer->start(120000);
reqActions.waitForFinished();
@@ -87,7 +97,7 @@ void Sigbattle::TurnArena::processRound()
TeamMember::Action action = actions[i].second;
if (action.first == TeamMember::Attack)
{
- Sigscript::MoveWrapper* move = sigmod()->move(action.second.first.toInt());
+ MoveWrapper* move = sigmod()->move(action.second.first.toInt());
const Sigcore::Script script = move->priorityScript();
if (!script.script().isEmpty())
{
@@ -113,3 +123,4 @@ void Sigbattle::TurnArena::processRound()
if (!isOver())
processRound();
}
+*/
diff --git a/sigencore/plugins/arenas/standard/TurnArena.h b/sigencore/plugins/arenas/standard/TurnArena.h
index 91222d27..7d751d73 100644
--- a/sigencore/plugins/arenas/standard/TurnArena.h
+++ b/sigencore/plugins/arenas/standard/TurnArena.h
@@ -1,5 +1,5 @@
/*
- * Copyright 2008 Ben Boeckel <MathStuf@gmail.com>
+ * Copyright 2008-2009 Ben Boeckel <MathStuf@gmail.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -15,45 +15,38 @@
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef SIGBATTLE_TURNARENA
-#define SIGBATTLE_TURNARENA
+#ifndef SIGENARENAS_TURNARENA
+#define SIGENARENAS_TURNARENA
-// Sigbattle includes
-#include "Arena.h"
-#include "TeamMember.h"
+// Sigencore includes
+#include <sigencore/Arena.h>
-// Qt includes
-#include <QtCore/QFutureWatcher>
-
-// Forward declarations
-class QTimer;
-
-namespace Sigbattle
-{
-class SIGBATTLE_EXPORT TurnArena : public Arena
+class TurnArena : public Sigencore::Arena
{
Q_OBJECT
public:
- TurnArena(Sigscript::SigmodWrapper* sigmod, QSet<Player*> players, const bool isWild, Sigscript::Config* parent);
- public slots:
- signals:
- void roundAboutToStart();
- void roundStart();
- void roundAboutToEnd();
- void roundEnd();
+ TurnArena(Sigscript::GameWrapper* game, Sigscript::Config* parent);
+
+ Q_SCRIPTABLE virtual Sigencore::TeamMember::Action requestAction(Sigencore::TeamMember* teamMember) const = 0;
+ Q_SCRIPTABLE virtual bool isTeamAllowed(Sigencore::Team* team) = 0;
+
+ static QString name();
+ static QString description();
+ static QIcon icon();
protected:
- void setupBattle();
+ virtual void handleAction(Sigencore::TeamMember* teamMember, Sigencore::TeamMember::Action action);
+
+ virtual void setupBattle();
+
+ virtual void distributeWinnings();
+ virtual void checkForLosers();
protected slots:
- void processRound();
- private:
- QFutureWatcher<TeamMember::RequestedAction>* m_watcher;
- QTimer* m_timer;
+ virtual void registerScript(const Sigcore::Script& script);
+
+ virtual void cleanUp();
};
-bool sortActions(const TeamMember::RequestedAction& reqAction1, const TeamMember::RequestedAction& reqAction2);
-
-}
-Q_DECLARE_METATYPE(Sigbattle::TurnArena*)
+bool sortActions(const Sigencore::TeamMember::RequestedAction& reqAction1, const Sigencore::TeamMember::RequestedAction& reqAction2);
#endif