group.h

Go to the documentation of this file.
00001 /*
00002  * group.h
00003  *
00004  *  Created on: Jan 28, 2012
00005  *      Author: sushil
00006  */
00007 
00008 #ifndef GROUP_H_
00009 #define GROUP_H_
00010 
00011 
00012 #include <boost/lexical_cast.hpp>
00013 
00014 #include <identity.h>
00015 #include <ent.h>
00016 #include <string>
00017 //#include <aspect.h>
00018 #include <enums.h>
00019 
00020 namespace FastEcslent {
00021 
00022         class GroupAspect;
00023         class Engine;
00024 //      typedef struct EntId Identity;
00025 
00026         class Group {
00027 
00028         private:
00029                 std::string createGroupName(Identity gid);
00030 
00031         public:
00032                 Engine *engine;
00033                 Entity* members[MaxEnts];
00034                 std::string   groupName;
00035                 //Entity *leader;
00036                 int     leaderIndex;
00037                 int nEntitiesInGroup;
00038                 Identity gid; //a group id (inspired by 'nix)
00039                 std::deque<GroupAspect*> aspects;
00040 
00041 
00042                 //Constructor
00043 
00044                 Group(Engine*eng, Identity id);
00045                 Group(Engine*eng, Entity** ents, int nEntsInGroup, Identity id);
00046                 Group(Engine*eng, Entity** ents, int nEntsInGroup, std::string name, Identity id);
00047                 void reset(Engine*eng);//set instance vars to 0
00048 
00049                 void setName(std::string name);
00050                 void setMembers(Entity** ents, int nEntsInGroup);
00051                 void addMember(Entity *ent);
00052                 bool isMember(Entity *ent);
00053 
00054                 void setLeaderByIndex(int i) { assert(i >= 0 && i < nEntitiesInGroup); leaderIndex = i; };
00055                 Entity*   getLeaderByIndex() { return members[leaderIndex];};
00056 
00057                 void print();
00058 
00059                 void resetAspect(GroupAspectType gat, GroupAspect *gasp);
00060                 void addAspect(GroupAspect *gasp);
00061                 int  findAspect(GroupAspectType gat);
00062                 GroupAspect* getAspect(GroupAspectType index);
00063 
00064                 void init();
00065                 void tick(double dt);
00066 
00067 
00068         };
00069 
00070 
00071 }
00072 
00073 
00074 #endif /* GROUP_H_ */

Generated on Fri Dec 13 14:54:16 2013 for FastECSLent by  doxygen 1.5.4