summaryrefslogtreecommitdiffstats
path: root/sigencore
diff options
context:
space:
mode:
authorBen Boeckel <MathStuf@gmail.com>2009-03-05 13:55:14 -0500
committerBen Boeckel <MathStuf@gmail.com>2009-03-05 13:55:14 -0500
commit13d30819bd96f4c648a831de5977b5ee4ac0bef2 (patch)
tree8bfaf43082c928a9688680e76275630acf314218 /sigencore
parent2a62a95c2b05b9c991cbd3ca5834560aae5aba42 (diff)
downloadsigen-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.txt1
-rw-r--r--sigencore/plugins/arenas/standard/TurnArena.cpp35
-rw-r--r--sigencore/plugins/arenas/standard/TurnArena.h2
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();