diff options
| author | Ben Boeckel <MathStuf@gmail.com> | 2009-02-12 19:01:01 -0500 |
|---|---|---|
| committer | Ben Boeckel <MathStuf@gmail.com> | 2009-02-12 19:01:01 -0500 |
| commit | 4f4612afd67cd71ad765142a36d7a9a2adf4d255 (patch) | |
| tree | 035eb2b301ba28b82cd124a544d07582894919ef | |
| parent | 19a1ad995c89f1e664278c94f7405cdd065a491b (diff) | |
Fix Arena handling
| -rw-r--r-- | sigencore/TeamMember.cpp | 50 | ||||
| -rw-r--r-- | sigencore/TeamMember.h | 5 |
2 files changed, 34 insertions, 21 deletions
diff --git a/sigencore/TeamMember.cpp b/sigencore/TeamMember.cpp index 3f093b7e..ef8538ba 100644 --- a/sigencore/TeamMember.cpp +++ b/sigencore/TeamMember.cpp @@ -532,18 +532,21 @@ void Sigencore::TeamMember::teachMove(Sigscript::MoveWrapper* move) void Sigencore::TeamMember::makeActive(Arena* arena) { - m_timer = 0; - QList<Sigscript::StatusWrapper*> statuses = m_status.uniqueKeys(); + // TODO + Team* team = qobject_cast<Team*>(this->containment()); + QList<Sigscript::StatusWrapper*> statuses = m_status.keys(); foreach (Sigscript::StatusWrapper* status, statuses) { const Sigcore::Script script = status->battleScript(); if (!script.script().isEmpty()) { - Kross::Action* action = new Kross::Action(Kross::Manager::self().actionCollection()->collection("status"), QUuid::createUuid().toString()); - action->setInterpreter(script.interpreter()); - action->setCode(script.script().toUtf8()); - action->addObject(arena, "arena"); - action->addObject(this, "owner"); + ObjectMap objects; + objects["arena"] = arena; + objects["sigmod"] = m_sigmod; + if (team) + objects["client"] = team->player(); + objects["owner"] = this; + Kross::Action* action = runScript(QUuid::createUuid().toString(), script, objects, Kross::Manager::self().actionCollection()->collection("status")); action->trigger(); m_statusBattleScripts.append(action); } @@ -554,25 +557,34 @@ void Sigencore::TeamMember::makeActive(Arena* arena) const Sigcore::Script script = ability->battleScript(); if (!script.script().isEmpty()) { - Kross::Action* action = new Kross::Action(Kross::Manager::self().actionCollection()->collection("ability"), QUuid::createUuid().toString()); - action->setInterpreter(script.interpreter()); - action->setCode(script.script().toUtf8()); - action->addObject(arena, "arena"); - action->addObject(this, "owner"); + ObjectMap objects; + objects["arena"] = arena; + objects["sigmod"] = m_sigmod; + if (team) + objects["client"] = team->player(); + objects["owner"] = this; + Kross::Action* action = runScript(QUuid::createUuid().toString(), script, objects, Kross::Manager::self().actionCollection()->collection("ability")); action->trigger(); m_abilityBattleScripts.append(action); } } + m_arena = arena; } -void Sigencore::TeamMember::leaveArena() +void Sigencore::TeamMember::exitArena() { - Kross::ActionCollection* collection = Kross::Manager::self().actionCollection()->collection("status"); - foreach (Kross::Action* action, m_statusBattleScripts) - collection->removeAction(action); - collection = Kross::Manager::self().actionCollection()->collection("ability"); - foreach (Kross::Action* action, m_abilityBattleScripts) - collection->removeAction(action); + // TODO + qDeleteAll(m_statusBattleScripts); + m_statusBattleScripts.clear(); + qDeleteAll(m_abilityBattleScripts); + m_abilityBattleScripts.clear(); + for (int i = Sigmod::ST_Attack; i <= Sigmod::ST_Evasion; ++i) + { + const QString entry = QString("stat-stages-%1").arg((m_sigmod->rules()->specialSplit() ? Sigmod::StatGSCStr : Sigmod::StatRBYStr)[i]); + if (options(entry) & Temporary) + removeValue(entry, false); + } + m_arena = NULL; } void Sigencore::TeamMember::writeBack() diff --git a/sigencore/TeamMember.h b/sigencore/TeamMember.h index 8e13a55c..1723ce93 100644 --- a/sigencore/TeamMember.h +++ b/sigencore/TeamMember.h @@ -139,8 +139,6 @@ class SIGENCORE_EXPORT TeamMember : public Sigscript::Config bool setCurrentHp(const int hp); bool changeCurrentHp(const int hp); - void makeActive(Arena* arena); - void leaveArena(); bool setDv(const Sigmod::Stat stat, const int dv); bool setStatExperience(const Sigmod::Stat stat, const long long statExp); bool giveStatExperience(const Sigmod::Stat stat, const long long statExp); @@ -151,6 +149,8 @@ class SIGENCORE_EXPORT TeamMember : public Sigscript::Config bool removeNature(Sigscript::NatureWrapper* nature); virtual void writeBack(); + virtual void makeActive(Arena* arena); + virtual void exitArena(); signals: void nameChanged(const QString& newName); @@ -188,6 +188,7 @@ class SIGENCORE_EXPORT TeamMember : public Sigscript::Config Sigscript::SigmodWrapper* m_sigmod; Containment* m_containment; + Arena* m_arena; Sigscript::SpeciesWrapper* m_species; |
