Rev 5287 | Rev 5297 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 5287 | Rev 5296 | ||
---|---|---|---|
Line 33... | Line 33... | ||
33 | #define FIELD_GUN_3 15 |
33 | #define FIELD_GUN_3 15 |
34 | #define FIELD_BOX_MISSLE_0 16 |
34 | #define FIELD_BOX_MISSLE_0 16 |
35 | #define FIELD_BOX_MISSLE_1 17 |
35 | #define FIELD_BOX_MISSLE_1 17 |
36 | #define FIELD_BOX_MISSLE_2 18 |
36 | #define FIELD_BOX_MISSLE_2 18 |
37 | #define FIELD_BOX_MISSLE_3 19 |
37 | #define FIELD_BOX_MISSLE_3 19 |
- | 38 | #define FIELD_WALL_X 20 |
|
- | 39 | #define FIELD_WALL_H 21 |
|
- | 40 | #define FIELD_WALL_V 22 |
|
- | 41 | #define FIELD_BOX_WATER 23 |
|
38 | #define FIELD_BRICK_DES 20 |
42 | #define FIELD_BRICK_DES 24 |
39 | #define FIELD_BOX_WATER 21 |
43 | #define FIELD_CRATER 25 |
40 | - | ||
Line 41... | Line 44... | ||
41 | 44 | ||
Line 42... | Line 45... | ||
42 | char* header = "Laser Tank"; |
45 | char* header = "Laser Tank"; |
43 | 46 | ||
Line 55... | Line 58... | ||
55 | } |
58 | } |
Line 56... | Line 59... | ||
56 | 59 | ||
57 | Level *levels; |
60 | Level *levels; |
58 | int levelCount = 0; |
61 | int levelCount = 0; |
- | 62 | int levelIndex = 0; |
|
Line 59... | Line 63... | ||
59 | int levelIndex = 0; |
63 | int levelPage = 0; |
60 | 64 | ||
61 | RGBA img_tank[576]; |
65 | RGBA img_tank[576]; |
62 | RGB img_water[576]; |
66 | RGB img_water[576]; |
63 | RGB img_brick[11][576]; |
67 | RGB img_brick[11][576]; |
- | 68 | RGB img_waterbox[576]; |
|
64 | RGB img_waterbox[576]; |
69 | RGB img_ground[576]; |
- | 70 | RGB img_crater[576]; |
|
- | 71 | RGB img_wall[576]; |
|
- | 72 | RGB img_wall_x[576]; |
|
65 | RGB img_ground[576]; |
73 | RGB img_wall_h[576]; |
66 | RGB img_wall[576]; |
74 | RGB img_wall_v[576]; |
67 | RGB img_finish[576]; |
75 | RGB img_finish[576]; |
68 | RGBA img_box[576]; |
76 | RGBA img_box[576]; |
69 | RGBA img_laser[576]; |
77 | RGBA img_laser[576]; |
70 | RGB img_mirror[4][576]; |
78 | RGB img_mirror[4][576]; |
71 | RGBA img_mini_mirror[4][576]; |
79 | RGBA img_mini_mirror[2304]; |
72 | RGBA img_laser1[576]; |
80 | RGBA img_laser1[576]; |
73 | RGBA img_laser2[576]; |
81 | RGBA img_laser2[576]; |
74 | RGB img_brick1[576]; |
82 | RGB img_brick1[576]; |
75 | RGB img_menu[147456]; |
83 | RGB img_menu[147456]; |
- | 84 | RGBA img_explosion[8064]; |
|
- | 85 | RGBA img_gun[576]; |
|
- | 86 | RGB img_gamebg[9216]; |
|
- | 87 | ||
- | 88 | RGBA img_number_box[2550]; |
|
- | 89 | RGBA img_numbers[3500]; |
|
Line 76... | Line 90... | ||
76 | RGBA img_explosion[8064]; |
90 | RGBA img_button1[3249]; |
Line 77... | Line 91... | ||
77 | RGBA img_gun[576]; |
91 | RGBA img_button_arrow[375]; |
Line 78... | Line 92... | ||
78 | 92 | ||
79 | RGB img_button[7500]; |
93 | RGB img_levels[147456]; |
Line 80... | Line 94... | ||
80 | 94 | ||
- | 95 | Player player; |
|
81 | Player player; |
96 | |
82 | 97 | CKosRender* renderPlayer; |
|
83 | CKosRender* renderPlayer; |
98 | CKosImage* objPlayer; |
84 | CKosImage* objPlayer; |
- | |
85 | - | ||
86 | CKosRender* renderLaser; |
99 | |
87 | CKosImage* objLaser; |
- | |
88 | CKosImage* objLaser1; |
- | |
89 | CKosImage* objLaser2; |
100 | CKosRender* renderBox; |
90 | 101 | ||
91 | CKosRender* renderMirror; |
- | |
92 | CKosImage* objMiniMirror[4]; |
- | |
93 | 102 | CKosImage* objLaser; |
|
Line -... | Line 103... | ||
- | 103 | CKosImage* objLaser1; |
|
- | 104 | CKosImage* objLaser2; |
|
- | 105 | CKosImage* objMiniMirror; |
|
- | 106 | CKosImage* objBox; |
|
- | 107 | CKosImage* objGun; |
|
- | 108 | CKosImage* objExplosion; |
|
- | 109 | ||
94 | CKosRender* renderBox; |
110 | CKosRender* renderLevels; |
95 | CKosImage* objBox; |
111 | CKosImage* objnumber_box; |
Line 96... | Line 112... | ||
96 | CKosImage* objGun; |
112 | CKosImage* objnumbers; |
97 | 113 | ||
Line 145... | Line 161... | ||
145 | { |
161 | { |
146 | switch (GetField(position, din)) |
162 | switch (GetField(position, din)) |
147 | { |
163 | { |
148 | case FIELD_WALL: |
164 | case FIELD_WALL: |
149 | return (RGB*)img_wall; |
165 | return (RGB*)img_wall; |
- | 166 | case FIELD_WALL_X: |
|
- | 167 | return (RGB*)img_wall_x; |
|
- | 168 | case FIELD_WALL_H: |
|
- | 169 | return (RGB*)img_wall_h; |
|
- | 170 | case FIELD_WALL_V: |
|
- | 171 | return (RGB*)img_wall_v; |
|
150 | case FIELD_MISSLE_0: |
172 | case FIELD_MISSLE_0: |
151 | return (RGB*)img_mirror[0]; |
173 | return (RGB*)img_mirror[0]; |
152 | case FIELD_MISSLE_1: |
174 | case FIELD_MISSLE_1: |
153 | return (RGB*)img_mirror[1]; |
175 | return (RGB*)img_mirror[1]; |
154 | case FIELD_MISSLE_2: |
176 | case FIELD_MISSLE_2: |
155 | return (RGB*)img_mirror[2]; |
177 | return (RGB*)img_mirror[2]; |
156 | case FIELD_MISSLE_3: |
178 | case FIELD_MISSLE_3: |
157 | return (RGB*)img_mirror[3]; |
179 | return (RGB*)img_mirror[3]; |
- | 180 | case FIELD_BOX_MISSLE_0: |
|
- | 181 | renderBox->RenderImg(GetImg(position, false), Point(0, 0), 24, 24); |
|
- | 182 | objMiniMirror->Draw(Point(0, 0), 0, 0); |
|
- | 183 | return renderBox->buffer; |
|
- | 184 | case FIELD_BOX_MISSLE_1: |
|
- | 185 | renderBox->RenderImg(GetImg(position, false), Point(0, 0), 24, 24); |
|
- | 186 | objMiniMirror->Draw(Point(0, 0), 0, 1); |
|
- | 187 | return renderBox->buffer; |
|
- | 188 | case FIELD_BOX_MISSLE_2: |
|
- | 189 | renderBox->RenderImg(GetImg(position, false), Point(0, 0), 24, 24); |
|
- | 190 | objMiniMirror->Draw(Point(0, 0), 0, 2); |
|
- | 191 | return renderBox->buffer; |
|
- | 192 | case FIELD_BOX_MISSLE_3: |
|
- | 193 | renderBox->RenderImg(GetImg(position, false), Point(0, 0), 24, 24); |
|
- | 194 | objMiniMirror->Draw(Point(0, 0), 0, 3); |
|
- | 195 | return renderBox->buffer; |
|
158 | case FIELD_GUN_0: |
196 | case FIELD_GUN_0: |
159 | renderBox->RenderImg(GetImg(position, false), Point(0, 0), 24, 24); |
197 | renderBox->RenderImg(GetImg(position, false), Point(0, 0), 24, 24); |
160 | objGun->Draw(Point(0, 0), 0); |
198 | objGun->Draw(Point(0, 0), 0); |
161 | return renderBox->buffer; |
199 | return renderBox->buffer; |
162 | case FIELD_GUN_1: |
200 | case FIELD_GUN_1: |
Line 171... | Line 209... | ||
171 | renderBox->RenderImg(GetImg(position, false), Point(0, 0), 24, 24); |
209 | renderBox->RenderImg(GetImg(position, false), Point(0, 0), 24, 24); |
172 | objGun->Draw(Point(0, 0), 270); |
210 | objGun->Draw(Point(0, 0), 270); |
173 | return renderBox->buffer; |
211 | return renderBox->buffer; |
174 | case FIELD_GROUND: |
212 | case FIELD_GROUND: |
175 | return (RGB*)img_ground; |
213 | return (RGB*)img_ground; |
- | 214 | case FIELD_CRATER: |
|
- | 215 | return (RGB*)img_crater; |
|
176 | case FIELD_BOX: |
216 | case FIELD_BOX: |
177 | renderBox->RenderImg(GetImg(position, false), Point(0, 0), 24, 24); |
217 | renderBox->RenderImg(GetImg(position, false), Point(0, 0), 24, 24); |
178 | objBox->Draw(Point(0, 0), 0); |
218 | objBox->Draw(Point(0, 0), 0); |
179 | return renderBox->buffer; |
219 | return renderBox->buffer; |
180 | // return (RGB*)img_box; |
- | |
181 | case FIELD_FINISH: |
220 | case FIELD_FINISH: |
182 | return (RGB*)img_finish; |
221 | return (RGB*)img_finish; |
183 | case FIELD_BRICK: |
222 | case FIELD_BRICK: |
184 | return (RGB*)img_brick[level[position.Y][position.X].l]; |
223 | return (RGB*)img_brick[level[position.Y][position.X].l]; |
185 | case FIELD_WATER: |
224 | case FIELD_WATER: |
Line 200... | Line 239... | ||
200 | switch (GetField(position, true)) |
239 | switch (GetField(position, true)) |
201 | { |
240 | { |
202 | case FIELD_NONE: |
241 | case FIELD_NONE: |
203 | case FIELD_WATER: |
242 | case FIELD_WATER: |
204 | case FIELD_GROUND: |
243 | case FIELD_GROUND: |
- | 244 | case FIELD_CRATER: |
|
205 | case FIELD_BOX_WATER: |
245 | case FIELD_BOX_WATER: |
206 | case FIELD_BRICK_DES: |
246 | case FIELD_BRICK_DES: |
207 | case FIELD_FINISH: |
247 | case FIELD_FINISH: |
208 | return 1; |
248 | return 1; |
209 | case FIELD_GUN_0: |
249 | case FIELD_GUN_0: |
Line 218... | Line 258... | ||
218 | return 0; |
258 | return 0; |
219 | } |
259 | } |
Line 220... | Line 260... | ||
220 | 260 | ||
221 | bool ExistGun1(Point position, Point vec, int gun) |
261 | bool ExistGun1(Point position, Point vec, int gun) |
222 | { |
- | |
223 | rtlDebugOutString("ExistGun"); |
262 | { |
Line 224... | Line 263... | ||
224 | Point pos = position; |
263 | Point pos = position; |
225 | 264 | ||
226 | Byte result = 1; |
265 | Byte result = 1; |
Line 251... | Line 290... | ||
251 | void DrawElevent(Point position, bool din) |
290 | void DrawElevent(Point position, bool din) |
252 | { |
291 | { |
253 | kos_PutImage(GetImg(position, din), 24, 24, 24 * position.X, 24 * position.Y); |
292 | kos_PutImage(GetImg(position, din), 24, 24, 24 * position.X, 24 * position.Y); |
254 | } |
293 | } |
Line 255... | Line 294... | ||
255 | 294 | ||
256 | void MoveBox(Point a, Point b) |
295 | void MoveElement(Point a, Point b, int element) |
257 | { |
- | |
258 | Byte code = GetField(a, true); |
296 | { |
259 | level[a.Y][a.X].d = FIELD_NONE; |
297 | level[a.Y][a.X].d = FIELD_NONE; |
260 | DrawElevent(a, true); |
298 | DrawElevent(a, false); |
261 | if (level[b.Y][b.X].s == FIELD_WATER) |
299 | if (level[b.Y][b.X].s == FIELD_WATER) |
262 | { |
300 | { |
263 | if (code = FIELD_BOX) |
301 | if (element == FIELD_BOX) |
264 | level[b.Y][b.X].s = FIELD_BOX_WATER; |
- | |
265 | DrawElevent(b, true); |
302 | level[b.Y][b.X].s = FIELD_BOX_WATER; |
266 | } |
303 | } |
267 | else |
- | |
268 | { |
304 | else |
269 | level[b.Y][b.X].d = code; |
305 | level[b.Y][b.X].d = element; |
270 | DrawElevent(b, true); |
306 | DrawElevent(b, true); |
271 | } |
- | |
Line 272... | Line 307... | ||
272 | } |
307 | } |
273 | 308 | ||
274 | void animation(Point vector, float angle, int obj) |
309 | void animation(Point vector, float angle, int obj) |
275 | { |
310 | { |
276 | for (int i = 2; i < 23; ++i) |
311 | for (int i = 2; i < 23; ++i) |
- | 312 | { |
|
277 | { |
313 | kos_WindowRedrawStatus(1); |
278 | kos_WindowRedrawStatus(1); |
314 | |
Line 279... | Line 315... | ||
279 | DrawElevent(player.position, false); |
315 | DrawElevent(player.position, false); |
- | 316 | DrawElevent(player.position + vector, false); |
|
- | 317 | ||
280 | DrawElevent(player.position + vector, false); |
318 | renderPlayer->RenderImg(GetImg(player.position, false), vector * -i, 24, 24); |
281 | 319 | renderPlayer->RenderImg(GetImg(player.position + vector, false), vector * -i + vector * 24, 24, 24); |
|
282 | renderPlayer->RenderImg(GetImg(player.position, true), Point(0, 0), 24, 24); |
320 | |
283 | objPlayer->Draw(Point(0, 0), angle); |
321 | objPlayer->Draw(Point(0, 0), angle); |
284 | renderPlayer->Draw(player.position * 24 + vector * i); |
322 | renderPlayer->Draw(player.position * 24 + vector * i); |
- | 323 | if (level[player.position.Y + vector.Y][player.position.X + vector.X].d == obj) |
|
- | 324 | { |
|
285 | if (level[player.position.Y + vector.Y][player.position.X + vector.X].d == obj) |
325 | //renderBox->RenderImg(GetImg(player.position + vector, true), Point(0, 0), 24, 24); |
286 | { |
326 | renderBox->RenderImg(GetImg(player.position + vector, false), vector * -i, 24, 24); |
287 | renderBox->RenderImg(GetImg(player.position + vector, true), Point(0, 0), 24, 24); |
327 | renderBox->RenderImg(GetImg(player.position + vector * 2, false), vector * -i + vector * 24, 24, 24); |
288 | switch (obj) |
328 | switch (obj) |
289 | { |
329 | { |
Line 297... | Line 337... | ||
297 | objGun->Draw(Point(0, 0), 180); |
337 | objGun->Draw(Point(0, 0), 180); |
298 | break; |
338 | break; |
299 | case FIELD_GUN_3: |
339 | case FIELD_GUN_3: |
300 | objGun->Draw(Point(0, 0), 270); |
340 | objGun->Draw(Point(0, 0), 270); |
301 | break; |
341 | break; |
- | 342 | case FIELD_BOX_MISSLE_0: |
|
- | 343 | objMiniMirror->Draw(Point(0, 0), 0, 0); |
|
- | 344 | break; |
|
- | 345 | case FIELD_BOX_MISSLE_1: |
|
- | 346 | objMiniMirror->Draw(Point(0, 0), 0, 1); |
|
- | 347 | break; |
|
- | 348 | case FIELD_BOX_MISSLE_2: |
|
- | 349 | objMiniMirror->Draw(Point(0, 0), 0, 2); |
|
- | 350 | break; |
|
- | 351 | case FIELD_BOX_MISSLE_3: |
|
- | 352 | objMiniMirror->Draw(Point(0, 0), 0, 3); |
|
- | 353 | break; |
|
302 | case FIELD_BOX: |
354 | case FIELD_BOX: |
303 | objBox->Draw(Point(0, 0), 0); |
355 | objBox->Draw(Point(0, 0), 0); |
304 | } |
356 | } |
305 | renderBox->Draw((player.position + vector) * 24 + vector * i); |
357 | renderBox->Draw((player.position + vector) * 24 + vector * i); |
306 | } |
358 | } |
307 | kos_WindowRedrawStatus(2); |
359 | kos_WindowRedrawStatus(2); |
308 | pause(1); |
360 | pause(1); |
309 | } |
361 | } |
Line 310... | Line 362... | ||
310 | 362 | ||
311 | if (level[player.position.Y + vector.Y][player.position.X + vector.X].d == obj) |
363 | if (level[player.position.Y + vector.Y][player.position.X + vector.X].d == obj) |
Line 312... | Line 364... | ||
312 | MoveBox(player.position + vector, player.position + vector * 2); |
364 | MoveElement(player.position + vector, player.position + vector * 2, GetField(player.position + vector, true)); |
313 | 365 | ||
314 | DrawElevent(player.position, true); |
366 | DrawElevent(player.position, true); |
315 | DrawElevent(player.position + vector, true); |
367 | DrawElevent(player.position + vector, true); |
Line 321... | Line 373... | ||
321 | ExistGun(player.position); |
373 | ExistGun(player.position); |
322 | } |
374 | } |
Line 323... | Line 375... | ||
323 | 375 | ||
324 | void DrawLaser(Point position, int frame, RGB color) |
376 | void DrawLaser(Point position, int frame, RGB color) |
325 | { |
377 | { |
- | 378 | renderBox->RenderImg(GetImg(position, false), Point(0, 0), 24, 24); |
|
- | 379 | Byte code = GetField(position, true); |
|
- | 380 | if (code == FIELD_BOX_MISSLE_0 || code == FIELD_BOX_MISSLE_1 || code == FIELD_BOX_MISSLE_2 || code == FIELD_BOX_MISSLE_3) |
|
326 | renderLaser->RenderImg(GetImg(position, false), Point(0, 0), 24, 24); |
381 | objMiniMirror->Draw(Point(0, 0), 0, code - FIELD_BOX_MISSLE_0); |
327 | switch (frame) |
382 | switch (frame) |
328 | { |
383 | { |
329 | case 1: |
384 | case 1: |
330 | objLaser->Draw(Point(0, 0), 0, color); |
385 | objLaser->Draw(Point(0, 0), 0, color); |
Line 334... | Line 389... | ||
334 | break; |
389 | break; |
335 | case 3: |
390 | case 3: |
336 | objLaser2->Draw(Point(0, 0), 0, color); |
391 | objLaser2->Draw(Point(0, 0), 0, color); |
337 | break; |
392 | break; |
338 | default: |
393 | default: |
339 | objLaser1->Draw(Point(-1, 0), (float)frame, color); |
394 | objLaser1->Draw(Point(0, 0), (float)frame, color); |
340 | } |
395 | } |
341 | renderLaser->Draw(position * 24); |
396 | renderBox->Draw(position * 24); |
342 | level[position.Y][position.X].l = 1; |
397 | level[position.Y][position.X].l = 1; |
343 | } |
398 | } |
Line -... | Line 399... | ||
- | 399 | ||
- | 400 | bool LaserMoveElement(Point position, Point vector, int code, RGB color) |
|
- | 401 | { |
|
- | 402 | if (position + vector != player.position) |
|
- | 403 | { |
|
- | 404 | switch (GetField(position + vector, true)) |
|
- | 405 | { |
|
- | 406 | case FIELD_GROUND: |
|
- | 407 | case FIELD_CRATER: |
|
- | 408 | case FIELD_WATER: |
|
- | 409 | case FIELD_BRICK_DES: |
|
- | 410 | case FIELD_BOX_WATER: |
|
- | 411 | for (int i = 2; i < 23; ++i) |
|
- | 412 | { |
|
- | 413 | renderBox->RenderImg(GetImg(position, false), Point(0, 0), 24, 24); |
|
- | 414 | if (vector.X != 0) |
|
- | 415 | objLaser->Draw((vector.X > 0) ? Point(i - 24, 0) : Point(24 - i, 0), 0, color); |
|
- | 416 | else |
|
- | 417 | objLaser->Draw((vector.Y > 0) ? Point(0, i - 24) : Point(0, 24 - i), 90, color); |
|
- | 418 | renderBox->Draw(position * 24); |
|
- | 419 | ||
- | 420 | DrawElevent(position + vector, false); |
|
- | 421 | ||
- | 422 | renderBox->RenderImg(GetImg(position, false), vector * -i, 24, 24); |
|
- | 423 | renderBox->RenderImg(GetImg(position + vector, false), vector * -i + vector * 24, 24, 24); |
|
- | 424 | ||
- | 425 | switch (code) |
|
- | 426 | { |
|
- | 427 | case FIELD_GUN_0: |
|
- | 428 | objGun->Draw(Point(0, 0), 0); |
|
- | 429 | break; |
|
- | 430 | case FIELD_GUN_1: |
|
- | 431 | objGun->Draw(Point(0, 0), 90); |
|
- | 432 | break; |
|
- | 433 | case FIELD_GUN_2: |
|
- | 434 | objGun->Draw(Point(0, 0), 180); |
|
- | 435 | break; |
|
- | 436 | case FIELD_GUN_3: |
|
- | 437 | objGun->Draw(Point(0, 0), 270); |
|
- | 438 | break; |
|
- | 439 | case FIELD_BOX_MISSLE_0: |
|
- | 440 | objMiniMirror->Draw(Point(0, 0), 0, 0); |
|
- | 441 | break; |
|
- | 442 | case FIELD_BOX_MISSLE_1: |
|
- | 443 | objMiniMirror->Draw(Point(0, 0), 0, 1); |
|
- | 444 | break; |
|
- | 445 | case FIELD_BOX_MISSLE_2: |
|
- | 446 | objMiniMirror->Draw(Point(0, 0), 0, 2); |
|
- | 447 | break; |
|
- | 448 | case FIELD_BOX_MISSLE_3: |
|
- | 449 | objMiniMirror->Draw(Point(0, 0), 0, 3); |
|
- | 450 | break; |
|
- | 451 | case FIELD_BOX: |
|
- | 452 | objBox->Draw(Point(0, 0), 0); |
|
- | 453 | } |
|
- | 454 | renderBox->Draw((position)* 24 + vector * i); |
|
- | 455 | kos_Pause(1); |
|
- | 456 | } |
|
- | 457 | MoveElement(position, position + vector, code); |
|
- | 458 | return true; |
|
- | 459 | } |
|
- | 460 | } |
|
- | 461 | return false; |
|
- | 462 | } |
|
344 | 463 | ||
345 | void Laser(Point pos, Point vec, RGB color) |
464 | void Laser(Point pos, Point vec, RGB color) |
346 | { |
465 | { |
347 | Point vector = vec; |
466 | Point vector = vec; |
348 | Point position = pos + vector; |
467 | Point position = pos + vector; |
Line 372... | Line 491... | ||
372 | DrawElevent(Point(x, y), true); |
491 | DrawElevent(Point(x, y), true); |
373 | level[y][x].l = 0; |
492 | level[y][x].l = 0; |
374 | } |
493 | } |
375 | for (int i = 0; i < 14; ++i) |
494 | for (int i = 0; i < 14; ++i) |
376 | { |
495 | { |
377 | renderExplosion->RenderImg(GetImg(position, false), Point(0, 0), 24, 24); |
496 | renderBox->RenderImg(GetImg(position, false), Point(0, 0), 24, 24); |
378 | objExplosion->Draw(Point(0, 0), 0, i); |
497 | objExplosion->Draw(Point(0, 0), 0, i); |
379 | renderExplosion->Draw((position)* 24); |
498 | renderBox->Draw((position)* 24); |
380 | pause(2); |
499 | pause(2); |
381 | } |
500 | } |
382 | level[position.Y][position.X].d = FIELD_NONE; |
501 | level[position.Y][position.X].d = FIELD_NONE; |
- | 502 | if (level[position.Y][position.X].s == FIELD_GROUND) |
|
- | 503 | level[position.Y][position.X].s = FIELD_CRATER; |
|
383 | draw_window(); |
504 | draw_window(); |
384 | return; |
505 | return; |
385 | } |
506 | } |
386 | else |
507 | else |
387 | if (position + vector != player.position) |
- | |
388 | switch (GetField(position + vector, true)) |
- | |
389 | { |
508 | { |
390 | case FIELD_GROUND: |
- | |
391 | case FIELD_WATER: |
- | |
392 | case FIELD_BRICK_DES: |
- | |
393 | case FIELD_BOX_WATER: |
- | |
394 | for (int i = 2; i < 23; ++i) |
- | |
395 | { |
- | |
396 | DrawElevent(position, false); |
- | |
397 | DrawElevent(position + vector, true); |
509 | if (!LaserMoveElement(position, vector, code, color)) |
398 | DrawLaser(position, (vector.X != 0) ? 1 : 2, color); |
- | |
399 | renderBox->RenderImg(GetImg(position, false), Point(0, 0), 24, 24); |
- | |
400 | switch (code) |
- | |
401 | { |
510 | { |
402 | case FIELD_GUN_0: |
- | |
403 | objGun->Draw(Point(0, 0), 0); |
- | |
404 | break; |
- | |
405 | case FIELD_GUN_1: |
- | |
406 | objGun->Draw(Point(0, 0), 90); |
- | |
407 | break; |
- | |
408 | case FIELD_GUN_2: |
- | |
409 | objGun->Draw(Point(0, 0), 180); |
511 | for (int i = 2; i < 23; ++i) |
410 | break; |
- | |
411 | case FIELD_GUN_3: |
- | |
412 | objGun->Draw(Point(0, 0), 270); |
- | |
413 | break; |
- | |
414 | case FIELD_BOX: |
- | |
415 | objBox->Draw(Point(0, 0), 0); |
- | |
416 | } |
- | |
417 | renderBox->Draw((position) * 24 + vector * i); |
- | |
418 | kos_Pause(1); |
512 | pause(1); |
419 | } |
513 | } |
420 | MoveBox(position, position + vector); |
514 | else |
421 | LaserGun = true; |
515 | LaserGun = true; |
422 | } |
516 | } |
423 | en = false; |
517 | en = false; |
424 | break; |
518 | break; |
425 | case FIELD_BRICK: |
519 | case FIELD_BRICK: |
Line 435... | Line 529... | ||
435 | DrawElevent(position, false); |
529 | DrawElevent(position, false); |
436 | pause(5); |
530 | pause(5); |
437 | } |
531 | } |
438 | en = false; |
532 | en = false; |
439 | break; |
533 | break; |
- | 534 | case FIELD_WALL_X: |
|
- | 535 | break; |
|
- | 536 | case FIELD_WALL_H: |
|
- | 537 | if (vector.X == 0) |
|
- | 538 | { |
|
- | 539 | for (int i = 2; i < 23; ++i) |
|
- | 540 | pause(1); |
|
- | 541 | en = false; |
|
- | 542 | } |
|
- | 543 | break; |
|
- | 544 | case FIELD_WALL_V: |
|
- | 545 | if (vector.Y == 0) |
|
- | 546 | { |
|
- | 547 | for (int i = 2; i < 23; ++i) |
|
- | 548 | pause(1); |
|
- | 549 | en = false; |
|
- | 550 | } |
|
- | 551 | break; |
|
440 | case FIELD_GROUND: |
552 | case FIELD_GROUND: |
- | 553 | case FIELD_CRATER: |
|
441 | case FIELD_WATER: |
554 | case FIELD_WATER: |
442 | case FIELD_FINISH: |
555 | case FIELD_FINISH: |
443 | case FIELD_BRICK_DES: |
556 | case FIELD_BRICK_DES: |
444 | case FIELD_BOX_WATER: |
557 | case FIELD_BOX_WATER: |
445 | if (player.position == position) |
558 | if (player.position == position) |
Line 453... | Line 566... | ||
453 | DrawElevent(Point(x, y), true); |
566 | DrawElevent(Point(x, y), true); |
454 | level[y][x].l = 0; |
567 | level[y][x].l = 0; |
455 | } |
568 | } |
456 | for (int i = 0; i < 14; ++i) |
569 | for (int i = 0; i < 14; ++i) |
457 | { |
570 | { |
458 | renderExplosion->RenderImg(GetImg(position, false), Point(0, 0), 24, 24); |
571 | renderBox->RenderImg(GetImg(position, false), Point(0, 0), 24, 24); |
459 | objExplosion->Draw(Point(0, 0), 0, i); |
572 | objExplosion->Draw(Point(0, 0), 0, i); |
460 | renderExplosion->Draw((position)* 24); |
573 | renderBox->Draw((position)* 24); |
461 | pause(2); |
574 | pause(2); |
462 | } |
575 | } |
- | 576 | level[player.position.Y][player.position.X].s = FIELD_CRATER; |
|
463 | gameStatus = GAME_DEFEAT; |
577 | gameStatus = GAME_DEFEAT; |
464 | draw_window(); |
578 | draw_window(); |
465 | return; |
579 | return; |
466 | } |
580 | } |
467 | else |
581 | else |
Line 470... | Line 584... | ||
470 | DrawLaser(position, 3, color); |
584 | DrawLaser(position, 3, color); |
471 | else |
585 | else |
472 | DrawLaser(position, (vector.X != 0) ? 1 : 2, color); |
586 | DrawLaser(position, (vector.X != 0) ? 1 : 2, color); |
473 | } |
587 | } |
474 | break; |
588 | break; |
475 | case FIELD_MISSLE_0: |
589 | case FIELD_BOX_MISSLE_0: |
- | 590 | rtlDebugOutString("FIELD_BOX_MISSLE_0"); |
|
476 | if (vector == Point(-1, 0) || vector == Point(0, -1)) |
591 | if (vector == Point(-1, 0) || vector == Point(0, -1)) |
477 | { |
592 | { |
478 | vector = (vector.Y == -1) ? Point(1, 0) : Point(0, 1); |
593 | vector = (vector.Y == -1) ? Point(1, 0) : Point(0, 1); |
479 | DrawLaser(position, 0, color); |
594 | DrawLaser(position, 0, color); |
480 | } |
595 | } |
481 | else |
596 | else |
482 | { |
597 | { |
- | 598 | if (!LaserMoveElement(position, vector, code, color)) |
|
- | 599 | { |
|
483 | for (int i = 2; i < 23; ++i) |
600 | for (int i = 2; i < 23; ++i) |
484 | pause(1); |
601 | pause(1); |
- | 602 | } |
|
- | 603 | else |
|
- | 604 | LaserGun = true; |
|
485 | en = false; |
605 | en = false; |
486 | } |
606 | } |
487 | break; |
607 | break; |
488 | case FIELD_MISSLE_1: |
608 | case FIELD_BOX_MISSLE_1: |
- | 609 | rtlDebugOutString("FIELD_BOX_MISSLE_1"); |
|
489 | if (vector == Point(0, -1) || vector == Point(1, 0)) |
610 | if (vector == Point(0, -1) || vector == Point(1, 0)) |
490 | { |
611 | { |
491 | vector = (vector.Y == -1) ? Point(-1, 0) : Point(0, 1); |
612 | vector = (vector.Y == -1) ? Point(-1, 0) : Point(0, 1); |
492 | DrawLaser(position, 90, color); |
613 | DrawLaser(position, 90, color); |
493 | } |
614 | } |
494 | else |
615 | else |
495 | { |
616 | { |
- | 617 | if (!LaserMoveElement(position, vector, code, color)) |
|
- | 618 | { |
|
496 | for (int i = 2; i < 23; ++i) |
619 | for (int i = 2; i < 23; ++i) |
497 | pause(1); |
620 | pause(1); |
- | 621 | } |
|
- | 622 | else |
|
- | 623 | LaserGun = true; |
|
498 | en = false; |
624 | en = false; |
499 | } |
625 | } |
500 | break; |
626 | break; |
- | 627 | case FIELD_BOX_MISSLE_2: |
|
- | 628 | rtlDebugOutString("FIELD_BOX_MISSLE_2"); |
|
- | 629 | if (vector == Point(1, 0) || vector == Point(0, 1)) |
|
- | 630 | { |
|
- | 631 | vector = (vector.Y == 1) ? Point(-1, 0) : Point(0, -1); |
|
- | 632 | DrawLaser(position, 180, color); |
|
- | 633 | } |
|
- | 634 | else |
|
- | 635 | { |
|
- | 636 | if (!LaserMoveElement(position, vector, code, color)) |
|
- | 637 | { |
|
- | 638 | for (int i = 2; i < 23; ++i) |
|
- | 639 | pause(1); |
|
- | 640 | } |
|
- | 641 | else |
|
- | 642 | LaserGun = true; |
|
- | 643 | en = false; |
|
- | 644 | } |
|
- | 645 | break; |
|
501 | case FIELD_MISSLE_3: |
646 | case FIELD_BOX_MISSLE_3: |
- | 647 | rtlDebugOutString("FIELD_BOX_MISSLE_3"); |
|
502 | if (vector == Point(-1, 0) || vector == Point(0, 1)) |
648 | if (vector == Point(-1, 0) || vector == Point(0, 1)) |
503 | { |
649 | { |
504 | vector = (vector.Y == 1) ? Point(1, 0) : Point(0, -1); |
650 | vector = (vector.Y == 1) ? Point(1, 0) : Point(0, -1); |
505 | DrawLaser(position, 270, color); |
651 | DrawLaser(position, 270, color); |
506 | } |
652 | } |
507 | else |
653 | else |
508 | { |
654 | { |
- | 655 | if (!LaserMoveElement(position, vector, code, color)) |
|
- | 656 | { |
|
- | 657 | for (int i = 2; i < 23; ++i) |
|
- | 658 | pause(1); |
|
- | 659 | } |
|
- | 660 | else |
|
- | 661 | LaserGun = true; |
|
- | 662 | en = false; |
|
- | 663 | } |
|
- | 664 | break; |
|
- | 665 | case FIELD_MISSLE_0: |
|
- | 666 | if (vector == Point(-1, 0) || vector == Point(0, -1)) |
|
- | 667 | { |
|
- | 668 | vector = (vector.Y == -1) ? Point(1, 0) : Point(0, 1); |
|
- | 669 | DrawLaser(position, 0, color); |
|
- | 670 | } |
|
- | 671 | else |
|
- | 672 | { |
|
- | 673 | for (int i = 2; i < 23; ++i) |
|
- | 674 | pause(1); |
|
- | 675 | en = false; |
|
- | 676 | } |
|
- | 677 | break; |
|
- | 678 | case FIELD_MISSLE_1: |
|
- | 679 | if (vector == Point(0, -1) || vector == Point(1, 0)) |
|
- | 680 | { |
|
- | 681 | vector = (vector.Y == -1) ? Point(-1, 0) : Point(0, 1); |
|
- | 682 | DrawLaser(position, 90, color); |
|
- | 683 | } |
|
- | 684 | else |
|
- | 685 | { |
|
509 | for (int i = 2; i < 23; ++i) |
686 | for (int i = 2; i < 23; ++i) |
510 | pause(1); |
687 | pause(1); |
511 | en = false; |
688 | en = false; |
512 | } |
689 | } |
513 | break; |
690 | break; |
Line 522... | Line 699... | ||
522 | for (int i = 2; i < 23; ++i) |
699 | for (int i = 2; i < 23; ++i) |
523 | pause(1); |
700 | pause(1); |
524 | en = false; |
701 | en = false; |
525 | } |
702 | } |
526 | break; |
703 | break; |
- | 704 | case FIELD_MISSLE_3: |
|
- | 705 | if (vector == Point(-1, 0) || vector == Point(0, 1)) |
|
- | 706 | { |
|
- | 707 | vector = (vector.Y == 1) ? Point(1, 0) : Point(0, -1); |
|
- | 708 | DrawLaser(position, 270, color); |
|
- | 709 | } |
|
- | 710 | else |
|
- | 711 | { |
|
- | 712 | for (int i = 2; i < 23; ++i) |
|
- | 713 | pause(1); |
|
- | 714 | en = false; |
|
- | 715 | } |
|
- | 716 | break; |
|
527 | default: |
717 | default: |
528 | for (int i = 2; i < 23; ++i) |
718 | for (int i = 2; i < 23; ++i) |
529 | pause(1); |
719 | pause(1); |
530 | en = false; |
720 | en = false; |
531 | } |
721 | } |
Line 549... | Line 739... | ||
549 | if (player.vector == vector) |
739 | if (player.vector == vector) |
550 | { |
740 | { |
551 | Byte code = GetField(player.position + vector, true); |
741 | Byte code = GetField(player.position + vector, true); |
552 | switch (code) |
742 | switch (code) |
553 | { |
743 | { |
- | 744 | case FIELD_BOX_MISSLE_0: |
|
- | 745 | case FIELD_BOX_MISSLE_1: |
|
- | 746 | case FIELD_BOX_MISSLE_2: |
|
- | 747 | case FIELD_BOX_MISSLE_3: |
|
- | 748 | switch (GetField(player.position + vector * 2, true)) |
|
- | 749 | { |
|
- | 750 | case FIELD_GROUND: |
|
- | 751 | case FIELD_CRATER: |
|
- | 752 | case FIELD_WATER: |
|
- | 753 | case FIELD_BOX_WATER: |
|
- | 754 | case FIELD_BRICK_DES: |
|
- | 755 | if (code == FIELD_BOX_MISSLE_0 && (vector == Point(1, 0) || vector == Point(0, 1)) |
|
- | 756 | || code == FIELD_BOX_MISSLE_1 && (vector == Point(-1, 0) || vector == Point(0, 1)) |
|
- | 757 | || code == FIELD_BOX_MISSLE_2 && (vector == Point(-1, 0) || vector == Point(0, -1)) |
|
- | 758 | || code == FIELD_BOX_MISSLE_3 && (vector == Point(1, 0) || vector == Point(0, -1)) |
|
- | 759 | ) |
|
- | 760 | animation(vector, angle, code); |
|
- | 761 | return; |
|
- | 762 | } |
|
- | 763 | break; |
|
554 | case FIELD_GUN_0: |
764 | case FIELD_GUN_0: |
555 | case FIELD_GUN_1: |
765 | case FIELD_GUN_1: |
556 | case FIELD_GUN_2: |
766 | case FIELD_GUN_2: |
557 | case FIELD_GUN_3: |
767 | case FIELD_GUN_3: |
558 | case FIELD_BOX: |
768 | case FIELD_BOX: |
559 | switch (GetField(player.position + vector * 2, true)) |
769 | switch (GetField(player.position + vector * 2, true)) |
560 | { |
770 | { |
561 | case FIELD_GROUND: |
771 | case FIELD_GROUND: |
- | 772 | case FIELD_CRATER: |
|
562 | case FIELD_WATER: |
773 | case FIELD_WATER: |
563 | case FIELD_BOX_WATER: |
774 | case FIELD_BOX_WATER: |
564 | case FIELD_BRICK_DES: |
775 | case FIELD_BRICK_DES: |
565 | animation(vector, angle, code); |
776 | animation(vector, angle, code); |
566 | return; |
777 | return; |
Line 571... | Line 782... | ||
571 | draw_window(); |
782 | draw_window(); |
572 | break; |
783 | break; |
573 | case FIELD_NONE: |
784 | case FIELD_NONE: |
574 | case FIELD_BRICK: |
785 | case FIELD_BRICK: |
575 | case FIELD_WALL: |
786 | case FIELD_WALL: |
- | 787 | case FIELD_WALL_H: |
|
- | 788 | case FIELD_WALL_V: |
|
- | 789 | case FIELD_WALL_X: |
|
576 | case FIELD_WATER: |
790 | case FIELD_WATER: |
577 | case FIELD_MISSLE_0: |
791 | case FIELD_MISSLE_0: |
578 | case FIELD_MISSLE_1: |
792 | case FIELD_MISSLE_1: |
579 | case FIELD_MISSLE_2: |
793 | case FIELD_MISSLE_2: |
580 | case FIELD_MISSLE_3: |
794 | case FIELD_MISSLE_3: |
Line 630... | Line 844... | ||
630 | //rtlDebugOutString(ftoa(key)); |
844 | //rtlDebugOutString(ftoa(key)); |
Line 631... | Line 845... | ||
631 | 845 | ||
632 | switch (gameMode) |
846 | switch (gameMode) |
633 | { |
847 | { |
634 | case MODE_MENU: |
848 | case MODE_MENU: |
- | 849 | if (key = 27) |
|
635 | 850 | kos_ExitApp(); |
|
636 | break; |
851 | break; |
637 | case MODE_LEVELS: |
852 | case MODE_LEVELS: |
- | 853 | if (key = 27) |
|
638 | 854 | SetMode(MODE_MENU); |
|
639 | break; |
855 | break; |
640 | case MODE_GAME: |
856 | case MODE_GAME: |
641 | switch (key) |
857 | switch (key) |
642 | { |
858 | { |
Line 663... | Line 879... | ||
663 | case 32: // Space |
879 | case 32: // Space |
664 | if (gameStatus == GAME_NONE) |
880 | if (gameStatus == GAME_NONE) |
665 | Laser(player.position, player.vector, (RGB)0x00FF00); |
881 | Laser(player.position, player.vector, (RGB)0x00FF00); |
666 | break; |
882 | break; |
667 | case 13: |
883 | case 13: |
- | 884 | rtlDebugOutString(ftoa(rtlRand())); |
|
- | 885 | ||
668 | // openLevel(levelIndex + 1); |
886 | // openLevel(levelIndex + 1); |
669 | if (gameStatus == GAME_VICTORY) |
887 | if (gameStatus == GAME_VICTORY) |
670 | openLevel(levelIndex + 1); |
888 | openLevel(levelIndex + 1); |
671 | else |
889 | else |
672 | if (gameStatus == GAME_DEFEAT) |
890 | if (gameStatus == GAME_DEFEAT) |
673 | openLevel(levelIndex); |
891 | openLevel(levelIndex); |
- | 892 | ||
674 | break; |
893 | break; |
- | 894 | case 27: |
|
- | 895 | SetMode(MODE_LEVELS); |
|
675 | } |
896 | } |
676 | break; |
897 | break; |
677 | } |
898 | } |
678 | } |
899 | } |
Line 679... | Line 900... | ||
679 | 900 | ||
680 | void MousePress(int button, Point position) |
901 | void MousePress(int button, Point position) |
681 | { |
902 | { |
682 | //rtlDebugOutString("Mouse"); |
903 | //rtlDebugOutString("Mouse"); |
683 | //rtlDebugOutString(ftoa(position.X)); |
904 | //rtlDebugOutString(ftoa(position.X)); |
684 | //rtlDebugOutString(ftoa(position.Y)); |
- | |
- | 905 | //rtlDebugOutString(ftoa(position.Y)); |
|
685 | 906 | Point level_pos = Point(0, 0); |
|
686 | switch (gameMode) |
907 | switch (gameMode) |
687 | { |
908 | { |
688 | case MODE_MENU: |
909 | case MODE_MENU: |
689 | if (CollRecrVsPoint(position, ToGame.rect)) |
910 | if (CollRecrVsPoint(position, ToGame.rect)) |
690 | SetMode(MODE_GAME); |
911 | SetMode(MODE_LEVELS); |
691 | if (CollRecrVsPoint(position, ToExit.rect)) |
912 | if (CollRecrVsPoint(position, ToExit.rect)) |
692 | kos_ExitApp(); |
913 | kos_ExitApp(); |
693 | break; |
914 | break; |
- | 915 | case MODE_LEVELS: |
|
- | 916 | if (CollRecrVsPoint(position, ToExit.rect)) |
|
- | 917 | SetMode(MODE_MENU); |
|
- | 918 | else |
|
- | 919 | if (levelPage > 0 && CollRecrVsPoint(position, Rect(9, 318, 57, 57))) |
|
- | 920 | { |
|
- | 921 | levelPage--; |
|
- | 922 | draw_window(); |
|
- | 923 | } |
|
- | 924 | else |
|
- | 925 | if (levelPage < (int)(levelCount / 30) && CollRecrVsPoint(position, Rect(70, 318, 57, 57))) |
|
- | 926 | { |
|
- | 927 | levelPage++; |
|
- | 928 | draw_window(); |
|
- | 929 | } |
|
- | 930 | else |
|
- | 931 | { |
|
- | 932 | for (int i = levelPage * 30; i < min(levelCount, (levelPage + 1) * 30); i++) |
|
Line -... | Line 933... | ||
- | 933 | { |
|
- | 934 | ||
- | 935 | if (i % 6 == 0 && i != levelPage * 30) |
|
- | 936 | { |
|
- | 937 | level_pos.X = 0; |
|
- | 938 | level_pos.Y++; |
|
- | 939 | } |
|
- | 940 | if (CollRecrVsPoint(position, Rect(11 + level_pos.X * 62, 11 + 61 * level_pos.Y, 51, 50))) |
|
- | 941 | { |
|
- | 942 | openLevel(i); |
|
- | 943 | //rtlDebugOutString(ftoa(i)); |
|
- | 944 | SetMode(MODE_GAME); |
|
- | 945 | return; |
|
- | 946 | } |
|
- | 947 | level_pos.X++; |
|
694 | case MODE_LEVELS: |
948 | } |
695 | 949 | } |
|
Line 696... | Line 950... | ||
696 | break; |
950 | break; |
697 | case MODE_GAME: |
951 | case MODE_GAME: |
698 | 952 | ||
Line -... | Line 953... | ||
- | 953 | break; |
|
- | 954 | } |
|
- | 955 | } |
|
- | 956 | ||
- | 957 | void draw_level_number(Point position, int number, RGB color) // 0x252317 |
|
- | 958 | { |
|
- | 959 | if (number > 99) |
|
- | 960 | { |
|
- | 961 | objnumbers->Draw(position + Point(4, 12), 0, (int)(number / 100), color); |
|
- | 962 | objnumbers->Draw(position + Point(18, 12), 0, (int)((number % 100) / 10), color); |
|
- | 963 | objnumbers->Draw(position + Point(32, 12), 0, (int)(number % 10), color); |
|
- | 964 | } |
|
- | 965 | else |
|
- | 966 | if (number > 9) |
|
- | 967 | { |
|
- | 968 | objnumbers->Draw(position + Point(11, 12), 0, (int)((number % 100) / 10), color); |
|
- | 969 | objnumbers->Draw(position + Point(25, 12), 0, (int)(number % 10), color); |
|
- | 970 | } |
|
- | 971 | else |
|
699 | break; |
972 | if (number < 10) |
700 | } |
973 | objnumbers->Draw(position + Point(18, 12), 0, number, color); |
701 | } |
974 | } |
702 | 975 | ||
703 | void draw_window(void) |
- | |
- | 976 | void draw_window(void) |
|
704 | { |
977 | { |
705 | kos_WindowRedrawStatus(1); |
978 | kos_WindowRedrawStatus(1); |
706 | kos_DefineAndDrawWindow(10, 40, 384 + 9, 384 + 25, 0x33, 0x444444, 0, 0, (Dword)header); |
979 | kos_DefineAndDrawWindow(10, 40, 384 + 9, 384 + 25, 0x33, 0x444444, 0, 0, (Dword)header); |
707 | 980 | Point level_pos = Point(0, 0); |
|
Line 708... | Line 981... | ||
708 | switch (gameMode) |
981 | switch (gameMode) |
Line 709... | Line 982... | ||
709 | { |
982 | { |
710 | case MODE_MENU: |
983 | case MODE_MENU: |
- | 984 | kos_PutImage((RGB*)img_menu, 384, 384, 0, 0); |
|
- | 985 | ||
- | 986 | // kos_PutImage((RGB*)img_button, 150, 50, ToGame.rect.X, ToGame.rect.Y); |
|
- | 987 | ||
- | 988 | ||
- | 989 | break; |
|
- | 990 | case MODE_LEVELS: |
|
- | 991 | renderLevels->RenderImg(img_levels, Point(0, 0), 384, 384); |
|
- | 992 | for (int i = levelPage * 30; i < min(levelCount, (levelPage + 1) * 30); i++) |
|
- | 993 | { |
|
- | 994 | if (i % 6 == 0 && i != levelPage * 30) |
|
- | 995 | { |
|
- | 996 | level_pos.X = 0; |
|
- | 997 | level_pos.Y++; |
|
- | 998 | } |
|
- | 999 | objnumber_box->Draw(Point(11 + level_pos.X * 62, 11 + 61 * level_pos.Y), 0); |
|
- | 1000 | draw_level_number(Point(11 + level_pos.X * 62, 11 + 61 * level_pos.Y), i + 1, (RGB)0x252317); |
|
- | 1001 | ||
- | 1002 | level_pos.X++; |
|
- | 1003 | } |
|
- | 1004 | ||
- | 1005 | if (levelPage > 0) |
|
- | 1006 | { |
|
- | 1007 | objbutton1->Draw(Point(9, 318), 0); |
|
- | 1008 | objbutton_arrow->Draw(Point(24, 338), 0); |
|
- | 1009 | } |
|
- | 1010 | ||
- | 1011 | if (levelPage < (int)(levelCount / 30)) |
|
- | 1012 | { |
|
Line 711... | Line 1013... | ||
711 | kos_PutImage((RGB*)img_menu, 384, 384, 0, 0); |
1013 | objbutton1->Draw(Point(70, 318), 0); |
712 | 1014 | objbutton_arrow->Draw(Point(89, 339), 180); |
|
- | 1015 | } |
|
- | 1016 | ||
- | 1017 | renderLevels->Draw(Point(0, 0)); |
|
- | 1018 | ||
- | 1019 | //kos_PutImage((RGB*)img_ground, 24, 24, 100, 100); |
|
713 | // kos_PutImage((RGB*)img_button, 150, 50, ToGame.rect.X, ToGame.rect.Y); |
1020 | |
714 | 1021 | break; |
|
715 | 1022 | case MODE_GAME: |
|
716 | break; |
1023 | for (int y = 0; y < 4; y++) |
717 | case MODE_LEVELS: |
1024 | for (int x = 0; x < 4; x++) |
718 | - | ||
719 | break; |
- | |
720 | case MODE_GAME: |
- | |
721 | for (int y = 0; y < 16; y++) |
- | |
722 | for (int x = 0; x < 16; x++) |
- | |
723 | { |
- | |
724 | if (level[y][x].s != FIELD_NONE) |
1025 | kos_PutImage((RGB*)img_gamebg, 96, 96, 96 * x, 96 * y); |
Line 725... | Line 1026... | ||
725 | kos_PutImage(GetImg(Point(x, y), true), 24, 24, 24 * x, 24 * y); |
1026 | |
726 | if (level[y][x].d == FIELD_BOX) |
1027 | |
727 | { |
1028 | for (int y = 0; y < 16; y++) |
Line 759... | Line 1060... | ||
759 | { |
1060 | { |
760 | rtlDebugOutString("Invalid path to executable."); |
1061 | rtlDebugOutString("Invalid path to executable."); |
761 | return; |
1062 | return; |
762 | } |
1063 | } |
763 | cPtr[1] = 0; |
1064 | cPtr[1] = 0; |
764 | strcpy(cPtr + 1, "levels.lvl"); |
1065 | strcpy(cPtr + 1, "data.lvl"); |
Line 765... | Line 1066... | ||
765 | 1066 | ||
Line 766... | Line 1067... | ||
766 | CKosFile *file = new CKosFile(kosExePath); |
1067 | CKosFile *file = new CKosFile(kosExePath); |
767 | 1068 | ||
Line 804... | Line 1105... | ||
804 | case FIELD_BOX: |
1105 | case FIELD_BOX: |
805 | case FIELD_GUN_0: |
1106 | case FIELD_GUN_0: |
806 | case FIELD_GUN_1: |
1107 | case FIELD_GUN_1: |
807 | case FIELD_GUN_2: |
1108 | case FIELD_GUN_2: |
808 | case FIELD_GUN_3: |
1109 | case FIELD_GUN_3: |
- | 1110 | case FIELD_BOX_MISSLE_0: |
|
- | 1111 | case FIELD_BOX_MISSLE_1: |
|
- | 1112 | case FIELD_BOX_MISSLE_2: |
|
- | 1113 | case FIELD_BOX_MISSLE_3: |
|
809 | level[y][x].s = FIELD_GROUND; |
1114 | level[y][x].s = FIELD_GROUND; |
810 | level[y][x].d = levels[index].fileds[y][x]; |
1115 | level[y][x].d = levels[index].fileds[y][x]; |
811 | break; |
1116 | break; |
812 | case FIELD_HERO: |
1117 | case FIELD_HERO: |
813 | player = Player(Point(x, y)); |
1118 | player = Player(Point(x, y)); |
Line 833... | Line 1138... | ||
833 | { |
1138 | { |
834 | rtlDebugOutString("Invalid path to executable."); |
1139 | rtlDebugOutString("Invalid path to executable."); |
835 | return; |
1140 | return; |
836 | } |
1141 | } |
837 | cPtr[1] = 0; |
1142 | cPtr[1] = 0; |
838 | strcpy(cPtr + 1, "arh.pak"); |
1143 | strcpy(cPtr + 1, "data01.pak"); |
Line 839... | Line 1144... | ||
839 | 1144 | ||
Line 840... | Line 1145... | ||
840 | CKosFile *file = new CKosFile(kosExePath); |
1145 | CKosFile *file = new CKosFile(kosExePath); |
841 | 1146 | ||
Line 850... | Line 1155... | ||
850 | file->LoadTex((Byte*)img_laser2, 4, 24, 24); |
1155 | file->LoadTex((Byte*)img_laser2, 4, 24, 24); |
Line 851... | Line 1156... | ||
851 | 1156 | ||
852 | for (int i = 0; i < 4; ++i) |
1157 | for (int i = 0; i < 4; ++i) |
Line 853... | Line 1158... | ||
853 | file->LoadTex((Byte*)img_mirror[i], 3, 24, 24); |
1158 | file->LoadTex((Byte*)img_mirror[i], 3, 24, 24); |
854 | 1159 | ||
Line 855... | Line 1160... | ||
855 | for (int i = 0; i < 4; ++i) |
1160 | //for (int i = 0; i < 4; ++i) |
856 | file->LoadTex((Byte*)img_mini_mirror[4], 4, 24, 24); |
1161 | file->LoadTex((Byte*)img_mini_mirror, 4, 24, 96); |
857 | 1162 | ||
858 | file->LoadTex((Byte*)img_tank, 4, 24, 24); |
1163 | file->LoadTex((Byte*)img_tank, 4, 24, 24); |
859 | file->LoadTex((Byte*)img_wall, 3, 24, 24); |
1164 | file->LoadTex((Byte*)img_wall, 3, 24, 24); |
860 | file->LoadTex((Byte*)img_water, 3, 24, 24); |
- | |
861 | file->LoadTex((Byte*)img_waterbox, 3, 24, 24); |
1165 | file->LoadTex((Byte*)img_water, 3, 24, 24); |
862 | file->LoadTex((Byte*)img_menu, 3, 384, 384); |
1166 | file->LoadTex((Byte*)img_waterbox, 3, 24, 24); |
- | 1167 | file->LoadTex((Byte*)img_menu, 3, 384, 384); |
|
- | 1168 | file->LoadTex((Byte*)img_explosion, 4, 24, 336); |
|
- | 1169 | file->LoadTex((Byte*)img_gun, 4, 24, 24); |
|
- | 1170 | file->LoadTex((Byte*)img_gamebg, 3, 96, 96); |
|
- | 1171 | ||
- | 1172 | delete file; |
|
- | 1173 | ||
- | 1174 | strcpy(cPtr + 1, "data02.pak"); |
|
- | 1175 | ||
- | 1176 | file = new CKosFile(kosExePath); |
|
- | 1177 | ||
- | 1178 | file->LoadTex((Byte*)img_levels, 3, 384, 384); |
|
- | 1179 | file->LoadTex((Byte*)img_number_box, 4, 51, 50); |
|
- | 1180 | file->LoadTex((Byte*)img_numbers, 4, 14, 250); |
|
- | 1181 | ||
- | 1182 | file->LoadTex((Byte*)img_button1, 4, 57, 57); |
|
- | 1183 | file->LoadTex((Byte*)img_button_arrow, 4, 25, 15); |
|
- | 1184 | ||
- | 1185 | file->LoadTex((Byte*)img_wall_h, 3, 24, 24); |
|
- | 1186 | file->LoadTex((Byte*)img_wall_v, 3, 24, 24); |
|
Line 863... | Line 1187... | ||
863 | file->LoadTex((Byte*)img_button, 3, 150, 50); |
1187 | file->LoadTex((Byte*)img_wall_x, 3, 24, 24); |
Line 864... | Line 1188... | ||
864 | file->LoadTex((Byte*)img_explosion, 4, 24, 336); |
1188 | |
865 | file->LoadTex((Byte*)img_gun, 4, 24, 24); |
1189 | file->LoadTex((Byte*)img_crater, 3, 24, 24); |
Line 866... | Line 1190... | ||
866 | 1190 | ||
867 | delete file; |
1191 | delete file; |
868 | 1192 | ||
869 | renderPlayer = new CKosRender(24, 24); |
1193 | renderPlayer = new CKosRender(24, 24); |
870 | objPlayer = new CKosImage(renderPlayer, (RGBA*)img_tank, 24, 24); |
1194 | objPlayer = new CKosImage(renderPlayer, (RGBA*)img_tank, 24, 24); |
871 | 1195 | ||
872 | renderLaser = new CKosRender(24, 24); |
1196 | renderBox = new CKosRender(24, 24); |
Line 873... | Line -... | ||
873 | objLaser = new CKosImage(renderLaser, (RGBA*)img_laser, 24, 24); |
- | |
874 | objLaser->SetMode(DRAW_ALPHA_ADD); |
- | |
875 | objLaser1 = new CKosImage(renderLaser, (RGBA*)img_laser1, 24, 24); |
1197 | objLaser = new CKosImage(renderBox, (RGBA*)img_laser, 24, 24); |
876 | objLaser1->SetMode(DRAW_ALPHA_ADD); |
1198 | objLaser->SetMode(DRAW_ALPHA_ADD); |
- | 1199 | objLaser1 = new CKosImage(renderBox, (RGBA*)img_laser1, 24, 24); |
|
Line 877... | Line -... | ||
877 | objLaser2 = new CKosImage(renderLaser, (RGBA*)img_laser2, 24, 24); |
- | |
878 | objLaser2->SetMode(DRAW_ALPHA_ADD); |
1200 | objLaser1->SetMode(DRAW_ALPHA_ADD); |
879 | 1201 | objLaser2 = new CKosImage(renderBox, (RGBA*)img_laser2, 24, 24); |
|
Line 880... | Line -... | ||
880 | renderMirror = new CKosRender(24, 24); |
- | |
881 | 1202 | objLaser2->SetMode(DRAW_ALPHA_ADD); |
|
882 | for (int i = 0; i < 4; ++i) |
1203 | |
Line -... | Line 1204... | ||
- | 1204 | //for (int i = 0; i < 4; ++i) |
|
- | 1205 | objMiniMirror = new CKosImage(renderBox, (RGBA*)img_mini_mirror, 24, 24); |
|
- | 1206 | objMiniMirror->SetFrameSize(24, 24); |
|
- | 1207 | ||
- | 1208 | objBox = new CKosImage(renderBox, (RGBA*)img_box, 24, 24); |
|
- | 1209 | objGun = new CKosImage(renderBox, (RGBA*)img_gun, 24, 24); |
|
- | 1210 | ||
- | 1211 | objExplosion = new CKosImage(renderBox, (RGBA*)img_explosion, 24, 24); |
|
883 | objMiniMirror[i] = new CKosImage(renderMirror, (RGBA*)img_mini_mirror[i], 24, 24); |
1212 | objExplosion->SetFrameSize(24, 24); |
Line 884... | Line 1213... | ||
884 | 1213 | ||
Line 885... | Line 1214... | ||
885 | renderBox = new CKosRender(24, 24); |
1214 | renderLevels = new CKosRender(384, 384); |