Subversion Repositories Kolibri OS

Rev

Rev 2133 | Rev 3137 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
968 leency 1
/*	------- КОСИЛКА ДЛЯ КОЛИБРИ -------
2
Игра пишется на C++ (используется MS Visual C++ 6.0).
3
Это - исходник версии 1.0.
4
 
5
					 Andrey Mihaylovich aka Dron2004
6
  */
7
 
8
 
9
 
10
#include "kosSyst.h"
11
#include "kosFile.h"
12
 
13
 
14
 
15
//ВНЕШНИЕ УРОВНИ
16
bool external_levels_available=false;
17
bool external_levels = false;
18
int level_read_result;
19
Byte * externallevels;
20
Byte external_levels_count[1] = {0};
21
/////////////////
22
 
23
int lastkosilkadirection=1;
24
int laststep=0; //Последний ход. Здесь
25
				// 0 - нет такового
26
				// 1 - вниз
27
				// 2 - вверх
28
				// 3 - влево
29
				// 4 - вправо
30
 
31
 
32
Byte skindata[13824];
33
int read_result=0;
34
bool skin_available=false;
35
bool w_redraw=true;
36
 
37
const char windowTitle[]="Љ®бЁ«Є  ¤«п Љ®«ЁЎаЁ";
2132 leency 38
const char version[]="‚ҐабЁп 1.12";
968 leency 39
int levelcount=7; //Число уровней
40
 
41
char gamearea[20][20]; //Карта
42
 
43
 
44
short int kosilkax; // Положение косилки
45
short int kosilkay;
46
short int kosilkadirection=1; //Направление прошлого шага. 1-вниз, 2-вверх, 3-влево, 4-вправо
47
short int lives=2; // Жизни
48
short int level=1; //Уровень
49
short int status=0; //Где 0 - приветствие
50
					// 1 - игра
51
					// 2 - игра пройдена
52
					// 3 - вы проиграли
53
					// 4 - выбор набора уровней (встроенный или внешний)
54
					// -1 - о программе
55
bool gamestarted=false; //Блокировка игровых клавиш. Если false - играть нельзя
56
 
57
bool drawgraphics=true; //Рисовать ли детальную графику (или ограничиться аскетичной)
1012 leency 58
bool drawanimation=true; //Анимировать ли
968 leency 59
bool skinned=false;
60
int grassLeft();  //Сообщим о наличии функции Grass Left
61
 
62
//Графика игры
63
 
64
RGB kosilka_d[576];
65
RGB kosilka_l[576];
66
RGB kosilka_r[576];
67
RGB kosilka_u[576];
68
RGB grass[576];
69
RGB stone[576];
70
RGB tree[576];
71
RGB skos[576];
72
 
73
Byte kosilka_d1[]={0,1,2,3,4,5,5,6,6,6,5,5,5,5,5,6,5,5,5,4,2,2,1,7,1,2,4,6,21
74
,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,6,5,2,40,1,4,62,63,63,64,65,66,66
75
,67,66,66,66,66,68,66,66,63,69,65,65,62,4,1,2,6,75,91,64,65,67,92,75,75,75,75,75
76
,75,75,75,75,93,65,94,94,62,6,2,3,6,76,94,96,67,103,104,104,104,104,104,104,105
77
,106,107,108,109,93,63,64,75,6,3,3,21,75,94,94,67,115,104,104,104,104,105,105
78
,106,107,108,116,117,92,65,96,76,21,4,3,21,62,64,63,78,115,105,105,105,105,106
79
,107,108,116,116,119,120,92,65,96,77,6,3,4,6,62,96,69,67,123,106,106,107,107,108
80
,108,116,119,119,127,124,92,66,64,77,21,4,3,21,62,64,91,67,123,107,108,108,116
81
,116,119,119,127,127,127,124,75,69,64,77,21,4,4,6,62,64,69,68,123,108,116,119
82
,119,127,127,127,129,129,129,125,93,63,64,77,21,4,4,21,62,64,91,67,123,119,119
83
,127,127,129,129,129,129,129,129,125,68,94,64,77,6,4,3,21,62,64,94,63,122,128
84
,128,121,121,121,121,121,121,121,121,76,66,69,91,77,21,4,4,21,62,64,94,69,69,65
85
,66,67,68,68,67,68,67,67,66,66,69,91,64,77,21,4,4,21,76,96,64,94,94,64,94,96,69
86
,91,94,94,64,69,69,94,64,64,64,77,6,4,3,6,75,64,64,64,64,64,64,64,64,64,64,64,64
87
,64,64,64,64,64,96,75,21,4,3,6,16,94,64,64,64,64,64,64,64,64,64,64,64,64,64,64
88
,64,64,96,75,6,2,2,6,75,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,62
89
,6,2,1,2,33,95,111,111,111,111,79,79,79,79,79,79,79,79,111,95,79,111,95,33,32,40
90
,7,42,49,44,47,72,44,47,80,49,45,72,45,70,47,47,47,46,71,45,44,49,50,15,15,43,45
91
,72,70,71,44,71,43,44,44,46,47,71,49,71,45,47,45,47,80,80,110,0,15,45,45,45,44
92
,44,72,72,70,45,44,71,46,71,80,44,45,47,44,71,72,71,45,9,14,45,47,72,46,73,45,47
93
,72,46,45,47,45,70,43,45,45,46,47,44,43,43,42,10,8,32,42,45,46,44,43,44,44,47,45
94
,45,49,44,46,46,45,44,45,44,45,42,41,9,10,114,36,36,12,10,12,14,9,11,10,36,13,11
95
,10,9,13,12,11,9,10,8,8,8
96
};
97
 
98
Byte kosilka_u1[]={8,9,9,10,9,11,12,13,9,10,11,13,8,10,11,9,14,12,10,12,14,8,11
99
,10,9,41,42,43,44,45,44,45,46,46,44,45,45,45,47,44,44,43,44,46,45,42,32,0,14,42
100
,45,43,44,47,46,45,45,43,70,45,71,45,46,72,47,45,73,46,44,71,45,14,11,45,71,72
101
,71,44,47,45,44,80,71,46,71,44,45,70,72,72,44,44,45,45,45,15,0,110,80,80,71,45
102
,47,45,71,49,71,47,46,44,44,43,71,44,71,70,72,43,71,15,15,50,49,44,45,71,46,47
103
,47,71,70,45,72,45,49,80,47,44,72,47,44,45,50,15,1,32,121,95,111,79,95,111,79,79
104
,79,79,79,79,79,79,111,111,111,111,95,121,3,1,2,5,62,96,64,64,64,64,64,64,64,64
105
,64,64,64,64,64,64,64,96,96,75,5,2,2,6,75,94,64,64,64,64,64,64,64,64,64,64,64,64
106
,64,64,64,64,96,76,6,3,4,21,75,96,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64
107
,64,94,76,6,3,4,21,77,64,64,64,94,69,69,64,94,94,91,69,64,94,64,94,94,64,64,16
108
,21,4,4,6,77,64,91,69,66,66,66,67,67,67,68,68,67,66,65,69,69,94,64,77,21,4
109
,4,21,77,64,69,66,76,121,121,121,121,121,121,121,121,128,128,122,63,94,64,62,21
110
,3,4,6,77,64,94,67,125,129,129,129,129,129,129,127,127,119,119,123,66,91,64,62
111
,21,4,4,21,77,64,63,92,125,129,129,129,127,127,127,119,119,116,108,123,68,69,64
112
,62,6,4,4,21,77,64,63,92,124,127,127,127,119,119,116,108,108,108,108,123,68,91
113
,64,62,21,3,4,21,77,91,66,92,124,127,119,119,116,108,108,107,107,106,106,123,67
114
,69,64,62,21,3,3,21,77,64,65,92,120,119,116,116,108,107,106,105,105,105,105,115
115
,93,63,64,62,6,3,4,21,75,64,65,92,117,116,108,107,106,105,105,105,104,104,104
116
,115,67,94,96,76,21,3,3,6,75,96,63,93,109,108,107,106,105,104,104,104,104,104
117
,104,136,67,96,94,76,6,3,2,6,62,94,94,65,93,75,75,75,75,75,75,75,92,75,93,67,65
118
,64,64,75,6,2,1,4,62,65,65,69,63,65,66,67,66,66,65,65,67,66,66,65,64,63,65,62,4
119
,1,1,2,6,6,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,6,4,2,1,7,1,2,2,4,5
120
,5,6,6,5,5,5,6,6,6,6,6,5,6,3,4,2,1,0
121
};
122
 
123
Byte kosilka_l1[]={10,8,14,15,15,15,1,2,3,2,4,4,3,3,4,3,3,3,3,3,2,1,1,0,11,48,49
124
,45,47,50,3,6,6,6,21,21,21,21,6,21,21,6,21,6,5,4,2,1,29,42,71,45,74,49,33,75,76
125
,76,76,62,62,62,62,62,62,62,76,76,75,62,4,2,14,70,72,45,72,44,95,96,94,94,94,96
126
,64,64,64,64,64,96,94,94,94,66,6,3,12,46,46,44,70,47,111,64,96,96,64,94,94,91,69
127
,91,69,63,94,96,64,63,21,4,10,44,73,44,71,72,111,64,64,64,94,69,63,66,68,67,67
128
,68,67,67,65,64,21,5,12,43,45,72,44,44,111,64,64,64,94,69,122,123,123,123,123
129
,115,115,103,67,63,21,6,14,44,47,72,71,47,111,64,64,64,64,65,128,119,116,107,106
130
,105,104,104,93,66,21,6,9,44,72,70,43,80,79,64,64,64,94,66,128,119,116,108,106
131
,105,104,104,75,66,21,6,11,47,46,45,44,49,79,64,64,64,64,67,121,127,116,108,107
132
,105,104,104,92,67,21,6,10,45,45,44,44,45,79,64,64,64,69,68,121,127,119,116,107
133
,106,104,104,75,66,21,6,8,49,47,71,46,72,79,64,64,64,91,68,121,129,127,116,108
134
,106,105,104,75,66,21,6,13,45,45,46,47,45,79,64,64,64,94,67,121,129,127,119,108
135
,107,105,104,75,66,21,4,11,44,70,71,71,70,79,64,64,64,94,67,121,129,127,119,116
136
,108,106,105,75,66,21,5,10,46,43,80,49,47,79,64,64,64,64,67,121,129,129,127,119
137
,108,107,106,75,67,21,4,9,46,45,44,71,47,79,64,64,64,69,67,121,129,129,127,119
138
,116,108,107,75,66,21,6,13,45,45,45,45,47,111,64,64,64,69,66,121,129,129,127,127
139
,119,116,108,75,66,21,6,12,44,46,47,47,46,95,64,64,64,94,66,76,125,125,124,124
140
,120,117,109,93,63,21,4,11,45,47,44,45,71,79,64,64,64,64,69,66,68,92,75,92,92,92
141
,93,65,69,21,6,9,44,44,71,47,45,111,64,64,64,64,91,69,94,63,69,66,65,65,63,94,65
142
,21,4,10,47,43,72,80,44,95,64,64,64,64,64,64,64,64,64,64,64,64,64,64,63,6,2,9,42
143
,45,47,80,45,121,62,75,75,77,77,77,77,77,77,77,77,75,75,62,75,5,2,0,48,42,45,71
144
,50,2,6,6,21,6,21,21,6,21,21,21,21,21,6,6,4,2,40,8,11,51,9,8,15,1,2,2,4,4,3,4,4
145
,4,4,4,3,3,3,2,1,1,7
146
};
147
 
