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
|