added saving special tape properties
[rocksndiamonds.git] / src / game_em / cave.h
1 /* 2009-01-25 23:00:34
2  *
3  * intermediate cave structure
4  */
5
6 #ifndef CAVE_H
7 #define CAVE_H
8
9 enum
10 {
11   Cblank,
12   Cgrass,
13   Cdirt,
14   Cplant,
15   Cwall_1,
16   Cwall_2,
17   Cwall_3,
18   Cwall_4,
19   Croundwall_1,
20   Croundwall_2,
21   Croundwall_3,
22   Croundwall_4,
23   Csteel_1,
24   Csteel_2,
25   Csteel_3,
26   Csteel_4,
27   Candroid,
28   Ceater_n,
29   Ceater_e,
30   Ceater_s,
31   Ceater_w,
32   Calien,
33   Cbug_1_n,
34   Cbug_1_e,
35   Cbug_1_s,
36   Cbug_1_w,
37   Cbug_2_n,
38   Cbug_2_e,
39   Cbug_2_s,
40   Cbug_2_w,
41   Ctank_1_n,
42   Ctank_1_e,
43   Ctank_1_s,
44   Ctank_1_w,
45   Ctank_2_n,
46   Ctank_2_e,
47   Ctank_2_s,
48   Ctank_2_w,
49   Cemerald,
50   Cdiamond,
51   Cstone,
52   Cbomb,
53   Cnut,
54   Cspring,
55   Cspring_e,
56   Cspring_w,
57   Cpush_emerald_e,
58   Cpush_emerald_w,
59   Cpush_diamond_e,
60   Cpush_diamond_w,
61   Cpush_stone_e,
62   Cpush_stone_w,
63   Cpush_bomb_e,
64   Cpush_bomb_w,
65   Cpush_nut_e,
66   Cpush_nut_w,
67   Cpush_spring_e,
68   Cpush_spring_w,
69   Cdynamite,
70   Cdynamite_1,
71   Cdynamite_2,
72   Cdynamite_3,
73   Cdynamite_4,
74   Ckey_1,
75   Ckey_2,
76   Ckey_3,
77   Ckey_4,
78   Ckey_5,
79   Ckey_6,
80   Ckey_7,
81   Ckey_8,
82   Cdoor_1,
83   Cdoor_2,
84   Cdoor_3,
85   Cdoor_4,
86   Cdoor_5,
87   Cdoor_6,
88   Cdoor_7,
89   Cdoor_8,
90   Cfake_door_1,
91   Cfake_door_2,
92   Cfake_door_3,
93   Cfake_door_4,
94   Cfake_door_5,
95   Cfake_door_6,
96   Cfake_door_7,
97   Cfake_door_8,
98   Cballoon,
99   Cball_1,
100   Cball_2,
101   Camoeba_1,
102   Camoeba_2,
103   Camoeba_3,
104   Camoeba_4,
105   Camoeba_5,
106   Camoeba_6,
107   Camoeba_7,
108   Camoeba_8,
109   Cdrip,
110   Cwonderwall,
111   Cwheel,
112   Cswitch,
113   Cbumper,
114   Cacid_nw,
115   Cacid_ne,
116   Cacid_sw,
117   Cacid_s,
118   Cacid_se,
119   Cacid_1,
120   Cacid_2,
121   Cacid_3,
122   Cacid_4,
123   Cacid_5,
124   Cacid_6,
125   Cacid_7,
126   Cacid_8,
127   Cfake_acid_1,
128   Cfake_acid_2,
129   Cfake_acid_3,
130   Cfake_acid_4,
131   Cfake_acid_5,
132   Cfake_acid_6,
133   Cfake_acid_7,
134   Cfake_acid_8,
135   Cfake_blank,
136   Cfake_grass,
137   Cfake_amoeba,
138   Clenses,
139   Cmagnify,
140   Csand,
141   Csand_stone,
142   Cslide_ns,
143   Cslide_ew,
144   Cwind_n,
145   Cwind_e,
146   Cwind_s,
147   Cwind_w,
148   Cwind_any,
149   Cwind_stop,
150   Cexit,
151   Cexit_1,
152   Cexit_2,
153   Cexit_3,
154   Cpause,
155   Cdecor_1,
156   Cdecor_2,
157   Cdecor_3,
158   Cdecor_4,
159   Cdecor_5,
160   Cdecor_6,
161   Cdecor_7,
162   Cdecor_8,
163   Cdecor_9,
164   Cdecor_10,
165   Cdecor_11,
166   Cdecor_12,
167   Calpha_0,
168   Calpha_1,
169   Calpha_2,
170   Calpha_3,
171   Calpha_4,
172   Calpha_5,
173   Calpha_6,
174   Calpha_7,
175   Calpha_8,
176   Calpha_9,
177   Calpha_excla,
178   Calpha_apost,
179   Calpha_comma,
180   Calpha_minus,
181   Calpha_perio,
182   Calpha_colon,
183   Calpha_quest,
184   Calpha_a,
185   Calpha_b,
186   Calpha_c,
187   Calpha_d,
188   Calpha_e,
189   Calpha_f,
190   Calpha_g,
191   Calpha_h,
192   Calpha_i,
193   Calpha_j,
194   Calpha_k,
195   Calpha_l,
196   Calpha_m,
197   Calpha_n,
198   Calpha_o,
199   Calpha_p,
200   Calpha_q,
201   Calpha_r,
202   Calpha_s,
203   Calpha_t,
204   Calpha_u,
205   Calpha_v,
206   Calpha_w,
207   Calpha_x,
208   Calpha_y,
209   Calpha_z,
210   Calpha_arrow_e,
211   Calpha_arrow_w,
212   Calpha_copyr,
213
214   CAVE_TILE_MAX
215 };
216
217 struct CAVE
218 {
219   int width;                    /* cave width */
220   int height;                   /* cave height */
221
222   int player_x[MAX_PLAYERS];    /* player x position */
223   int player_y[MAX_PLAYERS];    /* player y position */
224
225   int time_seconds;             /* available time (seconds) */
226   int gems_needed;              /* emeralds needed */
227
228   int eater_score;              /* score for killing eater */
229   int alien_score;              /* score for killing alien */
230   int bug_score;                /* score for killing bug */
231   int tank_score;               /* score for killing tank */
232   int slurp_score;              /* score for slurping alien with spring */
233   int nut_score;                /* score for cracking nut to emerald */
234   int emerald_score;            /* score for collecting emerald */
235   int diamond_score;            /* score for collecting diamond */
236   int dynamite_score;           /* score for collecting dynamite */
237   int key_score;                /* score for colleting key */
238   int lenses_score;             /* score for collecting lenses */
239   int magnify_score;            /* score for collecting magnifier */
240   int exit_score;               /* score for entering exit */
241
242   int android_move_time;        /* reset time for android movement */
243   int android_clone_time;       /* reset time for android cloning */
244   int ball_time;                /* reset time for ball activity */
245   int amoeba_time;              /* amoeba growth speed */
246   int wonderwall_time;          /* reset time for wonderwall activity */
247   int wheel_time;               /* reset time for wheel activity */
248   int wheel_x;                  /* wheel x position */
249   int wheel_y;                  /* wheel y position */
250   int lenses_time;              /* reset time for lenses activity */
251   int magnify_time;             /* reset time for magnifier activity */
252   int wind_time;                /* reset time for wind activity */
253   int wind_direction;           /* wind direction */
254
255   int num_eater_arrays;         /* number of eater data arrays used */
256   int num_ball_arrays;          /* number of ball data arrays used */
257
258   boolean testmode;             /* flag for test mode */
259   boolean teamwork;             /* flag for two player mode */
260   boolean infinite;             /* flag for infinitely wide cave */
261   boolean infinite_true;        /* flag for truely infinitely wide cave */
262
263   boolean ball_random;          /* flag if ball is random */
264   boolean ball_active;          /* flag if ball is already active */
265   boolean wonderwall_active;    /* flag if wonderwall is already active */
266   boolean wheel_active;         /* flag if wheel is already active */
267   boolean lenses_active;        /* flag if lenses are already active */
268   boolean magnify_active;       /* flag if magnifier is already active */
269
270   short eater_array[8][9];              /* eater data */
271   short ball_array[8][8];               /* ball data */
272   short android_array[GAME_TILE_MAX];   /* android clone data */
273
274   short cave[CAVE_WIDTH][CAVE_HEIGHT];  /* cave data */
275 };
276
277 #endif  // CAVE_H