148
Byte kosilka_r1[]={7,1,1,2,3,3,3,4,4,4,4,4,4,4,4,2,2,1,15,0,9,12,9,8,40,2,4,6,6
149
,21,21,21,21,21,6,21,21,6,4,1,15,51,52,53,47,45,23,9,2,6,62,62,75,75,77,77,77,77
150
,77,77,77,77,77,77,78,79,45,80,47,71,42,9,2,6,65,94,94,94,96,64,64,64,64,64,64
151
,96,64,64,64,95,44,72,44,43,45,10,4,21,65,94,63,65,65,66,69,63,94,69,91,64,64,64
152
,64,79,43,47,71,44,72,9,5,21,69,65,93,92,92,92,92,92,67,66,69,64,64,64,64,79,71
153
,45,44,47,43,11,5,21,63,93,109,117,120,124,124,125,125,76,66,94,64,64,64,95,46
154
,47,47,46,72,12,6,21,65,75,108,116,119,127,127,129,129,121,66,69,64,64,64,111,47
155
,45,45,45,45,13,6,21,66,75,107,108,116,119,127,129,129,121,66,69,64,64,64,79,47
156
,71,44,45,44,9,4,21,67,75,106,107,116,119,127,129,129,121,67,64,64,64,64,79,47
157
,49,80,43,44,10,5,21,66,75,105,106,108,116,119,127,129,121,67,94,64,64,64,79,70
158
,71,71,70,72,11,4,21,66,75,104,105,107,108,119,127,129,121,67,94,64,64,64,79,45
159
,47,46,45,45,13,6,21,66,75,104,105,106,108,116,127,129,121,68,91,64,64,64,79,72
160
,46,71,47,45,8,6,21,65,75,104,104,105,107,116,119,127,121,68,69,64,64,64,79,45
161
,44,44,45,45,10,6,21,67,75,104,104,105,107,108,116,127,121,67,64,64,64,64,79,49
162
,44,45,46,46,11,6,21,66,92,104,104,105,106,108,116,119,128,66,94,64,64,64,79,80
163
,43,70,72,72,9,6,21,66,92,104,104,105,106,107,108,119,128,65,64,64,64,64,111,47
164
,71,72,47,72,14,6,21,65,67,103,115,115,123,123,123,123,122,69,94,64,64,64,111,44
165
,44,72,45,47,12,5,21,64,65,67,67,93,68,68,93,66,63,69,94,64,64,64,111,72,71,44
166
,73,72,10,3,21,63,64,96,94,63,69,91,69,91,94,94,64,64,64,64,111,47,70,44,46,44
167
,12,4,6,63,64,64,64,64,64,64,64,64,64,64,64,64,64,64,95,44,72,45,72,45,14,2,4,62
168
,75,76,76,62,62,62,62,62,62,62,76,62,62,77,79,45,43,45,46,42,36,1,2,5,6,6,21,6
169
,21,21,6,21,21,21,21,6,6,6,37,52,46,45,45,20,11,0,40,40,2,3,4,4,3,3,4,4,2,4,4,3
170
,3,2,1,15,15,15,14,36,10
171
};
172
 
173
Byte skos1[]={13,14,14,14,12,11,10,14,11,14,10,9,13,13,13,14,9,13,8,12,13,11,14
174
,8,11,10,9,8,10,10,12,11,14,10,9,14,14,9,10,12,10,14,9,11,10,8,10,8,13,14,10,8
175
,10,10,13,13,10,11,11,10,8,14,12,13,9,12,12,12,9,9,9,12,8,13,9,13,8,14,13,8,12
176
,13,11,9,11,14,9,10,10,9,14,10,8,12,12,13,9,10,14,12,14,12,9,9,8,8,10,8,12,8,14
177
,13,13,14,8,10,9,10,10,9,13,9,8,9,8,12,12,9,14,14,10,14,14,14,14,9,12,14,12,14
178
,13,10,11,51,12,13,10,14,8,8,11,13,8,8,8,9,14,12,8,13,14,14,9,14,13,9,8,126
179
,12,8,10,11,10,8,14,14,10,8,12,12,13,12,9,13,10,14,13,11,12,9,11,12,13,13,11,13
180
,12,13,13,10,8,10,14,12,11,10,11,9,14,10,11,11,11,12,9,8,9,13,14,8,8,14,10,11,9
181
,14,13,9,10,11,12,8,11,8,8,13,9,12,9,10,10,11,12,8,10,11,9,9,10,10,14,14,8,14,8
182
,13,14,9,14,11,8,12,12,14,12,14,13,9,11,8,8,14,10,9,11,12,11,10,9,9,9,11,11,14
183
,10,11,14,11,9,8,12,12,9,14,14,10,14,14,14,14,9,12,14,12,14,13,10,11,10,10,10,10
184
,8,8,8,10,13,9,12,9,12,8,8,14,11,11,13,13,12,13,12,8,11,12,13,11,12,10,13,8,8,8
185
,10,9,11,13,14,12,14,12,12,12,8,14,12,13,10,10,8,14,11,13,14,11,9,10,12,13,8,10
186
,11,13,11,11,14,9,11,8,10,14,10,14,10,12,8,8,14,14,11,13,11,12,8,8,13,12,11,14,9
187
,13,11,8,12,10,10,8,12,12,51,10,9,8,9,13,10,14,8,14,8,9,9,14,8,10,14,13,8,11,8
188
,11,13,12,13,10,13,10,10,10,9,12,11,13,14,13,11,8,14,8,10,10,10,14,13,10,11,10
189
,11,13,13,12,12,9,11,12,8,13,9,10,14,10,9,9,9,13,12,12,11,8,13,13,36,13,9,10,13
190
,12,8,13,12,9,13,10,11,12,12,10,9,13,8,9,12,10,11,12,14,9,14,14,8,11,14,12,12,10
191
,11,9,8,8,14,14,11,13,11,12,8,8,13,12,8,8,10,13,14,10,11,8,8,8,11,11,14,11,12,10
192
,13,9,14,14,9,9,11,9,10,11,8,14,12,10,12,14,9,11,10,8,13,11,10,9,13,12,11,9,10,9
193
,9,8
194
};
195
 
196
Byte grass1[]={16,17,17,18,17,19,20,21,22,22,23,22,24,18,23,23,25,18,22,26,27,28
197
,28,18,20,24,28,54,55,19,54,56,24,20,54,24,24,20,24,20,20,24,27,24,17,54,54,24
198
,55,55,28,55,55,54,54,55,54,24,54,54,24,24,54,20,54,17,54,54,55,24,81,55,17,19
199
,17,27,81,27,54,19,17,54,41,18,24,24,81,23,19,55,18,27,24,97,20,54,19,112,55,81
200
,18,24,19,24,48,20,55,28,81,28,18,24,112,55,18,81,17,54,24,54,118,19,54,81,23,81
201
,55,41,26,23,26,26,41,20,26,55,19,81,18,17,28,54,19,28,55,54,17,22,17,55,17,17
202
,81,18,28,25,97,18,27,112,112,81,24,24,27,26,81,54,24,54,17,27,55,28,23,97,25,54
203
,28,23,26,26,22,112,55,97,24,28,27,26,16,55,17,27,54,18,19,54,23,16,97,20,54,25
204
,26,26,19,19,48,18,16,28,17,23,20,19,28,55,24,20,19,28,20,48,23,33,19,97,26,26
205
,55,54,18,26,25,19,28,26,28,17,27,55,81,23,19,19,18,20,24,41,54,22,26,81,17,27
206
,17,25,26,28,24,48,22,27,26,55,54,55,55,28,16,33,5,24,41,18,48,55,19,48,97,16,26
207
,27,48,33,23,97,22,28,19,54,48,81,21,6,21,41,26,33,33,28,54,20,16,48,18,26,33,16
208
,48,23,17,19,112,26,23,48,21,21,131,48,26,33,97,17,17,20,16,25,97,16,16,26,21,20
209
,19,112,54,26,26,21,20,41,6,33,16,25,33,55,19,16,41,25,48,16,26,48,97,24,55,54
210
,24,24,23,21,23,97,48,21,33,24,6,54,54,132,54,18,16,97,28,26,22,28,27,54,20,16
211
,23,33,22,16,26,48,17,20,33,54,24,19,20,25,97,48,54,54,26,27,20,20,41,21,97,6,33
212
,23,26,48,19,17,48,24,23,24,27,16,18,16,55,55,19,26,27,54,48,21,24,48,23,33,25
213
,33,28,23,97,97,6,16,16,20,25,48,17,48,97,22,27,24,20,48,22,17,27,48,48,16,22,25
214
,24,41,33,25,25,54,23,97,17,18,27,22,97,24,20,18,23,27,17,23,48,25,23,97,27,97
215
,18,26,18,22,26,18,19,17,28,26,23,17,81,97,25,81,27,24,6,97,48,18,97,16,16,81,33
216
,18,22,26,24,17,27,23,26,17,27,23,26,26,54,41,33,18,97,22,18,22,48,18,16,97,22
217
,18,18,27,27,26,48,27,17,97,18,27,55,21,20,26,23,26,27,27,22,26,16,23,22,26,27
218
,140,19,20
219
};
220
 
