#ifndef _SWARM_MODULE_H #define _SWARM_MODULE_H #include "world_entity.h" #include "ai_module.h" class SwarmModule { public: inline SwarmModule(){taskComplete=false;} virtual ~SwarmModule(){} virtual void process(float dt){} void addAI(WorldEntity*, float maxSpeed, float attackDistance); void removeAI(WorldEntity*); void getAttributesFrom(SwarmModule* oldModule); virtual void initialize(){} inline bool taskDone(){return taskComplete;} inline void setEnemyList(std::vector* enemys){this->enemys=enemys;} inline void newOrder(){this->taskComplete=false;} inline void orderRelPos(Vector taskRelPos){this->taskRelPos=taskRelPos;} inline void orderAbsPos(Vector taskAbsPos){this->taskAbsPos=taskAbsPos;} inline void orderView(Vector taskView){this->taskView=taskView;} inline void orderSpeed(float taskSpeed){this->taskSpeed=taskSpeed;} inline void orderRelObject(WorldEntity* taskRelObject){if (taskRelObject) this->taskRelObjectName=taskRelObject->getName(); else taskRelObjectName = ""; } inline void orderMaxTime(float taskMaxTime){this->taskMaxTime=taskMaxTime;} Vector getSwarmPosition(); inline Vector getPosition(){return position;} inline float getSpeed(){return speed;} inline Vector getView(){return view;} inline int getSwarmSize(){return members.size();} inline std::vector* getEnemyList(){return enemys;} inline std::map getMembers(){return members;} inline float getMaxSpeed(){return maxSpeed;} inline float getAttackDistance(){return attackDistance;} protected: float getRadius(WorldEntity* object); void changeAIModule(std::map::iterator it,AIModule* newAI); Vector taskRelPos; Vector taskAbsPos; Vector taskView; float taskSpeed; std::string taskRelObjectName; bool taskComplete; float taskMaxTime; Vector view; Vector position; float speed; float maxSpeed; float attackDistance; std::map members; std::vector* enemys; }; #endif /* _SWARM_MODULE_H */