yupplemayham/YuppleMayham/include/gameplay/ai.h
Ethan Adams 3075a01b3d Sorted header files under include
made Script base class for AIScript and eventually WeaponScript
2024-06-22 23:01:50 -04:00

38 lines
No EOL
755 B
C++

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