221
Byte stone1[]={13,14,14,29,30,31,31,31,30,3,32,33,32,34,35,36,9,13,8,12,13,11,14
222
,8,11,10,36,30,31,57,58,57,31,59,59,59,59,31,31,30,32,29,11,11,10,8,10,8,13,8,30
223
,31,58,82,83,82,82,83,84,84,85,84,83,58,59,30,30,51,9,9,9,12,8,98,30,57,99,83,83
224
,83,83,84,84,85,100,73,49,74,73,82,31,30,8,12,12,13,9,0,30,57,82,83,83,83,83,84
225
,84,85,85,73,49,74,113,74,84,59,30,114,10,9,12,0,30,59,58,82,83,83,83,83,84,85
226
,85,73,49,74,74,113,113,83,31,30,11,10,12,13,30,30,57,99,82,83,83,83,84,84,85
227
,100,49,49,74,113,113,74,99,30,29,13,12,8,0,30,57,82,83,83,83,83,83,84,85,100,73
228
,49,74,113,113,113,85,31,40,12,13,13,1,30,99,83,83,83,83,83,83,84,84,85,73,49,74
229
,74,113,113,74,57,32,8,9,13,30,59,82,83,82,83,83,83,83,83,84,85,100,73,49,74,74
230
,113,113,57,5,51,10,0,30,57,82,82,83,83,83,83,83,83,84,85,85,73,49,74,74,113,113
231
,58,130,11,12,29,30,57,82,82,83,83,83,83,83,83,83,84,85,100,73,49,74,74,74,99,30
232
,11,9,29,30,57,82,82,83,83,83,83,83,83,83,84,84,85,73,49,49,74,74,82,30,0,8,8,30
233
,31,99,82,82,83,83,83,83,83,83,83,84,85,100,73,49,74,74,83,31,15,12,10,15,30,58
234
,82,82,82,83,83,83,83,83,83,84,84,85,100,73,49,74,84,31,1,11,13,7,30,58,82,82,82
235
,82,82,82,83,83,82,83,84,85,85,100,73,49,84,31,15,8,8,7,30,58,82,82,82,82,82,82
236
,82,82,82,83,84,84,85,85,73,73,82,30,35,10,10,35,30,57,82,82,82,82,82,82,82,82
237
,83,82,83,84,84,85,85,85,59,30,51,13,10,133,30,59,99,99,82,82,82,82,82,82,82,83
238
,82,83,84,84,84,57,30,35,10,11,13,13,1,31,58,82,99,82,82,82,99,58,58,82,82,83,83
239
,99,57,31,40,13,13,8,13,9,0,30,59,99,99,99,99,99,58,59,59,57,57,57,59,31,30,15
240
,10,11,12,14,9,14,14,15,30,31,58,58,58,57,30,30,30,30,30,30,32,1,37,8,8,13,12,8
241
,8,10,13,14,35,30,30,31,30,30,30,8,0,37,0,133,9,14,14,9,9,11,9,10,11,8,14,12,10
242
,37,40,32,1,35,8,13,11,10,9,13,12,11,9,10,9,9,8
243
};
244
 
245
Byte tree1[]={13,14,8,36,37,11,10,36,38,39,0,14,13,13,13,14,9,13,8,12,13,11,14,8
246
,11,36,39,39,39,34,38,39,60,61,60,39,34,0,37,37,14,36,15,36,14,8,10,8,11,86,60
247
,87,61,60,88,61,89,90,89,61,60,88,39,86,39,88,88,88,39,15,9,12,34,88,87,89,89
248
,101,89,89,89,89,89,89,101,61,61,90,89,89,102,87,60,39,37,13,34,60,89,89,89,89
249
,89,89,89,89,89,89,89,89,89,89,89,89,89,89,102,88,7,11,15,88,102,101,89,89,89,89
250
,89,89,101,89,89,101,89,89,89,89,89,89,101,60,34,51,8,39,60,102,89,89,89,89,89
251
,90,102,101,89,101,101,89,89,89,89,89,101,60,39,51,37,34,60,90,101,89,89,101,89
252
,101,101,89,89,89,89,89,89,89,89,89,89,87,88,15,37,60,89,89,89,89,101,90,89,89
253
,89,89,89,89,89,89,89,89,89,89,89,101,102,88,39,102,89,89,89,89,101,90,89,89,89
254
,89,89,89,101,101,101,101,89,89,89,89,89,61,32,102,89,89,89,89,101,90,90,101,89
255
,89,89,101,87,101,89,89,89,89,89,89,89,102,39,61,89,89,89,89,89,89,101,102,101
256
,89,89,90,89,89,89,89,89,89,89,89,89,90,9,39,61,101,89,89,89,89,101,102,102,89
257
,101,101,89,89,89,89,89,89,89,89,89,102,36,34,88,102,89,89,89,89,89,101,101,89
258
,89,89,89,89,89,89,89,89,89,101,90,60,8,39,60,101,89,89,89,89,89,89,89,89,89,89
259
,89,89,89,89,89,89,89,101,101,60,34,88,101,89,89,89,89,89,89,89,89,89,89,89,89
260
,89,89,89,89,101,101,89,89,102,34,60,89,89,89,89,89,89,89,89,89,89,89,89,89,89
261
,89,89,101,90,101,89,89,101,34,88,87,89,89,101,89,89,89,89,90,102,89,89,89,89,89
262
,89,89,89,101,89,89,102,37,32,60,102,87,87,89,89,89,134,135,135,101,89,89,89,89
263
,89,89,89,101,102,102,60,11,51,37,38,34,88,61,102,61,39,137,131,134,101,101,101
264
,102,90,89,89,102,60,39,37,8,51,11,37,37,0,39,39,32,15,137,137,138,60,61,60,88
265
,88,102,102,60,39,40,10,11,9,14,8,8,36,40,36,51,51,137,137,137,34,39,34,29,38,39
266
,39,32,15,13,12,8,8,10,51,14,37,37,8,8,8,137,137,137,8,9,139,51,8,7,7,14,11,11,9
267
,10,11,8,14,51,10,12,14,11,11,137,137,137,11,10,9,13,51,14,11,51,9,9,8
268
};
269
 
270
 
271
//Палитра цветов. Декодируем в 0xRRGGBB
272
 
273
char * apppath;
274
char * levpath;
275
char * getSkinPathName(){
276
 
277
	int lastslashindex=0;
278
	static char skinfilename[]="kosskin.gfx";
279
	int tempslfnd=0;
280
 
281
	for (tempslfnd=0; tempslfnd < strlen(kosExePath); tempslfnd++){
282
			if (kosExePath[tempslfnd]=='/'){lastslashindex=tempslfnd;}
283
	}
284
 
285
	apppath = new char[lastslashindex+strlen(skinfilename)+1];
286
 
287
	for (tempslfnd=0; tempslfnd <= lastslashindex; tempslfnd++){
288
		apppath[tempslfnd]=kosExePath[tempslfnd];
289
	}
290
	for (tempslfnd=0; tempslfnd < strlen(skinfilename); tempslfnd++){
291
		apppath[tempslfnd+lastslashindex+1]=skinfilename[tempslfnd];
292
	}
293
 
294
 
295
	return apppath;
296
 
297
 
298
}
299
 
300
char * getLevelsPathName(){
301
 
302
	int lastslashindex=0;
303
	static char levfilename[]="koslevel.pak";
304
	int tempslfnd=0;
305
 
306
	for (tempslfnd=0; tempslfnd < strlen(kosExePath); tempslfnd++){
307
			if (kosExePath[tempslfnd]=='/'){lastslashindex=tempslfnd;}
308
	}
309
 
310
	levpath = new char[lastslashindex+strlen(levfilename)+1];
311
 
312
	for (tempslfnd=0; tempslfnd <= lastslashindex; tempslfnd++){
313
		levpath[tempslfnd]=kosExePath[tempslfnd];
314
	}
315
	for (tempslfnd=0; tempslfnd < strlen(levfilename); tempslfnd++){
316
		levpath[tempslfnd+lastslashindex+1]=levfilename[tempslfnd];
317
	}
318
 
319
	return levpath;
320
 
321
 
322
}
323
 
324
 
325
void decode_graphics(Byte * source, RGB * target){
1143 diamond 326
	static const char palette[] = {
327
		0x31,0x8A,0x97,0x2E,0x7F,0x8B,0x2B,0x7B,0x86,0x2B,0x76,0x82,0x28,0x74,0x7F,0x2B,0x70,0x79,0x26,0x6C,0x76,0x2E,0x83,0x90,
328
		0x2F,0x8A,0x97,0x31,0x8C,0x9A,0x32,0x8D,0x9B,0x31,0x8C,0x99,0x33,0x8E,0x9C,0x34,0x8F,0x9D,0x30,0x8B,0x98,0x31,0x85,0x92,
329
		0x32,0x75,0x88,0x54,0xA4,0xBA,0x3D,0x8C,0xA1,0x6A,0xB2,0xC6,0x46,0x8E,0xA0,0x26,0x5F,0x6B,0x44,0x98,0xAF,0x3B,0x87,0x9C,
330
		0x4D,0x96,0xAB,0x38,0x83,0x98,0x40,0x91,0xA8,0x4C,0x9D,0xB4,0x5C,0xAC,0xC1,0x2F,0x87,0x94,0x30,0x30,0x30,0x35,0x34,0x34,
331
		0x33,0x79,0x82,0x2F,0x6E,0x80,0x34,0x81,0x8B,0x32,0x86,0x93,0x2F,0x89,0x96,0x33,0x8C,0x98,0x3B,0x87,0x8F,0x39,0x9F,0x7E,
332
		0x2D,0x81,0x8E,0x3F,0x80,0x92,0x5C,0x71,0x75,0x62,0x64,0x67,0x68,0x6A,0x6D,0x60,0x62,0x66,0x66,0x68,0x6B,0x64,0x66,0x6A,
333
		0x35,0x7B,0x8E,0x61,0x61,0x62,0x41,0x76,0x79,0x33,0x8E,0x9B,0x54,0x79,0x7F,0x67,0x6A,0x77,0x55,0x9E,0xB2,0x5E,0xA7,0xBC,
334
		0x3E,0x8C,0x97,0x3D,0x3E,0x3E,0x45,0x42,0x43,0x38,0x39,0x37,0x37,0x97,0x3C,0x37,0x94,0x20,0x34,0x79,0xB9,0x3E,0x86,0xE6,
335
		0x41,0x8C,0xF2,0x3D,0x83,0xE2,0x3B,0x80,0xDD,0x3A,0x7C,0xD7,0x38,0x79,0xD1,0x3F,0x88,0xEA,0x5B,0x5D,0x60,0x63,0x65,0x68,
336
		0x6B,0x6D,0x70,0x5E,0x5F,0x5F,0x66,0x65,0x65,0x31,0x69,0xB5,0x3B,0x66,0xAC,0x36,0x7D,0xC1,0x38,0x83,0xC8,0x46,0x72,0x99,
337
		0x71,0x72,0x73,0x46,0x95,0xA8,0x4E,0x4D,0x4D,0x52,0x51,0x51,0x56,0x56,0x56,0x59,0x5A,0x5A,0x41,0x7B,0x68,0x33,0x89,0x09,
338
		0x38,0x9B,0x5B,0x36,0x90,0x00,0x36,0x91,0x06,0x41,0x8B,0xF1,0x34,0x70,0xC2,0x37,0x77,0xCD,0x40,0x8A,0xEE,0x4B,0x77,0xA0,
339
		0x41,0x8C,0xF1,0x37,0x80,0x94,0x34,0x8B,0x98,0x4A,0x48,0x49,0x5D,0x5D,0x5D,0x36,0x90,0x03,0x36,0x92,0x0E,0x7B,0x6B,0xB0,
340
		0xF8,0x9C,0x94,0xF6,0x85,0x7C,0xF5,0x74,0x6A,0xF4,0x66,0x5A,0xF1,0x53,0x46,0xB6,0x53,0x5F,0x62,0x64,0x72,0x49,0x74,0x9C,
341
		0x72,0xC4,0xD0,0x69,0x69,0x69,0x32,0x8B,0x99,0x76,0x66,0x9D,0xDD,0x47,0x3B,0xA0,0x49,0x53,0x77,0xCD,0xD8,0xC1,0x3E,0x34,
342
		0x8C,0x43,0x4F,0x38,0x55,0x8E,0x41,0x73,0xC3,0x71,0x5D,0x89,0x74,0x3B,0x48,0x59,0x33,0x43,0x34,0x8D,0x9C,0x9A,0x32,0x2A,
343
		0x49,0x5F,0x99,0x6D,0x23,0x1D,0x37,0x6E,0x75,0x19,0x48,0x52,0x48,0x88,0x8D,0x34,0x8D,0x9B,0x2F,0x7F,0x15,0x28,0x6C,0x2D,
344
		0x8B,0x77,0xAA,0x15,0x3C,0x66,0x24,0x59,0x4E,0x31,0x8F,0x9D,0x48,0xAD,0xBC
968 leency 345
	};
346
 
347
	for (int lc=0;lc<576;lc++)
1143 diamond 348
		target[lc] = ((RGB*)palette)[source[lc]];
968 leency 349
}
350
 
