Subversion Repositories Kolibri OS

Rev

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);