diff options
| author | Ben Boeckel <MathStuf@gmail.com> | 2009-03-05 10:54:28 -0500 |
|---|---|---|
| committer | Ben Boeckel <MathStuf@gmail.com> | 2009-03-05 10:54:28 -0500 |
| commit | f1baae7f6ab1fc0b60333a8e5192e8cc2f17e5aa (patch) | |
| tree | 65425ad41f5fe41ad451b7aaed58d5405fedd77d | |
| parent | 2db63c1fb3268009e5b6d3db3d522f6be950b6df (diff) | |
| download | sigen-f1baae7f6ab1fc0b60333a8e5192e8cc2f17e5aa.tar.gz sigen-f1baae7f6ab1fc0b60333a8e5192e8cc2f17e5aa.tar.xz sigen-f1baae7f6ab1fc0b60333a8e5192e8cc2f17e5aa.zip | |
Clean up TurnArena for new Arena structure
| -rw-r--r-- | sigencore/plugins/arenas/CMakeLists.txt | 1 | ||||
| -rw-r--r-- | sigencore/plugins/arenas/SigenArenas.cpp | 20 | ||||
| -rw-r--r-- | sigencore/plugins/arenas/SigenArenas.h | 4 | ||||
| -rw-r--r-- | sigencore/plugins/arenas/standard/TurnArena.cpp | 33 | ||||
| -rw-r--r-- | sigencore/plugins/arenas/standard/TurnArena.h | 55 |
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 |