351
 
352
void interlevelpause(){ //Пауза между уровнями
353
	Byte tempCode;
354
	RGB tmprgb;
355
	int tmpa=0;
356
	laststep=0;
357
	static int yellow_pal[] = {0xA8A93D,0xBEBF4C,0xD6D856,0xDFE15A,0xECEE5B,
358
						    0xECEE5B,0xDFE15A,0xD6D856,0xBEBF4C,0xA8A93D};
359
		for (int iic=0;iic<240;iic++){
360
			kos_WaitForEvent(1);
361
			kos_GetKey(tempCode);
362
 
363
			kos_DrawBar(iic*2,0,2,480,yellow_pal[tmpa]);
364
 
365
			tmpa++;
366
			if (tmpa>9){tmpa=0;}
367
		}
368
}
369
 
370
void draw_element(int elx, int ely){ //Отрисовка элемента карты
371
switch (gamearea[elx][ely]){
372
			case 'g':
373
				if (drawgraphics==true){
374
					kos_PutImage((RGB*)grass,24,24,elx*24,ely*24);
375
				}
376
				else
377
				{
378
					kos_DrawBar(elx*24,ely*24,24,24,0xAAAA00);
379
				}
380
 
381
				break;
382
			case 'k':
383
				if (drawgraphics==true){
384
					switch(kosilkadirection){
385
					case 1:
386
						kos_PutImage((RGB*)kosilka_d,24,24,elx*24,ely*24);
387
						break;
388
					case 2:
389
						kos_PutImage((RGB*)kosilka_u,24,24,elx*24,ely*24);
390
						break;
391
					case 3:
392
						kos_PutImage((RGB*)kosilka_l,24,24,elx*24,ely*24);
393
						break;
394
					case 4:
395
						kos_PutImage((RGB*)kosilka_r,24,24,elx*24,ely*24);
396
						break;
397
					}
398
 
399
 
400
				}
401
				else
402
				{
403
					kos_DrawBar(elx*24,ely*24,24,24,0x00AAAA);
404
				}
405
 
406
 
407
 
408
				break;
409
			case 'n':
410
				if (drawgraphics==true){
411
					kos_PutImage((RGB*)skos,24,24,elx*24,ely*24);
412
				}
413
				else
414
				{
415
					kos_DrawBar(elx*24,ely*24,24,24,0xAAAAAA);
416
				}
417
 
418
 
419
				break;
420
			case 's':
421
				if (drawgraphics==true){
422
					kos_PutImage((RGB*)stone,24,24,elx*24,ely*24);
423
				}
424
				else
425
				{
426
					kos_DrawBar(elx*24,ely*24,24,24,0x555555);
427
				}
428
 
429
 
430
				break;
431
 
432
			case 't':
433
				if (drawgraphics==true){
434
					kos_PutImage((RGB*)tree,24,24,elx*24,ely*24);
435
				}
436
				else
437
				{
438
					kos_DrawBar(elx*24,ely*24,24,24,0x005500);
439
				}
440
 
441
 
442
				break;
443
 
444
			}
445
 
446
}
447
 
448
 
449
void display_grass_left(){ //Выводим на экран количество оставшейся травы
450
	kos_DrawBar(605,120,20,10,0xEEEEEE);
451
	kos_DisplayNumberToWindow(grassLeft(),3,605,120,0x0000FF,nbDecimal,false);
452
}
453
 
454
 
455
void animate(int initcellx, int initcelly, int direction){ //анимация движения косилки
456
	int tmpp=0;
457
 
458
		switch (direction){
459
		case 1:
460
			for (tmpp=0; tmpp<23;tmpp++){
461
				if (drawgraphics==true){
462
					kos_PutImage((RGB*)skos,24,24,initcellx*24,initcelly*24);
463
					kos_PutImage((RGB*)kosilka_d,24,24,initcellx*24,initcelly*24+tmpp);
464
				} else {
465
					kos_DrawBar(initcellx*24,initcelly*24,24,24,0xAAAAAA);
466
					kos_DrawBar(initcellx*24,initcelly*24+tmpp,24,24,0x00AAAA);
467
 
468
				}
469
				kos_Pause(1);
470
			}
471
			break;
472
		case 2:
473
			for (tmpp=0; tmpp<23;tmpp++){
474
				if (drawgraphics==true){
475
					kos_PutImage((RGB*)skos,24,24,initcellx*24,initcelly*24);
476
					kos_PutImage((RGB*)kosilka_u,24,24,initcellx*24,initcelly*24-tmpp);
477
				} else {
478
					kos_DrawBar(initcellx*24,initcelly*24,24,24,0xAAAAAA);
479
					kos_DrawBar(initcellx*24,initcelly*24-tmpp,24,24,0x00AAAA);
480
				}
481
				kos_Pause(1);
482
			}
483
			break;
484
		case 3:
485
			for (tmpp=0; tmpp<23;tmpp++){
486
				if (drawgraphics==true){
487
					kos_PutImage((RGB*)skos,24,24,initcellx*24,initcelly*24);
488
					kos_PutImage((RGB*)kosilka_r,24,24,initcellx*24+tmpp,initcelly*24);
489
				} else {
490
					kos_DrawBar(initcellx*24,initcelly*24,24,24,0xAAAAAA);
491
					kos_DrawBar(initcellx*24+tmpp,initcelly*24,24,24,0x00AAAA);
492
 
493
				}
494
				kos_Pause(1);
495
			}
496
			break;
497
		case 4:
498
			for (tmpp=0; tmpp<23;tmpp++){
499
				if (drawgraphics==true){
500
					kos_PutImage((RGB*)skos,24,24,initcellx*24,initcelly*24);
501
					kos_PutImage((RGB*)kosilka_l,24,24,initcellx*24-tmpp,initcelly*24);
502
				} else {
503
					kos_DrawBar(initcellx*24,initcelly*24,24,24,0xAAAAAA);
504
					kos_DrawBar(initcellx*24-tmpp,initcelly*24,24,24,0x00AAAA);
505
 
506
				}
507
				kos_Pause(1);
508
			}
509
			break;
510
		}
511
 
512
 
513
}
514
 
515
 
