diff options
author | Ben Boeckel <MathStuf@gmail.com> | 2009-03-05 13:55:14 -0500 |
---|---|---|
committer | Ben Boeckel <MathStuf@gmail.com> | 2009-03-05 13:55:14 -0500 |
commit | 13d30819bd96f4c648a831de5977b5ee4ac0bef2 (patch) | |
tree | 8bfaf43082c928a9688680e76275630acf314218 /sigencore | |
parent | 2a62a95c2b05b9c991cbd3ca5834560aae5aba42 (diff) | |
download | sigen-13d30819bd96f4c648a831de5977b5ee4ac0bef2.tar.gz sigen-13d30819bd96f4c648a831de5977b5ee4ac0bef2.tar.xz sigen-13d30819bd96f4c648a831de5977b5ee4ac0bef2.zip |
Add priority script support
Diffstat (limited to 'sigencore')
-rw-r--r-- | sigencore/plugins/arenas/CMakeLists.txt | 1 | ||||
-rw-r--r-- | sigencore/plugins/arenas/standard/TurnArena.cpp | 35 | ||||
-rw-r--r-- | sigencore/plugins/arenas/standard/TurnArena.h | 2 |
3 files changed, 23 insertions, 15 deletions
diff --git a/sigencore/plugins/arenas/CMakeLists.txt b/sigencore/plugins/arenas/CMakeLists.txt index 312885c0..6d43944e 100644 --- a/sigencore/plugins/arenas/CMakeLists.txt +++ b/sigencore/plugins/arenas/CMakeLists.txt @@ -10,6 +10,7 @@ kde4_add_plugin(arena_sigen ) target_link_libraries(arena_sigen ${QT_QTCORE_LIBRARY} + ${KDE4_KROSSCORE_LIBRARY} sigencoreplugins ) diff --git a/sigencore/plugins/arenas/standard/TurnArena.cpp b/sigencore/plugins/arenas/standard/TurnArena.cpp index ba2977d3..154a8d6e 100644 --- a/sigencore/plugins/arenas/standard/TurnArena.cpp +++ b/sigencore/plugins/arenas/standard/TurnArena.cpp @@ -18,10 +18,18 @@ // Header include #include "TurnArena.h" +// Sigencore includes +#include <sigencore/Player.h> +#include <sigencore/RunScript.h> +#include <sigencore/Team.h> + // Sigscript includes #include <sigscript/GameWrapper.h> #include <sigscript/MoveWrapper.h> +// KDE includes +#include <kross/core/actioncollection.h> + // Qt includes #include <QtAlgorithms> #include <QtCore/QtConcurrentMap> @@ -55,7 +63,8 @@ bool sortActions(const TeamMember::RequestedAction& reqAction1, const TeamMember } TurnArena::TurnArena(GameWrapper* sigmod, Config* parent) : - Arena(sigmod, parent) + Arena(sigmod, parent), + m_priorityScripts(new Kross::ActionCollection("priority-scripts", m_actions)) { setupBattle(); } @@ -135,25 +144,21 @@ void TurnArena::processRound() timer->stop(); QList<TeamMember::RequestedAction> actions = reqActions.results(); qStableSort(actions.begin(), actions.end(), sortActions); - for (int i = 1; i < actions.size(); ++i) + foreach (const TeamMember::RequestedAction& reqAction, actions) { - TeamMember::Action action = actions[i].second; + TeamMember::Action action = reqAction.second; if (action.first == TeamMember::Attack) { MoveWrapper* move = m_game->move(action.second.first.toInt()); const Script script = move->priorityScript(); - // TODO -// if (!script.script().isEmpty()) -// { -// Kross::Action* kaction = new Kross::Action(m_actions, QUuid::createUuid().toString()); -// kaction->setInterpreter(script.interpreter()); -// kaction->setCode(script.script().toUtf8()); -// kaction->addObject(this, "arena"); -// kaction->addObject(actions[i].first, "user"); -// for (int j = 0; j < i; ++j) -// kaction->addObject(actions[j].first, QString("fighter%1").arg(j)); -// kaction->trigger(); -// } + ObjectMap objects; + objects["arena"] = this; + objects["move"] = move; + objects["owner"] = reqAction.first; + objects["player"] = reqAction.first->team()->player(); + objects["sigmod"] = m_game; + // TODO: Add other players + runScript(QString("priority-%1").arg(QUuid::createUuid().toString()), script, objects, m_priorityScripts)->trigger(); } } qStableSort(actions.begin(), actions.end(), sortActions); diff --git a/sigencore/plugins/arenas/standard/TurnArena.h b/sigencore/plugins/arenas/standard/TurnArena.h index 2c86d8bc..6b3f1d27 100644 --- a/sigencore/plugins/arenas/standard/TurnArena.h +++ b/sigencore/plugins/arenas/standard/TurnArena.h @@ -46,6 +46,8 @@ class TurnArena : public Sigencore::Arena virtual void distributeWinnings(); virtual void checkForLosers(); + + Kross::ActionCollection* m_priorityScripts; protected slots: void processRound(); |