#ifndef _H_AI_H #define _H_AI_H #include #include class GameActor; class Raycaster; class AIScript; enum class AIState { Idle, Alert, Patrol }; class AI { public: AI(const std::shared_ptr& actor, const std::shared_ptr& raycaster); void update(); void setTarget(const std::shared_ptr& target) { this->target = target; } void attachBehaviourScript(const std::shared_ptr& behaviour); AIState getState() const { return state; } void setState(AIState state) { this->state = state; } ~AI() {} private: AIState state; std::shared_ptr raycaster; std::shared_ptr behaviour; std::shared_ptr actor; std::shared_ptr target; }; #endif