516
void draw_window(void){ //Перерисовка окна
517
	//----Leency
2131 leency 518
	sProcessInfo sPI;
519
 
968 leency 520
	if (w_redraw)
521
	{
522
		kos_WindowRedrawStatus(1); //Начало перерисовки
969 leency 523
		//kos_DefineAndDrawWindow(50,50,640,506,0x74,0xEEEEEE,0,0,(Dword)windowTitle);
524
		kos_DefineAndDrawWindow(50,50,640,506-22+kos_GetSkinWidth(),0x74,0xEEEEEE,0,0,(Dword)windowTitle);
2131 leency 525
		kos_WindowRedrawStatus(2); //Конец перерисовки
968 leency 526
	}
527
	w_redraw=false;
528
 
2131 leency 529
	kos_ProcessInfo( &sPI );
2334 leency 530
	if (sPI.rawData[70]&0x04) return; //ничего не делать если окно схлопнуто в заголовок
968 leency 531
 
532
	//Перерисовка карты
533
	if ((status!=0)&&(status!=-1)&&(status!=4))
534
	{
535
		kos_DrawBar(631-151,0,151,480,0xEEEEEE);
536
 
537
		kos_WriteTextToWindow(505,30,0x80, 0 ,"Љ  Ћ  ‘  €  ‹  Љ  Ђ",19);
538
		kos_WriteTextToWindow(522,40,0x80, 0 ,"¤«п Љ®«ЁЎаЁ Ћ‘",14);
539
 
540
		kos_WriteTextToWindow(495,80,0x80, 0 ,"“а®ўҐ­м:",6);
541
		kos_DisplayNumberToWindow(level,3,605,80,0x0000FF,nbDecimal,false);
542
 
543
		kos_WriteTextToWindow(495,95,0x80, 0 ,"Ћбв «®бм Ї®Їлв®Є:",11);
544
		kos_DisplayNumberToWindow(lives,1,605,95,0x0000FF,nbDecimal,false);
545
 
546
		kos_WriteTextToWindow(495,120,0x80, 0 ,"Ћбв «®бм ва ўл:",11);
547
		display_grass_left();
548
 
549
		kos_WriteTextToWindow(526,450,0x80, 0 ,(char*)version,12);
550
 
551
		for (int cy=0;cy<20;cy++) for (int cx=0;cx<20;cx++)	draw_element(cx,cy);
552
	}
553
 
554
	if (status==0){
555
		kos_DrawBar(0,0,4,480,0x000000);
556
		kos_DrawBar(628,0,3,480,0x000000);
557
		//Leency----
558
 
559
 
560
		for (int tmpppy=0;tmpppy<20;tmpppy++){
561
			for (int tmpppx=0;tmpppx<26;tmpppx++){
562
				if ((tmpppx==0) || (tmpppx==25) || (tmpppy==0) || (tmpppy==19)){
563
					kos_PutImage((RGB*)stone,24,24,4+tmpppx*24,tmpppy*24);
564
				}
565
				else
566
				{
567
					kos_PutImage((RGB*)skos,24,24,4+tmpppx*24,tmpppy*24);
568
				}
569
			}
570
		}
571
 
572
		if (drawgraphics==true){
573
			kos_PutImage((RGB*)kosilka_d,24,24,305,150);
574
		}
575
		else
576
		{
577
			kos_DrawBar(305,150,24,24,0x00AAAA);
578
		}
579
 
580
 
581
		if (drawanimation==true){
582
			kos_DrawBar(335,150,24,24,0x00AA00);
583
		}
584
		else
585
		{
586
			kos_DrawBar(335,150,24,24,0xAA0000);
587
		}
588
 
589
                kos_WriteTextToWindow(257,200,0x80, 0xFFFFFF ,"Љ   Ћ   ‘   €   ‹   Љ   Ђ",19);
590
                kos_WriteTextToWindow(290, 220,0x80, 0xFFFFFF ,"¤«п Љ®«ЁЎаЁ Ћ‘",14);
591
                kos_WriteTextToWindow(239, 240,0x80, 0xFFFFFF ,"<¤«п ­ з «  ЁЈал ­ ¦¬ЁвҐ ENTER>",30);
592
                kos_WriteTextToWindow(30, 380,0x80, 0xFFFFFF ,"<­ ¦¬ЁвҐ  ¤«п ЇҐаҐЄ«о祭Ёп ०Ё¬  Ја дЁЄЁ>",53);
593
                kos_WriteTextToWindow(30, 400,0x80, 0xFFFFFF ,"<­ ¦¬ЁвҐ  ¤«п ўЄ«о祭Ёп/ўлЄ«о祭Ёп  ­Ё¬ жЁЁ>",41);
594
                kos_WriteTextToWindow(30, 420,0x80, 0xFFFFFF ,"<­ ¦¬ЁвҐ  ¤«п Їа®б¬®ва  бўҐ¤Ґ­Ё© ® Їа®Ја ¬¬Ґ>",32);
595
                if (skin_available==true) {kos_WriteTextToWindow(30, 440,0x80, 0xFFFFFF ,"<­ ¦¬ЁвҐ  зв®Ўл ўлЄ«озЁвм/ўЄ«озЁвм бЄЁ­>",27);}
596
 
597
 
598
        //      kos_WriteTextToWindow(470, 440,0x80, 0xFFFFFF ,"­ ¦¬ЁвҐ  ¤«п ўл室 ",27);
599
	//	kos_DisplayNumberToWindow(external_levels_count[0],3,200,340,0x0000FF,nbDecimal,false);
600
 
601
 
602
 
1012 leency 603
		kos_WriteTextToWindow(533, 440,0x80, 0xFFFFFF ,(char*)version,0);
968 leency 604
	}
605
	if (status==2){
606
	   kos_DrawBar(10,150,610,200,0x528B4C);
607
	   kos_DrawBar(15,155,601,190,0x3BCF46);
608
           kos_WriteTextToWindow(240,230,0x80, 0xFFFFFF ,"‚л ўлЁЈа «Ё!",13);
609
           kos_WriteTextToWindow(240,250,0x80, 0xFFFFFF ,"<­ ¦¬ЁвҐ q ¤«п ў®§ўа в  ў ¬Ґ­о>",17);
610
	}
611
	if (status==3){
612
	   kos_DrawBar(10,150,610,200,0x8B4C4C);
613
	   kos_DrawBar(15,155,601,190,0xCF3B3B);
614
           kos_WriteTextToWindow(220,220,0x80, 0xFFFFFF ,"€Ја  ®Є®­зҐ­ ...",13);
615
           kos_WriteTextToWindow(220,240,0x80, 0xFFFFFF ,"<­ ¦¬ЁвҐ r ¤«п в®Ј®, зв®Ўл блЈа вм Ґйс а §>",23);
616
           kos_WriteTextToWindow(220,260,0x80, 0xFFFFFF ,"<­ ¦¬ЁвҐ q ¤«п ў®§ўа в  ў ¬Ґ­о>",17);
617
	}
618
	if (status==-1){
619
 
620
		kos_DrawBar(0,0,4,480,0x000000);
621
		kos_DrawBar(631-3,0,3,480,0x000000);
622
 
623
	   for (int tmpppy=0;tmpppy<20;tmpppy++){
624
			for (int tmpppx=0;tmpppx<26;tmpppx++){
625
				if ((tmpppx==0) || (tmpppx==25) || (tmpppy==0) || (tmpppy==19)){
626
					kos_PutImage((RGB*)stone,24,24,4+tmpppx*24,tmpppy*24);
627
				}
628
				else
629
				{
630
					kos_PutImage((RGB*)skos,24,24,4+tmpppx*24,tmpppy*24);
631
				}
632
			}
633
		}
634
 
635
           kos_WriteTextToWindow(40,40,0x80, 0xFFFFFF ,"Љ®бЁ«Є  ¤«п Ћ‘ Љ®«ЁЎаЁ",22);
636
	   kos_WriteTextToWindow(40,60,0x80, 0xFFFFFF ,(char*)version,12);
637
	   kos_WriteTextToWindow(40,75,0x80, 0xFFFFFF ,"________________________________________",40);
638
 
639
           kos_WriteTextToWindow(40,120,0x80, 0xFFFFFF ,"Љ®««ҐЄвЁў а §а Ў®взЁЄ®ў:",18);
640
           kos_WriteTextToWindow(40,150,0x80, 0xEEFFEE ,"Ђ­¤аҐ© ЊЁе ©«®ўЁз aka Dron2004 - Їа®Ја ¬¬Ёа®ў ­ЁҐ, ўбв஥­­ п Ја дЁЄ  (ЎҐ§ бЄЁ­ )",32);
641
           kos_WriteTextToWindow(40,170,0x80, 0xDDFFDD ,"Mario79 - вҐбвЁа®ў ­ЁҐ, Ї®¬®йм ў а §а Ў®вЄҐ, ў ¦­лҐ Ё¤ҐЁ",35);
642
           kos_WriteTextToWindow(40,190,0x80, 0xCCFFCC ,"Ataualpa - вҐбвЁа®ў ­ЁҐ, Ї®¬®йм ў а §а Ў®вЄҐ",36);
643
           kos_WriteTextToWindow(40,210,0x80, 0xBBFFBB ,"Leency - вҐбвЁа®ў ­ЁҐ, Ї®¬®йм ў а §а Ў®вЄҐ, § ¬Ґз вҐ«м­лҐ бЄЁ­л, ў ¦­лҐ Ё¤ҐЁ",62);
644
           kos_WriteTextToWindow(40,230,0x80, 0xAAFFAA ,"Mike - вҐбвЁа®ў ­ЁҐ, Ї®¬®йм ў а §а Ў®вЄҐ",34);
645
           kos_WriteTextToWindow(40,250,0x80, 0x99FF99 ,"bw - вҐбвЁа®ў ­ЁҐ, Ї®¬®йм ў а §а Ў®вЄҐ, ў ¦­лҐ Ё¤ҐЁ",49);
646
			kos_WriteTextToWindow(40,270,0x80, 0x99FF99 ,"diamond - Ё¤Ґп ®в¬Ґ­л 室 , вҐбвЁа®ў ­ЁҐ",49);
647
 
648
           kos_WriteTextToWindow(40,300,0x80, 0x88FF88 ,"Ћв¤Ґ«м­®Ґ бЇ бЁЎ®:",16);
649
           kos_WriteTextToWindow(40,330,0x80, 0x77FF77 ,"‚ᥬ, Єв® ЁЈа Ґв ў нвг ЁЈаг :-) !",50);
650
 
651
 
652
           kos_WriteTextToWindow(40,430,0x80, 0x66FF66 ,"­ ¦¬ЁвҐ  ¤«п ў®§ўа в  ў ¬Ґ­о",35);
653
	}
654
 
655
 
656
	if (status==4){
657
		kos_DrawBar(0,0,631,480,0x000000);
658
 
659
 
660
		for (int tmpppy=0;tmpppy<20;tmpppy++){
661
			for (int tmpppx=0;tmpppx<26;tmpppx++){
662
				if ((tmpppx==0) || (tmpppx==25) || (tmpppy==0) || (tmpppy==19)){
663
					kos_PutImage((RGB*)stone,24,24,4+tmpppx*24,tmpppy*24);
664
				}
665
				else
666
				{
667
					kos_PutImage((RGB*)skos,24,24,4+tmpppx*24,tmpppy*24);
668
				}
669
			}
670
		}
671
 
672
                kos_WriteTextToWindow(215, 200,0x80, 0xFFFFFF ,"‚лЎҐаЁвҐ ­ Ў®а га®ў­Ґ© (­ ¦¬ЁвҐ <1> Ё«Ё <2>):",0);
673
                kos_WriteTextToWindow(215, 220,0x80, 0xFFFFFF ,"1. ‚бв஥­­лҐ га®ў­Ё",0);
674
                kos_WriteTextToWindow(215, 240,0x80, 0xFFFFFF ,"2. ‚­Ґи­Ё© ­ Ў®а га®ў­Ґ©",0);
675
 
676
	}
677
 
678
}
679
 
680
 
681
 
