From 5f891cd4edb72e948d5c63f518c5d6eeeb52dd74 Mon Sep 17 00:00:00 2001 From: Deukhoofd Date: Sun, 23 Feb 2020 11:11:47 +0100 Subject: [PATCH] Added Remove Volatile functions for battle and creatures. --- src/Battling/Models/Battle.cpp | 12 ++++++++++++ src/Battling/Models/Battle.hpp | 13 ++++--------- src/Battling/Models/Creature.cpp | 2 ++ src/Battling/Models/Creature.hpp | 2 ++ 4 files changed, 20 insertions(+), 9 deletions(-) diff --git a/src/Battling/Models/Battle.cpp b/src/Battling/Models/Battle.cpp index 39fdda6..3641d76 100644 --- a/src/Battling/Models/Battle.cpp +++ b/src/Battling/Models/Battle.cpp @@ -119,3 +119,15 @@ void Battle::ValidateBattleState() { this->_battleResult = BattleResult::Conclusive(winningSide); this->_hasEnded = true; } +void Battle::AddVolatileScript(const std::string& key) { + auto script = _volatile.Get(key); + if (script != nullptr) { + script->Stack(); + return; + } + script = _library->LoadScript(ScriptCategory::Battle, key); + return _volatile.Add(script); +} +void Battle::AddVolatileScript(Script* script) { return _volatile.Add(script); } +void Battle::RemoveVolatileScript(const std::string& name) { _volatile.Remove(name); } +void Battle::RemoveVolatileScript(Script* script) { _volatile.Remove(script->GetName()); } diff --git a/src/Battling/Models/Battle.hpp b/src/Battling/Models/Battle.hpp index b547474..c9fe1f9 100644 --- a/src/Battling/Models/Battle.hpp +++ b/src/Battling/Models/Battle.hpp @@ -76,15 +76,10 @@ namespace CreatureLib::Battling { const std::vector& GetSides() const { return _sides; } Script* GetVolatileScript(const std::string& key) const { return _volatile.Get(key); } - void AddVolatileScript(const std::string& key) { - auto script = _volatile.Get(key); - if (script != nullptr) { - script->Stack(); - return; - } - script = _library->LoadScript(ScriptCategory::Battle, key); - return _volatile.Add(script); - } + void AddVolatileScript(const std::string& key); + void AddVolatileScript(Script* script); + void RemoveVolatileScript(const std::string& name); + void RemoveVolatileScript(Script* script); void RegisterEventListener(EVENT_HOOK_FUNC(listener)) { this->_eventHook.RegisterListener(listener); } void TriggerEventListener(EventData* data) { this->_eventHook.TriggerEvent(data); } diff --git a/src/Battling/Models/Creature.cpp b/src/Battling/Models/Creature.cpp index fa96d3c..7dda176 100644 --- a/src/Battling/Models/Creature.cpp +++ b/src/Battling/Models/Creature.cpp @@ -196,3 +196,5 @@ void Battling::Creature::AddVolatileScript(const std::string& name) { } void Battling::Creature::AddVolatileScript(Script* script) { _volatile.Add(script); } +void Battling::Creature::RemoveVolatileScript(const std::string& name) { _volatile.Remove(name); } +void Battling::Creature::RemoveVolatileScript(Battling::Script* script) { _volatile.Remove(script->GetName()); } diff --git a/src/Battling/Models/Creature.hpp b/src/Battling/Models/Creature.hpp index 8fd540d..4e045a8 100644 --- a/src/Battling/Models/Creature.hpp +++ b/src/Battling/Models/Creature.hpp @@ -118,6 +118,8 @@ namespace CreatureLib::Battling { void ClearVolatileScripts(); void AddVolatileScript(const std::string& name); void AddVolatileScript(Script* script); + void RemoveVolatileScript(const std::string& name); + void RemoveVolatileScript(Script* script); std::vector& GetAttacks() { return _attacks; }