Import Aliens vs Predator - Gold (Build 116)
Source code release, imported from: https://www.gamefront.com/games/aliens-vs-predator-3/file/avp-gold-complete-source-code All text files were converted to Unix format.
This commit is contained in:
commit
218ca90543
572 changed files with 434587 additions and 0 deletions
484
3dc/include/module.h
Normal file
484
3dc/include/module.h
Normal file
|
@ -0,0 +1,484 @@
|
|||
#ifndef MODULE_INCLUDED
|
||||
|
||||
|
||||
/*
|
||||
|
||||
Modules
|
||||
|
||||
*/
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
||||
extern "C" {
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
#if SupportModules
|
||||
|
||||
|
||||
#include "bh_waypt.h"
|
||||
|
||||
typedef struct moduletableheader {
|
||||
|
||||
int mth_xsize; /* Extents in world space */
|
||||
int mth_ysize;
|
||||
int mth_zsize;
|
||||
|
||||
int mth_numx; /* Number of modules along each axis */
|
||||
int mth_numy;
|
||||
int mth_numz;
|
||||
|
||||
/* Pointer to an array of pointers to modules */
|
||||
|
||||
struct module **mth_moduletable;
|
||||
|
||||
} MODULETABLEHEADER;
|
||||
|
||||
|
||||
/*
|
||||
|
||||
NOTES
|
||||
|
||||
There are no pointers to strategy and/or animation data structures yet.
|
||||
These will be added as and when they are needed.
|
||||
|
||||
*/
|
||||
|
||||
typedef enum {
|
||||
|
||||
mtype_module,
|
||||
mtype_term
|
||||
|
||||
} MODULETYPE;
|
||||
|
||||
|
||||
typedef union mref {
|
||||
|
||||
char mref_name[4]; /* Module name */
|
||||
struct module *mref_ptr; /* Module pointer */
|
||||
|
||||
} MREF;
|
||||
|
||||
|
||||
typedef enum {
|
||||
|
||||
vmtype_vmodule,
|
||||
vmtype_term
|
||||
|
||||
} VMODULETYPE;
|
||||
|
||||
|
||||
typedef enum {
|
||||
|
||||
vmodi_null, /* Null instruction */
|
||||
vmodi_bra_vc /* Branch if viewport closed */
|
||||
|
||||
} VMODI;
|
||||
|
||||
typedef union _vmodidata {
|
||||
|
||||
char vmodidata_label[4];
|
||||
struct vmodule *vmodidata_ptr;
|
||||
int vmodidata;
|
||||
|
||||
} VMODIDATA;
|
||||
|
||||
|
||||
typedef struct vmodule {
|
||||
|
||||
VMODULETYPE vmod_type;
|
||||
char vmod_name[4]; /* Unique name for this VMODULE */
|
||||
VMODI vmod_instr;
|
||||
VMODIDATA vmod_data;
|
||||
MREF vmod_mref;
|
||||
VECTORCH vmod_dir;
|
||||
int vmod_angle;
|
||||
int vmod_flags;
|
||||
|
||||
} VMODULE;
|
||||
|
||||
|
||||
#define vm_flag_gotptrs 0x00000001 /* VMODULE references have
|
||||
been converted from
|
||||
names to pointers */
|
||||
|
||||
|
||||
#if 0
|
||||
|
||||
typedef enum {
|
||||
|
||||
vptype_viewport,
|
||||
vptype_term
|
||||
|
||||
} VIEWPORTTYPE;
|
||||
|
||||
|
||||
typedef struct viewport {
|
||||
|
||||
VIEWPORTTYPE vp_type;
|
||||
|
||||
int vp_flags;
|
||||
|
||||
VECTORCH vp0;
|
||||
VECTORCH vp1;
|
||||
VECTORCH vp2;
|
||||
VECTORCH vp3;
|
||||
|
||||
} VIEWPORT;
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
/*
|
||||
|
||||
This is the map block for module objects. It was originally based on the
|
||||
MAPBLOCK8 structure.
|
||||
|
||||
*/
|
||||
|
||||
typedef struct modulemapblock {
|
||||
|
||||
int MapType;
|
||||
int MapShape;
|
||||
|
||||
#if LoadingMapsShapesAndTexturesEtc
|
||||
|
||||
int MapFNameIndex;
|
||||
char **MapFNameArray;
|
||||
SHAPEHEADER **MapShapeDataArray;
|
||||
|
||||
#endif
|
||||
|
||||
VECTORCH MapWorld;
|
||||
|
||||
EULER MapEuler;
|
||||
|
||||
int MapFlags;
|
||||
int MapFlags2;
|
||||
int MapFlags3;
|
||||
|
||||
|
||||
|
||||
MAPSETVDB *MapVDBData;
|
||||
|
||||
int MapInteriorType;
|
||||
|
||||
#if InterfaceEngine
|
||||
|
||||
/* This will point to the Object_Chunk, it will have to be */
|
||||
/* cast within C++ though */
|
||||
|
||||
void * o_chunk;
|
||||
|
||||
#endif
|
||||
|
||||
int MapLightType; /* See LIGHTTYPES */
|
||||
|
||||
|
||||
VECTORCH MapOrigin; /* Origin of Rotation */
|
||||
|
||||
SIMSHAPELIST *MapSimShapes;
|
||||
|
||||
int MapViewType; /* See "VDB_ViewType" */
|
||||
|
||||
|
||||
struct displayblock **MapMPtr; /* Write our dptr here as mother */
|
||||
struct displayblock **MapDPtr; /* Read our dptr here as daughter */
|
||||
|
||||
VECTORCH MapMOffset; /* Offset from mother */
|
||||
|
||||
#if SupportMorphing
|
||||
MORPHHEADER *MapMorphHeader;
|
||||
#endif
|
||||
|
||||
} MODULEMAPBLOCK;
|
||||
|
||||
|
||||
/*
|
||||
|
||||
Module functions called either when the module is visible or when the view
|
||||
is inside the module.
|
||||
|
||||
*/
|
||||
|
||||
typedef enum {
|
||||
|
||||
mfun_null,
|
||||
|
||||
} MFUNCTION;
|
||||
|
||||
|
||||
/*
|
||||
|
||||
This is the MODULE structure
|
||||
|
||||
*/
|
||||
|
||||
struct aimodule;
|
||||
|
||||
typedef struct module {
|
||||
|
||||
MODULETYPE m_type;
|
||||
|
||||
char m_name[4]; /* Unique name for this MODULE */
|
||||
|
||||
int m_index; /* Unique module index */
|
||||
|
||||
int m_flags;
|
||||
|
||||
VECTORCH m_world; /* World location */
|
||||
|
||||
MREF m_ext; /* Get module extents from the shape
|
||||
found through this other module */
|
||||
|
||||
int m_ext_scale; /* Scale extents by this value (fp) */
|
||||
|
||||
int m_maxx; /* Module extents */
|
||||
int m_minx;
|
||||
int m_maxy;
|
||||
int m_miny;
|
||||
int m_maxz;
|
||||
int m_minz;
|
||||
|
||||
MODULEMAPBLOCK *m_mapptr; /* Map data for the module object */
|
||||
struct displayblock *m_dptr; /* Display block (not constant) */
|
||||
|
||||
MREF m_vptr; /* Vertical pointer to module array */
|
||||
|
||||
VMODULE *m_vmptr; /* Pointer to an array of VMODULE, or
|
||||
"visible module" structures */
|
||||
|
||||
MREF *m_link_ptrs; /* Pointer to an arbitrary sized array
|
||||
of module references - the array is
|
||||
zero terminated */
|
||||
/*should be got rid of soon*/
|
||||
|
||||
|
||||
|
||||
MODULETABLEHEADER *m_table; /* A hash table whose creation is
|
||||
triggered by a threshold value set by
|
||||
"system.h". This is to speed up module
|
||||
list traversal */
|
||||
|
||||
MFUNCTION m_ifvisible; /* Function called if module visible */
|
||||
MFUNCTION m_ifvinside; /* Function called if view inside */
|
||||
MREF m_funref; /* Function access to another module */
|
||||
|
||||
struct strategyblock *m_sbptr; /* Project supplies structure */
|
||||
|
||||
int m_numlights; /* # light blocks in array */
|
||||
struct lightblock *m_lightarray; /* Ptr. to array of light blocks */
|
||||
|
||||
struct extraitemdata *m_extraitemdata;
|
||||
|
||||
MATRIXCH m_mat; /* Internal use only */
|
||||
|
||||
#if SupportWindows95
|
||||
char * name;
|
||||
#endif
|
||||
|
||||
WAYPOINT_HEADER *m_waypoints;
|
||||
|
||||
struct aimodule *m_aimodule; /* the aimodule that this module is a part of*/
|
||||
|
||||
float m_sound_reverb; /*settings for the way sound should */
|
||||
int m_sound_env_index;/*be played in this module*/
|
||||
|
||||
} MODULE;
|
||||
|
||||
|
||||
/* Flags */
|
||||
|
||||
#define m_flag_infinite 0x00000001 /* No extent test, the
|
||||
view is always in this
|
||||
module */
|
||||
|
||||
#define m_flag_gotptrs 0x00000002 /* Module references have
|
||||
been converted from
|
||||
names to pointers */
|
||||
|
||||
#define m_flag_open 0x00000004 /* The viewport/Door is
|
||||
open. This state is
|
||||
read from the "dptr"
|
||||
morphing frame if it is
|
||||
present and if it is
|
||||
appropriate to do so */
|
||||
|
||||
#define m_flag_dormant 0x00000008 /* The module is not active */
|
||||
|
||||
|
||||
#define m_flag_gotmat 0x00000010 /* Internal use only */
|
||||
|
||||
#define m_flag_visible_on_map 0x00000020 /* Flag for Kevin's map stuff */
|
||||
|
||||
#define m_flag_slipped_inside 0x00000040 /* Another flag 4 Kevin */
|
||||
|
||||
#define MODULEFLAG_AIRDUCT 0x80000000
|
||||
#define MODULEFLAG_STAIRS 0x40000000
|
||||
#define MODULEFLAG_SKY 0x20000000
|
||||
#define MODULEFLAG_FOG 0x10000000
|
||||
#define MODULEFLAG_HORIZONTALDOOR 0x08000000
|
||||
|
||||
|
||||
typedef struct aimodule
|
||||
{
|
||||
int m_index; //the index in AIModuleArray
|
||||
|
||||
VECTORCH m_world; /* World location */
|
||||
|
||||
//adjacent aimodules - null terminated array
|
||||
struct aimodule **m_link_ptrs;
|
||||
|
||||
//the render modules that make up this ai module - null terminated array
|
||||
MODULE **m_module_ptrs;
|
||||
|
||||
WAYPOINT_HEADER *m_waypoints;
|
||||
|
||||
/* CDF 1/6/98 - Routefinder Globals */
|
||||
int RouteFinder_FrameStamp;
|
||||
int RouteFinder_IterationNumber;
|
||||
|
||||
}AIMODULE;
|
||||
|
||||
|
||||
/*
|
||||
Module Scene Structure
|
||||
|
||||
*/
|
||||
|
||||
typedef struct scenemodule {
|
||||
|
||||
MODULE *sm_module; /* Pointer to module structure for this scene */
|
||||
MODULE **sm_marray; /* Pointer to array of pointers to all modules */
|
||||
|
||||
} SCENEMODULE;
|
||||
|
||||
|
||||
/*
|
||||
|
||||
"The View"
|
||||
|
||||
The "View Finder" accesses the view location and orientation through this
|
||||
global structure. This is so that views can be passed to other functions as
|
||||
a single pointer if required.
|
||||
|
||||
*/
|
||||
|
||||
typedef struct aview {
|
||||
|
||||
VECTORCH vloc;
|
||||
MATRIXCH vmat;
|
||||
struct viewdescriptorblock *vvdb;
|
||||
|
||||
} AVIEW;
|
||||
|
||||
|
||||
|
||||
|
||||
/*
|
||||
|
||||
Module Function Prototypes
|
||||
|
||||
*/
|
||||
|
||||
#if IncludeModuleFunctionPrototypes
|
||||
|
||||
void ModuleHandler(VIEWDESCRIPTORBLOCK *vdb);
|
||||
void ProcessModules(VIEWDESCRIPTORBLOCK *vdb, MODULE *mptr);
|
||||
void ViewFinder(MODULE *mptr);
|
||||
void ReadVMODULEArrays(VMODULE *vptr);
|
||||
|
||||
|
||||
void UpdateModules(void);
|
||||
void ModuleFunctions(MODULE *mptr, MFUNCTION mf);
|
||||
void AllocateModuleObject(MODULE *mptr);
|
||||
void DeallocateModuleObject(MODULE *mptr);
|
||||
|
||||
|
||||
/*
|
||||
|
||||
A project supplied function. The display block has been successfuly
|
||||
allocated and has been fully initialised.
|
||||
|
||||
*/
|
||||
|
||||
void ModuleObjectJustAllocated(MODULE *mptr);
|
||||
|
||||
|
||||
/*
|
||||
|
||||
A project supplied function. The display block is about to be deallocated.
|
||||
|
||||
*/
|
||||
|
||||
void ModuleObjectAboutToBeDeallocated(MODULE *mptr);
|
||||
|
||||
|
||||
/*
|
||||
|
||||
A project supplied function. These are the new and old modules this ????
|
||||
|
||||
*/
|
||||
|
||||
void NewAndOldModules(int num_new, MODULE **m_new,
|
||||
int num_old, MODULE **m_old, char *m_currvis);
|
||||
|
||||
|
||||
|
||||
#if SupportMultiCamModules
|
||||
void InitGlobalVMA(void);
|
||||
void DeallocateGlobalVMA(void);
|
||||
#if SupportMultiCamModules
|
||||
void UpdateDynamicModuleObjects(void);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
void PreprocessAllModules(void);
|
||||
void PreprocessModuleArray(MODULE **m_array_ptr);
|
||||
void PreprocessVMODIDATA(VMODULE *v_ptr);
|
||||
|
||||
void DeallocateModuleVisArrays(void);
|
||||
int GetModuleVisArrays(void);
|
||||
int InsideModule(MODULE *mptr);
|
||||
|
||||
void ConvertModuleNameToPointer(MREF *mref_ptr, MODULE **m_array_ptr);
|
||||
void ConvertVModuleNameToPointer(VMODIDATA *vmodidata_ptr, VMODULE *v_array_ptr);
|
||||
|
||||
int CompareName(char *name1, char *name2);
|
||||
void PrintName(char *name);
|
||||
|
||||
int SaveModuleArray(MODULE *mptr, char *filename);
|
||||
MODULE* LoadModuleArray(MODULE *mptr, int size, char *filename);
|
||||
|
||||
int IsModuleVisibleFromModule(MODULE *source, MODULE *target);
|
||||
|
||||
#endif /* IncludeModuleFunctionPrototypes */
|
||||
|
||||
extern SCENEMODULE **Global_ModulePtr;
|
||||
extern SCENEMODULE *MainSceneArray[];
|
||||
extern AVIEW ModuleView;
|
||||
extern MODULE *Global_MotherModule;
|
||||
extern char *ModuleCurrVisArray;
|
||||
extern char *ModulePrevVisArray;
|
||||
extern char *ModuleTempArray;
|
||||
extern char *ModuleLocalVisArray;
|
||||
extern int ModuleArraySize;
|
||||
|
||||
extern int AIModuleArraySize;
|
||||
extern AIMODULE *AIModuleArray;
|
||||
|
||||
|
||||
#endif /* SupportModules */
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
#define MODULE_INCLUDED
|
||||
|
||||
#endif
|
Loading…
Add table
Add a link
Reference in a new issue