682
//Описание уровней игры
683
//, где	k - косилка
684
//		g - трава
685
//		n - скошенная трава
686
//		s - камень
687
//		t - дерево
688
void initializeLevel(int levnum){
689
	laststep=0;
690
	if (external_levels==false){
691
 
692
	kosilkadirection=1;
693
	if (levnum==1){
694
		static char tmparea[20][20]={{'k','t','g','g','g','g','g','s','g','g','g','g','g','g','g','g','g','g','g','g'},
695
								{'g','s','g','s','g','g','g','s','g','s','g','g','s','g','g','g','g','g','g','g'},
696
								{'g','t','g','s','g','g','g','s','g','s','g','g','s','g','g','g','g','g','g','g'},
697
								{'g','s','g','s','g','g','g','s','g','s','g','g','s','g','g','g','g','g','g','g'},
698
								{'g','t','g','s','g','g','g','s','g','s','g','g','s','g','g','g','g','g','g','g'},
699
								{'g','s','g','s','g','g','g','s','g','g','g','g','s','g','g','g','g','g','g','g'},
700
								{'g','t','g','s','g','g','g','s','g','g','g','g','s','g','g','s','s','s','g','g'},
701
								{'g','s','g','s','g','g','g','s','g','g','g','g','s','g','g','s','s','s','g','g'},
702
								{'g','t','g','s','g','g','g','s','g','g','g','g','s','g','g','s','s','s','g','g'},
703
								{'g','s','g','s','g','g','g','s','g','g','g','g','s','g','g','s','g','g','g','g'},
704
								{'g','t','g','s','g','g','g','s','g','g','g','g','s','g','g','g','g','g','g','g'},
705
								{'g','s','g','s','g','g','g','s','g','g','g','g','s','g','g','g','g','g','g','g'},
706
								{'g','t','g','s','g','g','g','s','g','g','g','g','s','g','g','g','g','g','g','g'},
707
								{'g','s','g','s','g','g','g','s','g','g','g','g','s','g','g','g','g','g','g','g'},
708
								{'g','t','g','s','g','g','g','s','g','g','g','g','s','g','g','g','g','g','g','g'},
709
								{'g','s','g','s','g','g','g','s','g','g','g','g','s','g','g','g','g','g','g','g'},
710
								{'g','t','g','s','g','g','g','s','g','g','g','g','s','g','g','g','g','g','g','g'},
711
								{'g','s','g','s','g','g','g','s','g','g','g','g','s','g','g','g','g','g','g','g'},
712
								{'g','t','g','s','g','g','g','s','g','g','g','g','s','g','g','g','g','g','g','g'},
713
								{'g','g','g','s','g','g','g','g','g','s','g','g','s','g','g','g','g','g','g','g'}};
714
			for (int tyy=0;tyy<20;tyy++){
715
				for (int txx=0;txx<20;txx++){
716
 
717
					if (tmparea[txx][tyy]=='k'){
718
						kosilkax=tyy;
719
						kosilkay=txx;
720
					}
721
 
722
					gamearea[txx][tyy]=tmparea[tyy][txx];
723
				}
724
			}
725
	}
726
	if (levnum==2){
727
		static char tmparea[20][20]={{'s','s','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g'},
728
								{'s','s','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','s','s','g'},
729
								{'g','k','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','s','s','g'},
730
								{'g','g','g','g','g','g','g','g','g','g','g','g','s','s','g','g','g','g','g','g'},
731
								{'g','g','g','g','g','g','g','g','g','g','g','g','s','s','g','g','g','g','g','g'},
732
								{'g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g'},
733
								{'g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g'},
734
								{'g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g'},
735
								{'s','s','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g'},
736
								{'s','s','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g'},
737
								{'g','g','g','g','g','g','g','g','s','s','g','g','g','g','g','g','g','s','s','g'},
738
								{'g','g','g','g','g','g','g','g','s','s','g','g','g','g','g','g','g','s','s','g'},
739
								{'g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g'},
740
								{'g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g'},
741
								{'g','g','g','g','g','g','g','g','g','g','g','g','g','s','s','g','g','g','g','g'},
742
								{'g','g','g','g','g','g','g','g','g','g','g','g','g','s','s','g','g','g','g','g'},
743
								{'g','g','g','s','s','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g'},
744
								{'g','g','g','s','s','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g'},
745
								{'g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g'},
746
								{'g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g'}};
747
			for (int tyy=0;tyy<20;tyy++){
748
				for (int txx=0;txx<20;txx++){
749
 
750
					if (tmparea[txx][tyy]=='k'){
751
						kosilkax=tyy;
752
						kosilkay=txx;
753
					}
754
 
755
					gamearea[txx][tyy]=tmparea[tyy][txx];
756
				}
757
			}
758
	}
759
 
760
	if (levnum==3){
761
		static char tmparea[20][20]={{'t','n','t','n','t','n','t','n','t','n','t','n','t','n','t','n','t','n','t','k'},
762
								{'n','t','g','g','g','g','g','g','g','g','g','g','s','n','n','s','n','s','t','g'},
763
								{'t','n','g','g','g','g','g','g','g','g','g','g','n','t','n','n','n','t','t','g'},
764
								{'n','t','g','g','g','g','g','g','g','g','g','g','n','s','n','s','n','s','t','g'},
765
								{'t','n','g','g','g','g','g','s','s','g','g','g','n','n','n','n','n','t','t','g'},
766
								{'n','t','g','g','g','g','g','g','g','g','g','g','t','n','s','n','n','s','t','g'},
767
								{'t','n','g','g','g','g','g','g','g','g','g','g','n','n','n','n','n','t','t','g'},
768
								{'n','t','g','g','g','g','g','g','g','g','g','g','n','n','s','n','n','s','t','g'},
769
								{'t','n','g','g','g','g','g','g','g','g','g','g','n','s','n','n','n','t','t','g'},
770
								{'n','t','g','g','g','g','g','g','g','g','g','g','s','n','n','n','n','t','g','g'},
771
								{'t','n','g','g','g','s','g','g','g','g','g','g','t','t','t','t','t','t','g','g'},
772
								{'n','t','g','g','g','s','g','g','g','g','g','g','g','g','g','g','g','t','g','g'},
773
								{'t','n','g','g','g','g','g','g','g','g','g','g','t','t','g','g','g','t','g','g'},
774
								{'n','t','g','g','g','g','g','g','t','t','g','g','g','t','g','g','g','t','g','g'},
775
								{'t','n','g','g','g','g','g','g','t','t','g','g','g','t','g','g','g','t','g','g'},
776
								{'n','t','g','g','g','g','g','g','g','g','g','g','g','t','g','g','g','t','g','g'},
777
								{'t','n','g','g','g','g','g','g','g','g','g','g','g','t','t','g','g','t','g','g'},
778
								{'n','t','g','g','g','g','g','g','g','g','g','g','g','g','t','g','g','t','g','g'},
779
								{'t','n','g','g','g','g','g','g','g','g','g','g','g','g','t','g','g','t','g','g'},
780
								{'n','t','s','s','s','s','s','s','s','s','s','s','s','s','t','g','g','g','g','g'}};
781
			for (int tyy=0;tyy<20;tyy++){
782
				for (int txx=0;txx<20;txx++){
783
 
784
					if (tmparea[txx][tyy]=='k'){
785
						kosilkax=tyy;
786
						kosilkay=txx;
787
					}
788
 
789
					gamearea[txx][tyy]=tmparea[tyy][txx];
790
				}
791
			}
792
	}
793
 
794
		if (levnum==4){
795
		static char tmparea[20][20]={{'t','t','t','t','t','t','t','t','t','t','t','t','t','t','t','t','t','t','t','t'},
796
								{'t','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','s','n','t'},
797
								{'t','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','s','n','t'},
798
								{'t','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','s','n','t'},
799
								{'t','g','g','g','g','g','g','g','t','t','g','g','g','g','g','g','g','s','n','t'},
800
								{'t','g','g','g','g','g','g','g','t','t','g','g','g','g','g','g','g','s','n','t'},
801
								{'t','g','g','g','g','g','g','g','t','t','g','g','g','g','g','g','g','s','n','t'},
802
								{'t','g','g','g','g','g','g','g','t','t','g','g','g','g','g','g','g','s','n','t'},
803
								{'t','g','g','g','g','g','g','g','t','t','g','g','g','g','g','g','g','s','s','t'},
804
								{'t','g','g','g','g','t','t','t','t','t','t','t','t','g','g','g','g','g','g','t'},
805
								{'t','g','g','g','g','t','t','t','t','t','t','t','t','g','g','g','g','g','g','t'},
806
								{'t','g','g','g','g','g','g','g','t','t','g','g','g','g','g','g','g','g','g','t'},
807
								{'t','g','g','g','g','g','g','g','t','t','g','g','g','g','g','g','g','g','g','t'},
808
								{'t','g','g','g','g','g','g','g','t','t','g','g','g','g','g','g','g','g','g','t'},
809
								{'t','g','g','g','g','g','g','g','t','t','g','g','g','g','g','g','g','g','g','t'},
810
								{'t','g','g','g','g','g','g','g','t','t','g','g','g','g','g','g','g','g','g','t'},
811
								{'t','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','t'},
812
								{'t','k','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','t'},
813
								{'t','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','t'},
814
								{'t','t','t','t','t','t','t','t','t','t','t','t','t','t','t','t','t','t','t','t'}};
815
			for (int tyy=0;tyy<20;tyy++){
816
				for (int txx=0;txx<20;txx++){
817
 
818
					if (tmparea[txx][tyy]=='k'){
819
						kosilkax=tyy;
820
						kosilkay=txx;
821
					}
822
 
823
					gamearea[txx][tyy]=tmparea[tyy][txx];
824
				}
825
			}
826
	}
827
 
828
			if (levnum==5){
829
		static char tmparea[20][20]={{'t','t','t','t','t','t','t','t','t','t','t','t','t','t','t','t','t','t','t','t'},
830
								{'t','s','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','t'},
831
								{'t','t','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','t'},
832
								{'t','s','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','t'},
833
								{'t','s','g','g','g','g','g','t','g','g','t','g','g','g','g','g','g','g','g','t'},
834
								{'t','t','g','g','g','g','t','n','t','t','t','g','g','g','g','g','g','g','g','t'},
835
								{'t','s','g','g','g','g','t','n','n','n','t','g','g','g','g','g','g','g','g','t'},
836
								{'t','k','g','g','g','g','t','n','n','n','t','g','g','g','g','g','g','g','g','t'},
837
								{'t','g','g','g','g','g','t','n','n','n','t','g','g','g','g','g','g','g','g','t'},
838
								{'t','g','g','g','g','g','t','n','n','t','g','g','g','g','g','g','g','g','g','t'},
839
								{'t','g','g','g','g','g','t','n','n','t','g','g','g','g','g','g','g','g','g','t'},
840
								{'t','g','g','g','g','g','t','n','n','n','t','g','g','g','g','g','g','g','g','t'},
841
								{'t','g','g','g','g','g','t','n','n','n','t','g','g','g','g','g','g','g','g','t'},
842
								{'t','g','g','g','g','g','g','t','n','t','t','g','g','g','g','g','g','g','g','t'},
843
								{'t','g','g','g','g','g','g','t','t','g','g','g','g','g','g','g','g','g','g','t'},
844
								{'t','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','t'},
845
								{'t','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','t'},
846
								{'t','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','t'},
847
								{'t','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','t'},
848
								{'t','t','t','t','t','t','t','t','t','t','t','t','t','t','t','t','t','t','t','t'}};
849
			for (int tyy=0;tyy<20;tyy++){
850
				for (int txx=0;txx<20;txx++){
851
 
852
					if (tmparea[txx][tyy]=='k'){
853
						kosilkax=tyy;
854
						kosilkay=txx;
855
					}
856
 
857
					gamearea[txx][tyy]=tmparea[tyy][txx];
858
				}
859
			}
860
			}
861
 
862
		if (levnum==6){
863
		static char tmparea[20][20]={{'s','s','s','s','s','s','s','s','s','s','s','s','s','s','s','s','s','s','s','s'},
864
								{'s','k','t','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','s'},
865
								{'s','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','s'},
866
								{'s','g','g','s','s','s','s','s','s','s','s','s','s','s','s','s','s','g','g','s'},
867
								{'s','g','g','g','g','g','g','g','g','g','g','g','g','g','t','t','s','g','g','s'},
868
								{'s','g','g','s','g','g','g','g','g','g','g','g','g','g','t','t','s','g','g','s'},
869
								{'s','g','g','s','g','g','g','g','g','g','g','g','g','g','t','t','s','g','g','s'},
870
								{'s','g','g','s','g','g','g','g','g','t','t','g','g','g','g','g','s','g','g','s'},
871
								{'s','g','g','s','g','g','g','g','g','t','t','t','g','g','g','g','s','g','g','s'},
872
								{'s','g','g','s','g','g','g','t','t','t','t','t','t','g','g','g','s','g','g','s'},
873
								{'s','g','g','s','g','g','g','t','t','t','t','t','t','g','g','g','s','g','g','s'},
874
								{'s','g','g','s','g','g','g','g','g','t','t','g','g','g','g','g','s','g','g','s'},
875
								{'s','g','g','s','g','g','g','g','g','t','t','g','g','g','g','g','s','g','g','s'},
876
								{'s','g','g','s','g','g','g','g','g','g','g','g','g','g','g','g','s','g','g','s'},
877
								{'s','g','g','s','g','g','g','g','g','g','g','g','g','g','g','g','s','g','g','s'},
878
								{'s','g','g','s','g','g','g','g','g','g','g','g','g','g','g','g','s','g','g','s'},
879
								{'s','g','g','s','s','s','s','s','s','s','s','s','s','s','s','s','s','g','g','s'},
880
								{'s','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','s'},
881
								{'s','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','s'},
882
								{'s','s','s','s','s','s','s','s','s','s','s','s','s','s','s','s','s','s','s','s'}};
883
			for (int tyy=0;tyy<20;tyy++){
884
				for (int txx=0;txx<20;txx++){
885
 
886
					if (tmparea[txx][tyy]=='k'){
887
						kosilkax=tyy;
888
						kosilkay=txx;
889
					}
890
 
891
					gamearea[txx][tyy]=tmparea[tyy][txx];
892
				}
893
			}
894
		}
895
 
896
 
897
			if (levnum==7){
898
		static char tmparea[20][20]={{'s','s','s','s','s','s','s','s','s','s','s','s','s','s','s','s','s','s','s','s'},
899
								{'s','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','s','t','t','s'},
900
								{'s','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','s','t','t','s'},
901
								{'s','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','s','t','t','s'},
902
								{'s','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','s','t','t','s'},
903
								{'s','g','g','g','g','g','t','t','t','t','t','t','g','g','g','g','s','t','t','s'},
904
								{'s','g','g','g','g','g','t','k','g','g','g','t','g','g','g','g','s','t','t','s'},
905
								{'s','g','g','g','g','g','t','g','g','g','g','t','g','g','g','g','s','t','t','s'},
906
								{'s','g','g','g','g','g','t','g','g','g','g','t','g','g','g','g','s','t','t','s'},
907
								{'s','g','g','g','g','g','t','g','g','g','g','t','g','g','g','g','s','s','s','s'},
908
								{'s','g','g','g','g','g','t','g','g','g','g','t','g','g','g','g','g','g','g','s'},
909
								{'s','g','g','g','g','g','t','t','t','t','g','t','g','g','g','g','g','g','g','s'},
910
								{'s','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','s'},
911
								{'s','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','s'},
912
								{'s','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','s'},
913
								{'s','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','s'},
914
								{'s','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','s'},
915
								{'s','g','g','g','g','g','g','g','g','t','g','g','t','g','g','g','g','g','g','s'},
916
								{'s','g','g','g','g','g','g','g','g','t','g','g','t','g','g','g','g','g','g','s'},
917
								{'s','s','s','s','s','s','s','s','s','s','s','s','s','s','s','s','s','s','s','s'}};
918
			for (int tyy=0;tyy<20;tyy++){
919
				for (int txx=0;txx<20;txx++){
920
 
921
					if (tmparea[txx][tyy]=='k'){
922
						kosilkax=tyy;
923
						kosilkay=txx;
924
					}
925
 
926
					gamearea[txx][tyy]=tmparea[tyy][txx];
927
				}
928
			}
929
		}
930
		}
931
		else
932
		{
933
			//ВНЕШНИЕ УРОВНИ
934
			kosilkadirection=1;
935
 
936
			int currentrow=0;
937
			int currentcol=0;
938
 
939
			for (int tmpcntr=0;tmpcntr<400;tmpcntr++){
940
 
941
				currentcol=(int)(tmpcntr/20);
942
				currentrow=tmpcntr-(((int)(tmpcntr/20))*20);
943
				switch(externallevels[tmpcntr+(400*(levnum-1))]){
944
 
945
				case 0:
946
					gamearea[currentrow][currentcol]='n';
947
					break;
948
				case 1:
949
					gamearea[currentrow][currentcol]='g';
950
					break;
951
				case 2:
952
					gamearea[currentrow][currentcol]='k';
953
					kosilkax=currentrow;
954
					kosilkay=currentcol;
955
					break;
956
				case 3:
957
					gamearea[currentrow][currentcol]='s';
958
					break;
959
				case 4:
960
					gamearea[currentrow][currentcol]='t';
961
					break;
962
 
963
				}
964
			}
965
 
966
 
967
		}
968
 
969
	draw_window();
970
 
971
}
972
 
