
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.
233 lines
7.3 KiB
C
233 lines
7.3 KiB
C
#ifndef _chnkload_h_
|
|
#define _chnkload_h_
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#include "system.h"
|
|
#include "equates.h"
|
|
#include "platform.h"
|
|
#include "shape.h"
|
|
#include "prototyp.h"
|
|
#include "module.h"
|
|
|
|
extern SCREENDESCRIPTORBLOCK ScreenDescriptorBlock;
|
|
|
|
#define GLS_NOTINLIST (-1)
|
|
|
|
///////////////////
|
|
// RIF Loading, etc
|
|
///////////////////
|
|
|
|
typedef struct _RifHandle * RIFFHANDLE;
|
|
#define INVALID_RIFFHANDLE 0
|
|
|
|
// flags - project specific ones start at lsb
|
|
// - generic ones to start from msb
|
|
|
|
#define CCF_NOMORPH 0x80000000
|
|
|
|
typedef enum UVCoordType
|
|
{
|
|
UVC_SPRITE_U,
|
|
UVC_SPRITE_V,
|
|
UVC_POLY_U,
|
|
UVC_POLY_V,
|
|
|
|
} UVCOORDTYPE;
|
|
|
|
// Note: for aesthetic reasons, macros enable one to have all one's fuctions in lower case or captialized, to suit one's style!
|
|
|
|
// For clarity, functions which are to be defined in project specific files
|
|
// are here declared with extern
|
|
|
|
/////////////////////////////////////////
|
|
// Functions which operate on RIFFHANDLEs
|
|
/////////////////////////////////////////
|
|
|
|
// load a rif file into memory
|
|
RIFFHANDLE load_rif (const char * fname);
|
|
RIFFHANDLE load_rif_non_env (const char * fname);
|
|
#define LoadRIF(s) load_rif(s)
|
|
|
|
// deallocate the shapes, unload the rif, close the handle
|
|
void undo_rif_load (RIFFHANDLE);
|
|
#define UndoRIFLoad(h) undo_rif_load(h)
|
|
|
|
// deallocate the shapes copied from the rif
|
|
void deallocate_loaded_shapes (RIFFHANDLE);
|
|
#define DeallocateLoadedShapes(h) deallocate_loaded_shapes(h)
|
|
|
|
// unloads the rif but keeps the handle and associated copied shapes
|
|
void unload_rif (RIFFHANDLE);
|
|
#define UnloadRIF(h) unload_rif(h);
|
|
|
|
// close the handle - performs tidying up and memory deallocation
|
|
void close_rif_handle (RIFFHANDLE);
|
|
#define CloseRIFHandle(h) close_rif_handle(h)
|
|
|
|
// load textures for environment
|
|
BOOL load_rif_bitmaps (RIFFHANDLE, int flags);
|
|
#define LoadRIFBitmaps(h,f) load_rif_bitmaps(h,f)
|
|
|
|
// set the quantization event depending on CL_RIFFImage::game_mode
|
|
BOOL set_quantization_event(RIFFHANDLE, int flags);
|
|
#define SetQuantizationEvent(h,f) set_quantization_event(h,f)
|
|
|
|
// copy palette
|
|
BOOL copy_rif_palette (RIFFHANDLE, int flags);
|
|
#define CopyRIFPalette(h,f) copy_rif_palette(h,f)
|
|
|
|
// copy texture lighting table
|
|
BOOL copy_rif_tlt (RIFFHANDLE, int flags);
|
|
#define CopyRIFTLT(h,f) copy_rif_tlt(h,f)
|
|
|
|
// copy palette remap table (15-bit) - post_process_shape may use it
|
|
BOOL get_rif_palette_remap_table (RIFFHANDLE, int flags);
|
|
#define GetRIFPaletteRemapTable(h,f) get_rif_palette_remap_table(h,f)
|
|
|
|
// copy one named shape or sprite; does not put in main shape list, needs deallocating
|
|
SHAPEHEADER * CopyNamedShapePtr (RIFFHANDLE, char const * shapename);
|
|
#define copy_named_shape_ptr(h,s) CopyNamedShapePtr(h,s)
|
|
|
|
// copy one named shape or sprite; put it in the main shape list
|
|
int CopyNamedShapeMSL (RIFFHANDLE, char const * shapename);
|
|
#define copy_named_shape_msl(h,s) CopyNamedShapeMSL(h,s)
|
|
|
|
////////////////////////////////////////////////////////////////////////
|
|
// Functions which do not operate on RIFFHANDLEs and may become obsolete
|
|
////////////////////////////////////////////////////////////////////////
|
|
|
|
// these functions work on the current rif; they only remain for historical reasons
|
|
extern RIFFHANDLE current_rif_handle;
|
|
// returns NULL on fail; does not put it in the mainshapelist
|
|
SHAPEHEADER * CopyNamedShape (char const * shapename);
|
|
|
|
/////////////////////////////////////////////
|
|
// Functions for handling the main shape list
|
|
/////////////////////////////////////////////
|
|
|
|
// reserves the next avaialbe position in the main shape list and returns it
|
|
extern int GetMSLPos(void);
|
|
#define get_msl_pos() GetMSLPos()
|
|
|
|
// frees a position in the main shape list
|
|
extern void FreeMSLPos(int);
|
|
#define free_msl_pos(i) FreeMSLPos(i)
|
|
|
|
////////////////////////////////////////////////
|
|
// Functions retrieving data about loaded shapes
|
|
////////////////////////////////////////////////
|
|
|
|
// gets the main shape list position of a shape loaded into the msl
|
|
int GetLoadedShapeMSL(char const * shapename);
|
|
#define get_loaded_shape_msl(s) GetLoadedShapeMSL(s)
|
|
// ditto, but returns a pointer; the shape need not be in the msl
|
|
SHAPEHEADER * GetLoadedShapePtr(char const * shapename);
|
|
#define get_loaded_shape_ptr(s) GetLoadedShapePtr(s)
|
|
|
|
// gets name of shape from msl pos
|
|
char const * GetMSLLoadedShapeName(int listpos);
|
|
#define get_msl_loaded_shape_name(i) GetMSLLoadedShapeName(i)
|
|
// gets name of shape from pointer; the shape need not be in msl
|
|
char const * GetPtrLoadedShapeName(SHAPEHEADER *);
|
|
#define get_ptr_loaded_shape_name(p) GetPtrLoadedShapeName(p)
|
|
|
|
// free a reference to a named shape if it exists - not necessary since these are all tidied up
|
|
void FreeShapeNameReference(SHAPEHEADER * shptr);
|
|
#define free_shape_name_reference(p) FreeShapeNameReference(p)
|
|
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
// Initializing, deallocating of shapes, mainly hooks for project specific fns
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
|
|
// perform initial post processing on shape just after loading
|
|
// note that the copy named shape functions will not call this
|
|
extern void post_process_shape (SHAPEHEADER *);
|
|
#define PostProcessShape(p) post_process_shape(p)
|
|
|
|
// hook to perhaps scale the uv coordinates - should return new value
|
|
extern int ProcessUVCoord(RIFFHANDLE,UVCOORDTYPE,int uv_value,int image_num);
|
|
#define process_uv_coord(h,t,u,i) ProcessUVCoord(h,t,u,i)
|
|
|
|
// delete a shape by the shapeheader
|
|
void DeallocateLoadedShapePtr(SHAPEHEADER *);
|
|
#define deallocate_loaded_shape_ptr(h,p) DeallocateLoadedShapePtr(h,p)
|
|
|
|
// delete a shape by the shape list number
|
|
void DeallocateLoadedShapeMSL(RIFFHANDLE, int);
|
|
#define deallocate_loaded_shape_msl(h,i) DeallocateLoadedShapeMSL(h,i)
|
|
|
|
// your function could perform any extra tidying up you need
|
|
extern void DeallocateLoadedShapeheader(SHAPEHEADER *);
|
|
#define deallocate_loaded_shapeheader(p) DeallocateLoadedShapeHeader(p)
|
|
|
|
// your function should call this function which undoes the allocation done when copied from rif data
|
|
void DeallocateRifLoadedShapeheader(SHAPEHEADER *);
|
|
#define deallocate_rif_loaded_shapeheader(p) DeallocateRifLoadedShapeHeader(p)
|
|
|
|
///////
|
|
// Misc
|
|
///////
|
|
|
|
// return TRUE if the poly item type corresponds to a textured polygon
|
|
BOOL is_textured(int);
|
|
#define IsTextured(i) is_textured(i)
|
|
|
|
/////////////////////
|
|
// Rif loader globals
|
|
/////////////////////
|
|
|
|
extern unsigned char const * PaletteMapTable;
|
|
|
|
/////////////////
|
|
// Engine globals
|
|
/////////////////
|
|
|
|
extern int start_of_loaded_shapes;
|
|
|
|
extern unsigned char *TextureLightingTable;
|
|
|
|
#if defined(InterfaceEngine) && InterfaceEngine
|
|
// this is of crucial importance!!
|
|
extern SHAPEHEADER * mainshapelist[];
|
|
#else
|
|
extern SHAPEHEADER ** mainshapelist;
|
|
#endif
|
|
|
|
extern MAPHEADER Map[];
|
|
|
|
extern MAPBLOCK8 Player_and_Camera_Type8[];
|
|
extern MAPBLOCK6 Empty_Landscape_Type6;
|
|
extern MAPBLOCK6 Empty_Object_Type6;
|
|
extern MAPBLOCK6 Term_Type6;
|
|
|
|
extern unsigned char TestPalette[];
|
|
|
|
extern unsigned char LPTestPalette[]; /* to cast to lp*/
|
|
|
|
#if 0
|
|
extern int NumImages; /* # current images */
|
|
extern IMAGEHEADER *ImageHeaderPtrs[]; /* Ptrs to Image Header Blocks */
|
|
extern IMAGEHEADER ImageHeaderArray[]; /* Array of Image Headers */
|
|
extern IMAGEHEADER *NextFreeImageHeaderPtr;
|
|
#endif
|
|
|
|
#if SupportModules
|
|
|
|
extern SCENEMODULE MainScene;
|
|
extern MODULE Empty_Module;
|
|
extern MODULE Term_Module;
|
|
|
|
extern MODULEMAPBLOCK Empty_Module_Map;
|
|
|
|
#endif
|
|
|
|
#ifdef __cplusplus
|
|
|
|
}
|
|
|
|
#endif
|
|
|
|
#endif
|