From 218ca90543758a20ac326e444ca0643174ca7384 Mon Sep 17 00:00:00 2001 From: Rebellion Developments Date: Thu, 16 Mar 2000 11:25:00 +0100 Subject: 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. --- 3dc/win95/CHNKLOAD.H | 233 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 233 insertions(+) create mode 100644 3dc/win95/CHNKLOAD.H (limited to '3dc/win95/CHNKLOAD.H') diff --git a/3dc/win95/CHNKLOAD.H b/3dc/win95/CHNKLOAD.H new file mode 100644 index 0000000..55fd754 --- /dev/null +++ b/3dc/win95/CHNKLOAD.H @@ -0,0 +1,233 @@ +#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 -- cgit v1.3