973
//Преоверяем остаток травы
974
int grassLeft(){
975
	int leftgrass=0;
976
	for (int chky=0;chky<20;chky++){
977
		for (int chkx=0;chkx<20;chkx++){
978
			if (gamearea[chkx][chky]=='g') {
979
				leftgrass++;
980
			}
981
		}
982
	}
983
	return leftgrass;
984
}
985
 
986
 
987
//Меняем уровень или выводим сообщение о том, что все уровни пройдены
988
void updateStatus(){
989
 
990
 
991
	if (grassLeft()==0) {
992
		if (level==levelcount){
993
			gamestarted=false;
994
			status=2;
995
			draw_window();
996
		} else {
997
			gamestarted=false;
998
			interlevelpause();
999
			level++;
1000
			initializeLevel(level);
1001
			gamestarted=true;
1002
		}
1003
	}
1004
 
1005
}
1006
 
1007
 
1008
 
1009
 
1010
void decode_skin(){
1011
	int currentbyte3x=0;
1012
	RGB tmpRGB;
1013
	int tmpcc1=0;
1014
 
1015
	for (tmpcc1=0;tmpcc1<576;tmpcc1++){
1016
 
1017
		tmpRGB.r= skindata[currentbyte3x];
1018
		tmpRGB.g= skindata[currentbyte3x+1];
1019
		tmpRGB.b= skindata[currentbyte3x+2];
1020
		kosilka_d[tmpcc1]=tmpRGB;
1021
		currentbyte3x+=3;
1022
	}
1023
 
1024
	for (tmpcc1=0;tmpcc1<576;tmpcc1++){
1025
 
1026
		tmpRGB.r= skindata[currentbyte3x];
1027
		tmpRGB.g= skindata[currentbyte3x+1];
1028
		tmpRGB.b= skindata[currentbyte3x+2];
1029
		kosilka_u[tmpcc1]=tmpRGB;
1030
		currentbyte3x+=3;
1031
	}
1032
 
1033
	for (tmpcc1=0;tmpcc1<576;tmpcc1++){
1034
 
1035
		tmpRGB.r= skindata[currentbyte3x];
1036
		tmpRGB.g= skindata[currentbyte3x+1];
1037
		tmpRGB.b= skindata[currentbyte3x+2];
1038
		kosilka_l[tmpcc1]=tmpRGB;
1039
		currentbyte3x+=3;
1040
	}
1041
 
1042
	for (tmpcc1=0;tmpcc1<576;tmpcc1++){
1043
 
1044
		tmpRGB.r= skindata[currentbyte3x];
1045
		tmpRGB.g= skindata[currentbyte3x+1];
1046
		tmpRGB.b= skindata[currentbyte3x+2];
1047
		kosilka_r[tmpcc1]=tmpRGB;
1048
		currentbyte3x+=3;
1049
	}
1050
 
1051
	for (tmpcc1=0;tmpcc1<576;tmpcc1++){
1052
 
1053
		tmpRGB.r= skindata[currentbyte3x];
1054
		tmpRGB.g= skindata[currentbyte3x+1];
1055
		tmpRGB.b= skindata[currentbyte3x+2];
1056
		skos[tmpcc1]=tmpRGB;
1057
		currentbyte3x+=3;
1058
	}
1059
 
1060
	for (tmpcc1=0;tmpcc1<576;tmpcc1++){
1061
 
1062
		tmpRGB.r= skindata[currentbyte3x];
1063
		tmpRGB.g= skindata[currentbyte3x+1];
1064
		tmpRGB.b= skindata[currentbyte3x+2];
1065
		grass[tmpcc1]=tmpRGB;
1066
		currentbyte3x+=3;
1067
	}
1068
 
1069
	for (tmpcc1=0;tmpcc1<576;tmpcc1++){
1070
 
1071
		tmpRGB.r= skindata[currentbyte3x];
1072
		tmpRGB.g= skindata[currentbyte3x+1];
1073
		tmpRGB.b= skindata[currentbyte3x+2];
1074
		stone[tmpcc1]=tmpRGB;
1075
		currentbyte3x+=3;
1076
	}
1077
 
1078
	for (tmpcc1=0;tmpcc1<576;tmpcc1++){
1079
 
1080
		tmpRGB.r= skindata[currentbyte3x];
1081
		tmpRGB.g= skindata[currentbyte3x+1];
1082
		tmpRGB.b= skindata[currentbyte3x+2];
1083
		tree[tmpcc1]=tmpRGB;
1084
		currentbyte3x+=3;
1085
	}
1086
 
1087
}
1088
 
1089
 
1090
 
1091
void load_external_levels(){
1092
 
1093
	CKosFile lev(getLevelsPathName());
1094
 
1095
level_read_result=lev.Read (external_levels_count,1);
1096
 
1097
		if (level_read_result == 1){
1098
				external_levels_available=true;
1099
		}
1100
		else
1101
		{
1102
				external_levels_available=false;
1103
		};
1104
 
1105
 
1106
		if (external_levels_count[0]==0){
1107
			external_levels_available=false;
1108
		}
1109
		else
1110
		{
1111
			externallevels = new Byte[400*external_levels_count[0]];
1112
			lev.Read (externallevels,400*external_levels_count[0]);
1113
		}
1114
 
1115
 
1116
 
1117
}
1118
 
