diff options
Diffstat (limited to 'src/crepe/ScriptSystem.cpp')
-rw-r--r-- | src/crepe/ScriptSystem.cpp | 27 |
1 files changed, 22 insertions, 5 deletions
diff --git a/src/crepe/ScriptSystem.cpp b/src/crepe/ScriptSystem.cpp index e40909e..0537c16 100644 --- a/src/crepe/ScriptSystem.cpp +++ b/src/crepe/ScriptSystem.cpp @@ -1,12 +1,16 @@ +#include <forward_list> +#include <functional> #include <vector> + +#include "ScriptSystem.h" #include "ComponentManager.h" #include "api/BehaviorScript.h" -#include "util/fmt.h" +#include "api/Script.h" #include "util/log.h" -#include "ScriptSystem.h" - +using namespace std; using namespace crepe; +using namespace crepe::api; ScriptSystem::ScriptSystem() { dbg_trace(); @@ -24,10 +28,23 @@ void ScriptSystem::update() { using namespace std; dbg_trace(); + forward_list<Script *> scripts = this->get_scripts(); + for (Script * script : scripts) + script->update(); +} + +forward_list<Script *> ScriptSystem::get_scripts() { + forward_list<Script *> scripts = {}; ComponentManager & mgr = ComponentManager::get_instance(); - vector<reference_wrapper<api::BehaviorScript>> scripts = mgr.get_components_by_type<api::BehaviorScript>(); + vector<reference_wrapper<BehaviorScript>> behavior_scripts = mgr.get_components_by_type<BehaviorScript>(); - dbg_logf("script count: %lu", scripts.size()); + for (auto behavior_script_ref : behavior_scripts) { + BehaviorScript & behavior_script = behavior_script_ref.get(); + Script * script = behavior_script.script; + if (script == nullptr) continue; + scripts.push_front(script); + } + return scripts; } |