#ifndef _AI_MODULE_H #define _AI_MODULE_H #include "world_entity.h" class NPC2; class AIModule { public: inline AIModule(){taskComplete=false;} virtual ~AIModule(){} virtual void process(float dt){} inline void setDestination(Vector destination){this->destination=destination;} inline void setDestinationMovement(Vector destinationMovement){this->destinationMovement=destinationMovement;} inline void setWeight(int weight){this->weight=weight;} inline void setTarget(WorldEntity* target){this->target=target;} inline void setNPC(WorldEntity* npc){this->npc=npc;} inline void setMaxSpeed(float maxSpeed){this->maxSpeed=maxSpeed;} inline void setAttackDistance(float attackDistance){this->attackDistance=attackDistance;} inline Vector getPosition(){return npc->getAbsCoor();} inline Vector getMovement(){return movement;} inline Vector getView(){return view;} inline WorldEntity* getNPC(){return npc;} inline WorldEntity* getTarget(){return target;} inline float getWeight(){return weight;} inline float getMaxAcceleration(){return accelerationMax;} inline float getMaxSpeed(){return maxSpeed;} inline float getAttackDistance(){return attackDistance;} inline float getNPCRadius(){return getRadius(npc);} inline bool done(){return taskComplete;} void getAttributesFrom(AIModule* oldModule); protected: float getRadius(WorldEntity* object); Vector destination; Vector destinationMovement; Vector destinationView; bool taskComplete; Vector movement; Vector view; WorldEntity* npc; WorldEntity* target; float weight; float maxSpeed; float attackDistance; float accelerationMax; }; #endif /* _AI_MODULE_H */