summaryrefslogtreecommitdiff
path: root/3dc/win95/CHNKLOAD.H
diff options
context:
space:
mode:
Diffstat (limited to '3dc/win95/CHNKLOAD.H')
-rw-r--r--3dc/win95/CHNKLOAD.H233
1 files changed, 233 insertions, 0 deletions
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