This commit was manufactured by cvs2svn to create tag 'd2x-0_1_2'.
[btb/d2x.git] / main / bm.h
1 /*
2 THE COMPUTER CODE CONTAINED HEREIN IS THE SOLE PROPERTY OF PARALLAX
3 SOFTWARE CORPORATION ("PARALLAX").  PARALLAX, IN DISTRIBUTING THE CODE TO
4 END-USERS, AND SUBJECT TO ALL OF THE TERMS AND CONDITIONS HEREIN, GRANTS A
5 ROYALTY-FREE, PERPETUAL LICENSE TO SUCH END-USERS FOR USE BY SUCH END-USERS
6 IN USING, DISPLAYING,  AND CREATING DERIVATIVE WORKS THEREOF, SO LONG AS
7 SUCH USE, DISPLAY OR CREATION IS FOR NON-COMMERCIAL, ROYALTY OR REVENUE
8 FREE PURPOSES.  IN NO EVENT SHALL THE END-USER USE THE COMPUTER CODE
9 CONTAINED HEREIN FOR REVENUE-BEARING PURPOSES.  THE END-USER UNDERSTANDS
10 AND AGREES TO THE TERMS HEREIN AND ACCEPTS THE SAME BY USE OF THIS FILE.  
11 COPYRIGHT 1993-1999 PARALLAX SOFTWARE CORPORATION.  ALL RIGHTS RESERVED.
12 */
13
14 #ifndef _BM_H
15 #define _BM_H
16
17 #include "gr.h"
18 #include "piggy.h"
19
20 #define MAX_TEXTURES            1200
21
22 //tmapinfo flags
23 #define TMI_VOLATILE            1               //this material blows up when hit
24 #define TMI_WATER                       2               //this material is water
25 #define TMI_FORCE_FIELD 4               //this is force field - flares don't stick
26 #define TMI_GOAL_BLUE   8               //this is used to remap the blue goal
27 #define TMI_GOAL_RED            16              //this is used to remap the red goal
28 #define TMI_GOAL_HOARD  32              //this is used to remap the goals
29
30 typedef struct {
31         ubyte           flags;                          //values defined above
32         ubyte           pad[3];                         //keep alignment
33         fix             lighting;                       //how much light this casts
34         fix             damage;                         //how much damage being against this does (for lava)
35         short           eclip_num;                      //the eclip that changes this, or -1
36         short           destroyed;                      //bitmap to show when destroyed, or -1
37         short           slide_u,slide_v;        //slide rates of texture, stored in 8:8 fix
38         #ifdef EDITOR
39         char            filename[13];           //used by editor to remap textures
40         char            pad2[3];
41         #endif
42 } __pack__ tmap_info;
43
44 extern int Num_object_types;
45
46 #define N_COCKPIT_BITMAPS 6
47 extern int Num_cockpits;
48 extern bitmap_index cockpit_bitmap[N_COCKPIT_BITMAPS];
49
50 extern int Num_tmaps;
51 #ifdef EDITOR
52 extern int TmapList[MAX_TEXTURES];
53 #endif
54
55 extern tmap_info TmapInfo[MAX_TEXTURES];
56
57 //for each model, a model number for dying & dead variants, or -1 if none
58 extern int Dying_modelnums[];
59 extern int Dead_modelnums[];
60
61 //the model number of the marker object
62 extern int Marker_model_num;
63
64 // Initializes the palette, bitmap system...
65 int bm_init();
66 void bm_close();
67
68 // Initializes the Texture[] array of bmd_bitmap structures.
69 void init_textures();
70
71 #define OL_ROBOT                                1
72 #define OL_HOSTAGE                      2
73 #define OL_POWERUP                      3
74 #define OL_CONTROL_CENTER       4
75 #define OL_PLAYER                               5
76 #define OL_CLUTTER                      6               //some sort of misc object
77 #define OL_EXIT                         7               //the exit model for external scenes
78 #define OL_WEAPON                               8               //a weapon that can be placed
79
80 #define MAX_OBJTYPE                     140
81
82 extern int Num_total_object_types;              //      Total number of object types, including robots, hostages, powerups, control centers, faces
83 extern byte     ObjType[MAX_OBJTYPE];           // Type of an object, such as Robot, eg if ObjType[11] == OL_ROBOT, then object #11 is a robot
84 extern byte     ObjId[MAX_OBJTYPE];                     // ID of a robot, within its class, eg if ObjType[11] == 3, then object #11 is the third robot
85 extern fix      ObjStrength[MAX_OBJTYPE];       // initial strength of each object
86
87 #if defined(MACINTOSH) && defined(SHAREWARE)
88 #define MAX_OBJ_BITMAPS                         610
89 #else
90 #define MAX_OBJ_BITMAPS                         600
91 #endif
92 extern bitmap_index ObjBitmaps[MAX_OBJ_BITMAPS];
93 extern ushort ObjBitmapPtrs[MAX_OBJ_BITMAPS];
94 extern int First_multi_bitmap_num;
95
96 // Initializes all bitmaps from BITMAPS.TBL file.
97 int bm_init_use_tbl(void);
98
99 #endif
100