summaryrefslogtreecommitdiff
path: root/src/avp/pfarlocs.h
blob: 8bf2459261a4ecbcc24a12491b2241b693dd4817 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97

/*------------------------Patrick 13/12/96-----------------------------
  Header file for FAR AI alien module locations
  --------------------------------------------------------------------*/

#ifndef _pfarlocs_h_
	#define _pfarlocs_h_ 1

	#ifdef __cplusplus
		extern "C" {
	#endif


/* various structure definitions used for module's auxilary location and
entry point data and headers...*/
typedef struct farlocationsheader
{
	int	numLocations;
	struct vectorch *locationsList;

} FARLOCATIONSHEADER;

typedef struct farvalidatedlocation
{
	int	valid;
	struct vectorch position;

} FARVALIDATEDLOCATION;

typedef struct farentrypoint
{
	struct vectorch position;
	int donorIndex;
	unsigned int alien_only:1; //this entry point can only be used by aliens

} FARENTRYPOINT;

typedef struct farentrypointsheader
{
	int	numEntryPoints;
	struct farentrypoint *entryPointsList;

} FARENTRYPOINTSHEADER;


/* enum of the different door types, as seen by NPC's */
typedef enum moduledoortype
{
	MDT_NotADoor,			
	MDT_ProxDoor,			
	MDT_LiftDoor,
	MDT_SecurityDoor,

} MODULEDOORTYPE;


/* globals */
extern FARLOCATIONSHEADER *FALLP_AuxLocs;
extern FARENTRYPOINTSHEADER *FALLP_EntryPoints;

/* defines for auxilary locations */
#define FAR_BB_HEIGHT	2000 /* should be height of a crouched alien */
#define FAR_BB_WIDTH	1000 /* should be the 'width' of an alien */
#define FAR_POS_HEIGHT	680  /* how high of the floor to put the alien (1/2 alien height + a bit) */
#define FAR_GRID_SIZE	6
#define FAR_MAX_LOCS	5
#define FAR_MIN_INCLINE	50

/* defines for entry points */
#define	EPBB_XTRA 		100
#define	EP_POSNDISP		100
#define EP_MAXPOINTS	200
#define EP_MAXEDGES		200

/* defines for module door types insofar as they relate to alien behaviour 
FADT stands for Far Alien Door Type*/


/* prototypes */
void BuildFarModuleLocs(void);
void KillFarModuleLocs(void);
MODULEDOORTYPE ModuleIsADoor(MODULE* target);
MODULEDOORTYPE AIModuleIsADoor(AIMODULE* target);
int ModuleIsPhysical(MODULE* target);
int AIModuleIsPhysical(AIMODULE* target);
int ModuleInModule(MODULE* target1, MODULE* target2);
int NumAdjacentModules(AIMODULE* target);
FARENTRYPOINT *GetModuleEP(MODULE* thisModule, MODULE*fromModule);
FARENTRYPOINT *GetAIModuleEP(AIMODULE* thisModule, AIMODULE*fromModule);
int PointIsInModule(MODULE* thisModule, VECTORCH* thisPoint);


	#ifdef __cplusplus
	}
	#endif

#endif