diff options
| author | Ben Boeckel <MathStuf@gmail.com> | 2009-02-22 20:15:47 -0500 |
|---|---|---|
| committer | Ben Boeckel <MathStuf@gmail.com> | 2009-02-22 20:15:47 -0500 |
| commit | 7883e40cd8dbe3195ccc0ebe2816098217fde583 (patch) | |
| tree | 76c55e916868b1c383e58234871c03d35b23f26a | |
| parent | de3f4a4a015f716a3ac91d794a6e8a5fd43ae37a (diff) | |
| download | sigen-7883e40cd8dbe3195ccc0ebe2816098217fde583.tar.gz sigen-7883e40cd8dbe3195ccc0ebe2816098217fde583.tar.xz sigen-7883e40cd8dbe3195ccc0ebe2816098217fde583.zip | |
Added Move script handling to TeamMember
| -rw-r--r-- | sigencore/TeamMember.cpp | 17 | ||||
| -rw-r--r-- | sigencore/TeamMember.h | 4 |
2 files changed, 21 insertions, 0 deletions
diff --git a/sigencore/TeamMember.cpp b/sigencore/TeamMember.cpp index 2fa7ad98..4f3937db 100644 --- a/sigencore/TeamMember.cpp +++ b/sigencore/TeamMember.cpp @@ -558,6 +558,19 @@ bool Sigencore::TeamMember::addMove(Sigscript::MoveWrapper* move) } if (canLearn && (m_moves.size() < m_sigmod->rules()->maxMoves()) && !m_moves.contains(move)) { + Team* team = qobject_cast<Team*>(m_containment); + if (team) + { + ObjectMap worldObjects; + worldObjects["move"] = move; + worldObjects["owner"] = this; + worldObjects["client"] = team->player(); + worldObjects["sigmod"] = m_sigmod; + worldObjects["world"] = team->player()->world(); + Kross::Action* worldAction = runScript(QUuid::createUuid(), move->worldScript(), worldObjects, m_moveWorldScripts); + m_moveWorldScriptsMap[move] = worldAction; + worldAction->trigger(); + } m_moves.append(move); emit(moveAdded(move)); return true; @@ -569,6 +582,10 @@ bool Sigencore::TeamMember::removeMove(Sigscript::MoveWrapper* move) { if (m_moves.contains(move) && (1 < m_moves.size())) { + delete m_moveBattleScriptsMap[move]; + m_moveBattleScriptsMap.remove(move); + delete m_moveWorldScriptsMap[move]; + m_moveWorldScriptsMap.remove(move); m_moves.removeOne(move); emit(moveRemoved(move)); return true; diff --git a/sigencore/TeamMember.h b/sigencore/TeamMember.h index b0088873..0897c839 100644 --- a/sigencore/TeamMember.h +++ b/sigencore/TeamMember.h @@ -225,11 +225,15 @@ class SIGENCORE_EXPORT TeamMember : public Sigscript::Config Kross::ActionCollection* m_abilityBattleScripts; Kross::ActionCollection* m_abilityWorldScripts; + Kross::ActionCollection* m_moveBattleScripts; + Kross::ActionCollection* m_moveWorldScripts; Kross::ActionCollection* m_statusBattleScripts; Kross::ActionCollection* m_statusWorldScripts; QMap<Sigscript::AbilityWrapper*, Kross::Action*> m_abilityBattleScriptsMap; QMap<Sigscript::AbilityWrapper*, Kross::Action*> m_abilityWorldScriptsMap; + QMap<Sigscript::MoveWrapper*, Kross::Action*> m_moveBattleScriptsMap; + QMap<Sigscript::MoveWrapper*, Kross::Action*> m_moveWorldScriptsMap; QMap<Sigscript::StatusWrapper*, Kross::Action*> m_statusBattleScriptsMap; QMap<Sigscript::StatusWrapper*, Kross::Action*> m_statusWorldScriptsMap; |
