1 2 /*------------------------Patrick 13/12/96----------------------------- 3 Header file for FAR AI alien module locations 4 --------------------------------------------------------------------*/ 5 6 #ifndef _pfarlocs_h_ 7 #define _pfarlocs_h_ 1 8 9 #ifdef __cplusplus 10 extern "C" { 11 #endif 12 13 14 /* various structure definitions used for module's auxilary location and 15 entry point data and headers...*/ 16 typedef struct farlocationsheader 17 { 18 int numLocations; 19 struct vectorch *locationsList; 20 21 } FARLOCATIONSHEADER; 22 23 typedef struct farvalidatedlocation 24 { 25 int valid; 26 struct vectorch position; 27 28 } FARVALIDATEDLOCATION; 29 30 typedef struct farentrypoint 31 { 32 struct vectorch position; 33 int donorIndex; 34 unsigned int alien_only:1; //this entry point can only be used by aliens 35 36 } FARENTRYPOINT; 37 38 typedef struct farentrypointsheader 39 { 40 int numEntryPoints; 41 struct farentrypoint *entryPointsList; 42 43 } FARENTRYPOINTSHEADER; 44 45 46 /* enum of the different door types, as seen by NPC's */ 47 typedef enum moduledoortype 48 { 49 MDT_NotADoor, 50 MDT_ProxDoor, 51 MDT_LiftDoor, 52 MDT_SecurityDoor, 53 54 } MODULEDOORTYPE; 55 56 57 /* globals */ 58 extern FARLOCATIONSHEADER *FALLP_AuxLocs; 59 extern FARENTRYPOINTSHEADER *FALLP_EntryPoints; 60 61 /* defines for auxilary locations */ 62 #define FAR_BB_HEIGHT 2000 /* should be height of a crouched alien */ 63 #define FAR_BB_WIDTH 1000 /* should be the 'width' of an alien */ 64 #define FAR_POS_HEIGHT 680 /* how high of the floor to put the alien (1/2 alien height + a bit) */ 65 #define FAR_GRID_SIZE 6 66 #define FAR_MAX_LOCS 5 67 #define FAR_MIN_INCLINE 50 68 69 /* defines for entry points */ 70 #define EPBB_XTRA 100 71 #define EP_POSNDISP 100 72 #define EP_MAXPOINTS 200 73 #define EP_MAXEDGES 200 74 75 /* defines for module door types insofar as they relate to alien behaviour 76 FADT stands for Far Alien Door Type*/ 77 78 79 /* prototypes */ 80 void BuildFarModuleLocs(void); 81 void KillFarModuleLocs(void); 82 MODULEDOORTYPE ModuleIsADoor(MODULE* target); 83 MODULEDOORTYPE AIModuleIsADoor(AIMODULE* target); 84 int ModuleIsPhysical(MODULE* target); 85 int AIModuleIsPhysical(AIMODULE* target); 86 int ModuleInModule(MODULE* target1, MODULE* target2); 87 int NumAdjacentModules(AIMODULE* target); 88 FARENTRYPOINT *GetModuleEP(MODULE* thisModule, MODULE*fromModule); 89 FARENTRYPOINT *GetAIModuleEP(AIMODULE* thisModule, AIMODULE*fromModule); 90 int PointIsInModule(MODULE* thisModule, VECTORCH* thisPoint); 91 92 93 #ifdef __cplusplus 94 } 95 #endif 96 97 #endif 98