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