sof-sdk/Source/Game/gamecpp/m_generic.h
2000-06-15 00:00:00 +00:00

135 lines
5.3 KiB
C++

//initialization functions that should be useful...
void generic_monster_spawnnow (edict_t *self);
void generic_armor_spawnnow (edict_t *self);
void dekker_init (edict_t *self);
void generic_leader_init (edict_t *self);
void generic_grunt_init (edict_t *self);
void generic_heavyweapons_init (edict_t *self);
void generic_npc_init (edict_t *self);
void generic_animal_init (edict_t *self);
void generic_armor_init(edict_t *self);
typedef enum
{
EXPRESSION_PRIORITY_LOWEST=0,
EXPRESSION_PRIORITY_LOW,
EXPRESSION_PRIORITY_HIGH,
EXPRESSION_PRIORITY_HIGHEST,
} expressionPriority_e;
typedef enum
{
VARIETY_PRIORITY_LOWEST=0,
VARIETY_PRIORITY_LOW,
VARIETY_PRIORITY_HIGH,
VARIETY_PRIORITY_HIGHEST,
} varietyPriority_e;
class generic_human_ai : public ai_c
{
protected:
virtual void RegisterSkins(void);
virtual void RegisterGoreSkins(void);
virtual void RegisterFaceSkin(const char *theMaterialName, const char *faceSkinName, expressionPriority_e expressionPriorityVal);
virtual void RegisterSkin(const char *theMaterialName, const char *theSkinName, varietyPriority_e varietyPriorityVal);
virtual void RegisterFaceSkins(const char *faceBase, varietyPriority_e varietyPriorityVal);
virtual void RegisterTalkFaceSkins(const char *faceBase, varietyPriority_e varietyPriorityVal);
public:
virtual const char* GetInterpFile(char *theclass, char *subclass);
virtual ~generic_human_ai(){}
virtual void Init(edict_t *monster, char *theclass, char* subclass);
virtual int GetClassCode(void){return AI_GENERIC;}//this should be different for everybody in this class family
generic_human_ai():ai_c(){}
generic_human_ai(generic_human_ai *orig):ai_c(orig){}
};
class playercorpse_ai : public generic_human_ai
{
protected:
virtual void RegisterSkins(void){}
public:
virtual action_c *DeathAction(decision_c *od, action_c *oa, mmove_t *newanim, edict_t &monster, edict_t *inflictor, edict_t *attacker, int damage, vec3_t point);
virtual void AddBody(edict_t *monster);
virtual void Init(edict_t *monster, char *ghoulname, char* subclass);
virtual int GetClassCode(void){return AI_PLAYERCORPSE;}//this should be different for everybody in this class family
};
class generic_meso_ai : public generic_human_ai
{
protected:
public:
virtual const char* GetInterpFile(char *theclass, char *subclass);
virtual void AddBody(edict_t *monster);
};
class blownpart_ai : public generic_human_ai
{
private:
protected:
float severTime;
bool removeMe;
bool Stopped;
bool frozen;
bool bFading;
virtual qboolean IsFirstFrameTime(void){return false;}
public:
virtual const char* GetInterpFile(char *theclass, char *subclass);
virtual const char* GetObjectSkin(char *theclass, char *subclass);
virtual void Init(edict_t *monster, char *ghoulname, char* subclass);
virtual int GetClassCode(void){return AI_BLOWNPART;}//this should be different for everybody in this class family
virtual void Think(edict_t &monster);
blownpart_ai():generic_human_ai(){}
blownpart_ai(blownpart_ai *orig);
virtual void Evaluate(blownpart_ai *orig);
};
class generic_ghoul_dog_ai : public ai_c//generic_human_ai
{
public:
virtual void Init(edict_t *monster, char *ghoulname, char* subclass);
virtual int GetTeam(edict_t &monster){return 1;}
virtual int GetClassCode(void){return AI_GENERIC_DOG;}//this should be different for everybody in this class family
virtual action_c *AttackAction(decision_c *od, action_c *oa, mmove_t *newanim, edict_t *attackTarget, vec3_t attackPos, vec3_t facing = vec3_origin, float timeout=999999999999, qboolean fullAnimation = false);
virtual action_c *WalkAction(decision_c *od, action_c *oa, mmove_t *newanim, vec3_t destination, vec3_t facing = vec3_origin, float timeout=999999999999, qboolean fullAnimation = false);
protected:
virtual void AddBody(edict_t *monster);
};
class dog_husky_ai : public generic_ghoul_dog_ai
{
protected:
virtual void AddBody(edict_t *monster);
public:
virtual void Init(edict_t *monster, char *ghoulname, char* subclass) {generic_ghoul_dog_ai::Init(monster, ghoulname, subclass);}
virtual int GetClassCode(void){return AI_DOG_HUSKY;}//this should be different for everybody in this class family
};
class dog_rottweiler_ai : public generic_ghoul_dog_ai
{
protected:
virtual void AddBody(edict_t *monster);
public:
virtual void Init(edict_t *monster, char *ghoulname, char* subclass) {generic_ghoul_dog_ai::Init(monster, ghoulname, subclass);}
virtual int GetClassCode(void){return AI_DOG_ROTTWEILER;}//this should be different for everybody in this class family
};
class cow_ai : public ai_c
{
public:
virtual void Init(edict_t *monster, char *ghoulname, char* subclass);
virtual int GetTeam(edict_t &monster){return 100;}
virtual int GetClassCode(void){return AI_GENERIC_COW;}//this should be different for everybody in this class family
// virtual action_c *AttackAction(decision_c *od, action_c *oa, mmove_t *newanim, edict_t *attackTarget, vec3_t attackPos, vec3_t facing = vec3_origin, float timeout=999999999999, qboolean fullAnimation = false);
// virtual action_c *WalkAction(decision_c *od, action_c *oa, mmove_t *newanim, vec3_t destination, vec3_t facing = vec3_origin, float timeout=999999999999, qboolean fullAnimation = false);
protected:
virtual void AddBody(edict_t *monster);
};