]> icculus.org git repositories - btb/d2x.git/blob - main/gamemine.h
use the orientation parameter of g3_draw_bitmap
[btb/d2x.git] / main / gamemine.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 /*
15  *
16  * Header for gamemine.c
17  *
18  */
19
20
21 #ifndef _GAMEMINE_H
22 #define _GAMEMINE_H
23
24 #define MINE_VERSION        20  // Current version expected
25 #define COMPATIBLE_VERSION  16  // Oldest version that can safely be loaded.
26
27 #ifdef EDITOR
28 struct mtfi {
29         ushort  fileinfo_signature;
30         ushort  fileinfo_version;
31         int     fileinfo_sizeof;
32 };    // Should be same as first two fields below...
33
34 struct mfi {
35         ushort  fileinfo_signature;
36         ushort  fileinfo_version;
37         int     fileinfo_sizeof;
38         int     header_offset;      // Stuff common to game & editor
39         int     header_size;
40         int     editor_offset;      // Editor specific stuff
41         int     editor_size;
42         int     segment_offset;
43         int     segment_howmany;
44         int     segment_sizeof;
45         int     newseg_verts_offset;
46         int     newseg_verts_howmany;
47         int     newseg_verts_sizeof;
48         int     group_offset;
49         int     group_howmany;
50         int     group_sizeof;
51         int     vertex_offset;
52         int     vertex_howmany;
53         int     vertex_sizeof;
54         int     texture_offset;
55         int     texture_howmany;
56         int     texture_sizeof;
57         int     walls_offset;
58         int     walls_howmany;
59         int     walls_sizeof;
60         int     triggers_offset;
61         int     triggers_howmany;
62         int     triggers_sizeof;
63         int     links_offset;
64         int     links_howmany;
65         int     links_sizeof;
66         int     object_offset;      // Object info
67         int     object_howmany;
68         int     object_sizeof;
69         int     unused_offset;      // was: doors_offset
70         int     unused_howmamy;     // was: doors_howmany
71         int     unused_sizeof;      // was: doors_sizeof
72         short   level_shake_frequency, level_shake_duration;
73         // Shakes every level_shake_frequency seconds
74         // for level_shake_duration seconds (on average, random).  In 16ths second.
75         int     secret_return_segment;
76         vms_matrix secret_return_orient;
77
78         int     dl_indices_offset;
79         int     dl_indices_howmany;
80         int     dl_indices_sizeof;
81
82         int     delta_light_offset;
83         int     delta_light_howmany;
84         int     delta_light_sizeof;
85
86         int     segment2_offset;
87         int     segment2_howmany;
88         int     segment2_sizeof;
89 };
90 #endif // EDITOR
91
92 struct mh {
93         int num_vertices;
94         int num_segments;
95 };
96
97 struct me {
98         int current_seg;
99         int newsegment_offset;
100         int newsegment_size;
101         int Curside;
102         int Markedsegp;
103         int Markedside;
104         int Groupsegp[10];
105         int Groupside[10];
106         int num_groups;
107         int current_group;
108         //int num_objects;
109 };
110
111 extern struct mtfi mine_top_fileinfo;   // Should be same as first two fields below...
112 extern struct mfi mine_fileinfo;
113 extern struct mh mine_header;
114 extern struct me mine_editor;
115
116 // returns 1 if error, else 0
117 int game_load_mine(char * filename);
118
119 // loads from an already-open file
120 // returns 0=everything ok, 1=old version, -1=error
121 int load_mine_data(CFILE *LoadFile);
122 int load_mine_data_compiled(CFILE *LoadFile);
123
124 extern short tmap_xlate_table[];
125 extern fix Level_shake_frequency, Level_shake_duration;
126 extern int Secret_return_segment;
127 extern vms_matrix Secret_return_orient;
128
129 #define TMAP_NUM_MASK 0x3FFF
130
131 /* stuff for loading descent.pig of descent 1 */
132 extern short convert_d1_tmap_num(short d1_tmap_num);
133 extern int d1_tmap_num_unique(short d1_tmap_num); //is d1_tmap_num's texture only in d1?
134
135 #endif /* _GAMEMINE_H */