1119
void app_halt(){
1120
 
1121
	delete apppath;
1122
	delete levpath;
1123
	if (external_levels_available==true) {delete externallevels;}
1124
	kos_ExitApp();
1125
 
1126
}
1127
 
1128
void kos_Main(){
1129
 
1130
 
1131
	load_external_levels();
1132
 
1133
	CKosFile  skin(getSkinPathName());
1134
 
1135
		read_result=skin.Read (skindata,13824);
1136
		if (read_result != 13824){
1137
			skin_available=false;
1138
		}
1139
		else
1140
		{
1141
			skin_available=true;
1142
		};
1143
 
1144
		if (skin_available==false){
1145
			decode_graphics(kosilka_d1,kosilka_d);
1146
			decode_graphics(kosilka_u1,kosilka_u);
1147
			decode_graphics(kosilka_l1,kosilka_l);
1148
			decode_graphics(kosilka_r1,kosilka_r);
1149
			decode_graphics(skos1,skos);
1150
			decode_graphics(stone1,stone);
1151
			decode_graphics(tree1,tree);
1152
			decode_graphics(grass1,grass);
1153
			skinned=false;
1154
		}
1155
		else
1156
		{
1157
			decode_skin();
1158
			skinned=true;
1159
		}
1160
 
1161
	draw_window();
1162
 
1163
	for (;;){
1164
 
1165
		switch (kos_WaitForEvent()){
1166
		case 1:
1167
			w_redraw=true;
1168
			draw_window();
1169
			break;
1170
		case 2:
1171
			Byte keyCode;
1172
			kos_GetKey(keyCode);
1173
			if (status==1){
1174
			if (gamestarted==true){
1175
				switch (keyCode){
1176
				case 177:
1177
					if (kosilkay<19){
1178
						if (gamearea[kosilkax][kosilkay+1]=='g'){
1179
							gamearea[kosilkax][kosilkay]='n';
1180
							gamearea[kosilkax][kosilkay+1]='k';
1181
 
1182
							if (drawanimation==true) {animate(kosilkax,kosilkay,1);}
1183
 
1184
 
1185
							lastkosilkadirection=kosilkadirection;
1186
							laststep=1;
1187
 
1188
							kosilkay++;
1189
							kosilkadirection=1;
1190
							draw_element(kosilkax,kosilkay);
1191
							draw_element(kosilkax,kosilkay-1);
1192
							display_grass_left();
1193
							updateStatus();
1194
						}
1195
					}
1196
					break;
1197
				case 178:
1198
					if (kosilkay>0){
1199
						if (gamearea[kosilkax][kosilkay-1]=='g'){
1200
							gamearea[kosilkax][kosilkay]='n';
1201
							gamearea[kosilkax][kosilkay-1]='k';
1202
 
1203
							if (drawanimation==true) {animate(kosilkax,kosilkay,2);}
1204
 
1205
							lastkosilkadirection=kosilkadirection;
1206
							laststep=2;
1207
 
1208
							kosilkay--;
1209
							kosilkadirection=2;
1210
 
1211
							draw_element(kosilkax,kosilkay);
1212
							draw_element(kosilkax,kosilkay+1);
1213
							display_grass_left();
1214
							updateStatus();
1215
						}
1216
					}
1217
					break;
1218
 
1219
				case 179:
1220
					if (kosilkax<19){
1221
						if (gamearea[kosilkax+1][kosilkay]=='g'){
1222
							gamearea[kosilkax][kosilkay]='n';
1223
							gamearea[kosilkax+1][kosilkay]='k';
1224
 
1225
							if (drawanimation==true) {animate(kosilkax,kosilkay,3);}
1226
 
1227
 
1228
							lastkosilkadirection=kosilkadirection;
1229
							laststep=3;
1230
 
1231
							kosilkax++;
1232
							kosilkadirection=4;
1233
 
1234
							draw_element(kosilkax,kosilkay);
1235
							draw_element(kosilkax-1,kosilkay);
1236
							display_grass_left();
1237
							updateStatus();
1238
						}
1239
					}
1240
					break;
1241
 
1242
				case 176:
1243
					if (kosilkax>0){
1244
						if (gamearea[kosilkax-1][kosilkay]=='g'){
1245
							gamearea[kosilkax][kosilkay]='n';
1246
							gamearea[kosilkax-1][kosilkay]='k';
1247
 
1248
							if (drawanimation==true) {animate(kosilkax,kosilkay,4);}
1249
 
1250
							lastkosilkadirection=kosilkadirection;
1251
							laststep=4;
1252
 
1253
							kosilkax--;
1254
							kosilkadirection=3;
1255
 
1256
							draw_element(kosilkax,kosilkay);
1257
							draw_element(kosilkax+1,kosilkay);
1258
							display_grass_left();
1259
							updateStatus();
1260
						}
1261
					}
1262
					break;
1263
 
1264
				case 27:
1265
					if (lives>0){
1266
						lives--;
1267
						initializeLevel(level);
1268
 
1269
					} else {
1270
						gamestarted=false;
1271
						status=3;
1272
						draw_window();
1273
					}
1274
					break;
1275
 
1276
				case 8:
1277
					if (laststep!=0){
1278
						kosilkadirection=lastkosilkadirection;
1279
						if (laststep==1){
1280
							gamearea[kosilkax][kosilkay]='g';
1281
							gamearea[kosilkax][kosilkay-1]='k';
1282
							draw_element(kosilkax,kosilkay);
1283
							draw_element(kosilkax,kosilkay-1);
1284
							kosilkay--;
1285
						}
1286
					if (laststep==2){
1287
							gamearea[kosilkax][kosilkay]='g';
1288
							gamearea[kosilkax][kosilkay+1]='k';
1289
							draw_element(kosilkax,kosilkay);
1290
							draw_element(kosilkax,kosilkay+1);
1291
							kosilkay++;
1292
						}
1293
 
1294
					if (laststep==3){
1295
							gamearea[kosilkax][kosilkay]='g';
1296
							gamearea[kosilkax-1][kosilkay]='k';
1297
							draw_element(kosilkax,kosilkay);
1298
							draw_element(kosilkax-1,kosilkay);
1299
							kosilkax--;
1300
						}
1301
 
1302
					if (laststep==4){
1303
							gamearea[kosilkax][kosilkay]='g';
1304
							gamearea[kosilkax+1][kosilkay]='k';
1305
							draw_element(kosilkax,kosilkay);
1306
							draw_element(kosilkax+1,kosilkay);
1307
							kosilkax++;
1308
						}
1309
 
1310
 
1311
						laststep=0;
1312
					}
1313
					break;
1314
 
1315
				}
1316
 
1317
			}
1318
			}
1319
			if (status==0){
1320
				if (keyCode==13){ //enter
1321
					if (external_levels_available==true){
1322
						status=4;
1323
						draw_window();
1324
					}
1325
					else
1326
					{
1327
						status=1;
1328
						initializeLevel(1);
1329
						gamestarted=true;
1330
					}
1331
 
1332
				}
1333
 
1334
				if (keyCode==103){
1335
					if (drawgraphics==true){
1336
						drawgraphics=false;
1337
					} else {
1338
						drawgraphics=true;
1339
					}
1340
 
1341
					if (drawgraphics==true){
1342
						kos_PutImage((RGB*)kosilka_d,24,24,305,150);
1343
					}
1344
					else
1345
					{
1346
					kos_DrawBar(305,150,24,24,0x00AAAA);
1347
					}
1348
				}
1349
 
1350
				if (keyCode==97){
1351
					if (drawanimation==true){
1352
						drawanimation=false;
1353
					} else {
1354
						drawanimation=true;
1355
					}
1356
 
1357
					if (drawanimation==true){
1358
						kos_DrawBar(335,150,24,24,0x00AA00);
1359
					}
1360
					else
1361
					{
1362
						kos_DrawBar(335,150,24,24,0xAA0000);
1363
					}
1364
				}
1365
				if (keyCode==104){
1366
						status=-1;
1367
						draw_window();
1368
				}
1369
 
1370
				if (keyCode==115){
1371
 
1372
					if (skin_available==true){
1373
					if (skinned==true){
1374
						skinned=false;
1375
						decode_graphics(kosilka_d1,kosilka_d);
1376
						decode_graphics(kosilka_u1,kosilka_u);
1377
						decode_graphics(kosilka_l1,kosilka_l);
1378
						decode_graphics(kosilka_r1,kosilka_r);
1379
						decode_graphics(skos1,skos);
1380
						decode_graphics(stone1,stone);
1381
						decode_graphics(tree1,tree);
1382
						decode_graphics(grass1,grass);
1383
					} else {
1384
						skinned=true;
1385
						decode_skin();
1386
					}
1387
 
1388
					draw_window();
1389
 
1390
					}
1391
 
1392
				}
1393
				if (keyCode==27){
1394
					app_halt();
1395
				}
1396
 
1397
			}
1398
 
1399
			if (status==4){
1400
				if (keyCode==49){ //1
1401
						external_levels=false;
1402
						status=1;
1403
						initializeLevel(1);
1404
						gamestarted=true;
1405
 
1406
				}
1407
 
1408
				if (keyCode==50){ //2
1409
						external_levels=true;
1410
						levelcount=external_levels_count[0];
1411
						status=1;
1412
						initializeLevel(1);
1413
						gamestarted=true;
1414
 
1415
				}
1416
			}
1417
 
1418
			if (status==2){
1419
				if (keyCode==113){
1420
						lives=2;
1421
						status=0;
1422
						level=1;
1423
						draw_window();
1424
						gamestarted=true;
1425
				}
1426
			}
1427
 
1428
			if (status==3){
1429
				if (keyCode==113){
1430
						lives=2;
1431
						status=0;
1432
						level=1;
1433
						draw_window();
1434
						gamestarted=true;
1435
 
1436
				}
1437
				if (keyCode==114){
1438
						lives=2;
1439
						status=1;
1440
						level=1;
1441
						initializeLevel(1);
1442
						gamestarted=true;
1443
				}
1444
 
1445
			}
1446
 
1447
			if (status==-1){
1448
				if (keyCode==8){
1449
					status=0;
1450
					draw_window();
1451
				}
1452
			}
1453
 
1454
			//Выводим код нажатой клавиши. Фича временная
1455
	/*		kos_DrawBar(20,250,150,10,0xEEEEEE);
1456
			kos_WriteTextToWindow(20,250,0x80, 0 ,"Button",0);
1457
			kos_DisplayNumberToWindow(keyCode,3,70,250,0x0000FF,nbDecimal,false);  */
1458
			break;
1459
		case 3:
1460
 
1461
			app_halt();
1462
			break;
1463
		}
1464
	}
1465
}
1466
 
1467
// Конец исходника ;-)