From f9f5600b60d6944dc9a7dd502988703d59d0cd62 Mon Sep 17 00:00:00 2001 From: max-001 Date: Wed, 4 Dec 2024 13:46:41 +0100 Subject: Setup some behaviors --- src/crepe/system/AISystem.cpp | 32 ++++++++++++++++++++++++++++++-- src/crepe/system/AISystem.h | 6 ++++++ 2 files changed, 36 insertions(+), 2 deletions(-) (limited to 'src/crepe/system') diff --git a/src/crepe/system/AISystem.cpp b/src/crepe/system/AISystem.cpp index 012f4fa..12da3d9 100644 --- a/src/crepe/system/AISystem.cpp +++ b/src/crepe/system/AISystem.cpp @@ -1,6 +1,34 @@ +#include "../ComponentManager.h" + #include "AISystem.h" -#include using namespace crepe; -void AISystem::update() { std::cout << "AI System update" << std::endl; } +void AISystem::update() { + ComponentManager & mgr = this->component_manager; + RefVector ai_components = mgr.get_components_by_type(); + + for (AI & ai : ai_components) { + vec2 force = this->calculate(ai); + //... + } +} + +vec2 AISystem::calculate(AI & ai) { + vec2 force; + + if (ai.on(AI::BehaviorType::SEEK)) { + // Seek the target + } + if (ai.on(AI::BehaviorType::FLEE)) { + // Flee from the target + } + if (ai.on(AI::BehaviorType::ARRIVE)) { + // Arrive at the target + } + if (ai.on(AI::BehaviorType::PATH_FOLLOW)) { + // Follow the path + } + + return force; +} diff --git a/src/crepe/system/AISystem.h b/src/crepe/system/AISystem.h index 4138e01..eb8d08c 100644 --- a/src/crepe/system/AISystem.h +++ b/src/crepe/system/AISystem.h @@ -1,6 +1,9 @@ #pragma once +#include "api/AI.h" + #include "System.h" +#include "types.h" namespace crepe { @@ -9,6 +12,9 @@ public: using System::System; void update() override; + +private: + vec2 calculate(AI & ai); }; } // namespace crepe -- cgit v1.2.3