diff options
Diffstat (limited to 'apps')
-rw-r--r-- | apps/plugins/snake2.c | 459 |
1 files changed, 170 insertions, 289 deletions
diff --git a/apps/plugins/snake2.c b/apps/plugins/snake2.c index 5ca5e95912..bd54735e02 100644 --- a/apps/plugins/snake2.c +++ b/apps/plugins/snake2.c | |||
@@ -31,13 +31,15 @@ Head and Tail are stored | |||
31 | 31 | ||
32 | #include "plugin.h" | 32 | #include "plugin.h" |
33 | #ifdef HAVE_LCD_BITMAP | 33 | #ifdef HAVE_LCD_BITMAP |
34 | #include "lib/highscore.h" | ||
35 | #include "lib/playback_control.h" | ||
34 | 36 | ||
35 | PLUGIN_HEADER | 37 | PLUGIN_HEADER |
36 | 38 | ||
37 | #define WIDTH 28 | 39 | #define WIDTH 28 |
38 | #define HEIGHT 16 | 40 | #define HEIGHT 16 |
39 | 41 | ||
40 | #if (LCD_WIDTH >= 160) && (LCD_HEIGHT >= 128) && (LCD_DEPTH >= 1) | 42 | #if (LCD_WIDTH >= 160) && (LCD_HEIGHT >= 128) |
41 | #include "pluginbitmaps/snake2_header1.h" | 43 | #include "pluginbitmaps/snake2_header1.h" |
42 | #include "pluginbitmaps/snake2_header2.h" | 44 | #include "pluginbitmaps/snake2_header2.h" |
43 | #include "pluginbitmaps/snake2_left.h" | 45 | #include "pluginbitmaps/snake2_left.h" |
@@ -135,11 +137,6 @@ PLUGIN_HEADER | |||
135 | #define SNAKE2_UP BUTTON_UP | 137 | #define SNAKE2_UP BUTTON_UP |
136 | #define SNAKE2_DOWN BUTTON_DOWN | 138 | #define SNAKE2_DOWN BUTTON_DOWN |
137 | #define SNAKE2_QUIT BUTTON_OFF | 139 | #define SNAKE2_QUIT BUTTON_OFF |
138 | #define SNAKE2_LEVEL_UP BUTTON_UP | ||
139 | #define SNAKE2_LEVEL_DOWN BUTTON_DOWN | ||
140 | #define SNAKE2_MAZE_NEXT BUTTON_RIGHT | ||
141 | #define SNAKE2_MAZE_LAST BUTTON_LEFT | ||
142 | #define SNAKE2_SELECT_TYPE BUTTON_F3 | ||
143 | #define SNAKE2_PLAYPAUSE BUTTON_PLAY | 140 | #define SNAKE2_PLAYPAUSE BUTTON_PLAY |
144 | #define SNAKE2_PLAYPAUSE_TEXT "Play" | 141 | #define SNAKE2_PLAYPAUSE_TEXT "Play" |
145 | 142 | ||
@@ -149,11 +146,6 @@ PLUGIN_HEADER | |||
149 | #define SNAKE2_UP BUTTON_UP | 146 | #define SNAKE2_UP BUTTON_UP |
150 | #define SNAKE2_DOWN BUTTON_DOWN | 147 | #define SNAKE2_DOWN BUTTON_DOWN |
151 | #define SNAKE2_QUIT BUTTON_OFF | 148 | #define SNAKE2_QUIT BUTTON_OFF |
152 | #define SNAKE2_LEVEL_UP BUTTON_UP | ||
153 | #define SNAKE2_LEVEL_DOWN BUTTON_DOWN | ||
154 | #define SNAKE2_MAZE_NEXT BUTTON_RIGHT | ||
155 | #define SNAKE2_MAZE_LAST BUTTON_LEFT | ||
156 | #define SNAKE2_SELECT_TYPE BUTTON_F3 | ||
157 | #define SNAKE2_PLAYPAUSE BUTTON_SELECT | 149 | #define SNAKE2_PLAYPAUSE BUTTON_SELECT |
158 | #define SNAKE2_PLAYPAUSE_TEXT "Select" | 150 | #define SNAKE2_PLAYPAUSE_TEXT "Select" |
159 | 151 | ||
@@ -163,10 +155,6 @@ PLUGIN_HEADER | |||
163 | #define SNAKE2_UP BUTTON_UP | 155 | #define SNAKE2_UP BUTTON_UP |
164 | #define SNAKE2_DOWN BUTTON_DOWN | 156 | #define SNAKE2_DOWN BUTTON_DOWN |
165 | #define SNAKE2_QUIT BUTTON_OFF | 157 | #define SNAKE2_QUIT BUTTON_OFF |
166 | #define SNAKE2_LEVEL_UP BUTTON_UP | ||
167 | #define SNAKE2_LEVEL_DOWN BUTTON_DOWN | ||
168 | #define SNAKE2_MAZE_NEXT BUTTON_RIGHT | ||
169 | #define SNAKE2_SELECT_TYPE BUTTON_LEFT | ||
170 | #define SNAKE2_PLAYPAUSE BUTTON_MENU | 158 | #define SNAKE2_PLAYPAUSE BUTTON_MENU |
171 | #define SNAKE2_PLAYPAUSE_TEXT "Menu" | 159 | #define SNAKE2_PLAYPAUSE_TEXT "Menu" |
172 | 160 | ||
@@ -177,15 +165,11 @@ PLUGIN_HEADER | |||
177 | #define SNAKE2_UP BUTTON_UP | 165 | #define SNAKE2_UP BUTTON_UP |
178 | #define SNAKE2_DOWN BUTTON_DOWN | 166 | #define SNAKE2_DOWN BUTTON_DOWN |
179 | #define SNAKE2_QUIT BUTTON_OFF | 167 | #define SNAKE2_QUIT BUTTON_OFF |
180 | #define SNAKE2_LEVEL_UP BUTTON_UP | ||
181 | #define SNAKE2_LEVEL_DOWN BUTTON_DOWN | ||
182 | #define SNAKE2_MAZE_NEXT BUTTON_RIGHT | ||
183 | #define SNAKE2_MAZE_LAST BUTTON_LEFT | ||
184 | #define SNAKE2_SELECT_TYPE BUTTON_MODE | ||
185 | #define SNAKE2_PLAYPAUSE BUTTON_ON | 168 | #define SNAKE2_PLAYPAUSE BUTTON_ON |
186 | #define SNAKE2_PLAYPAUSE_TEXT "Play" | 169 | #define SNAKE2_PLAYPAUSE_TEXT "Play" |
187 | 170 | ||
188 | #define SNAKE2_RC_QUIT BUTTON_RC_STOP | 171 | #define SNAKE2_RC_QUIT BUTTON_RC_STOP |
172 | |||
189 | #elif (CONFIG_KEYPAD == IPOD_4G_PAD) || \ | 173 | #elif (CONFIG_KEYPAD == IPOD_4G_PAD) || \ |
190 | (CONFIG_KEYPAD == IPOD_3G_PAD) || \ | 174 | (CONFIG_KEYPAD == IPOD_3G_PAD) || \ |
191 | (CONFIG_KEYPAD == IPOD_1G2G_PAD) | 175 | (CONFIG_KEYPAD == IPOD_1G2G_PAD) |
@@ -194,11 +178,6 @@ PLUGIN_HEADER | |||
194 | #define SNAKE2_UP BUTTON_MENU | 178 | #define SNAKE2_UP BUTTON_MENU |
195 | #define SNAKE2_DOWN BUTTON_PLAY | 179 | #define SNAKE2_DOWN BUTTON_PLAY |
196 | #define SNAKE2_QUIT (BUTTON_SELECT | BUTTON_MENU) | 180 | #define SNAKE2_QUIT (BUTTON_SELECT | BUTTON_MENU) |
197 | #define SNAKE2_LEVEL_UP BUTTON_SCROLL_FWD | ||
198 | #define SNAKE2_LEVEL_DOWN BUTTON_SCROLL_BACK | ||
199 | #define SNAKE2_MAZE_NEXT BUTTON_RIGHT | ||
200 | #define SNAKE2_MAZE_LAST BUTTON_LEFT | ||
201 | #define SNAKE2_SELECT_TYPE BUTTON_PLAY | ||
202 | #define SNAKE2_PLAYPAUSE BUTTON_SELECT | 181 | #define SNAKE2_PLAYPAUSE BUTTON_SELECT |
203 | #define SNAKE2_PLAYPAUSE_TEXT "Select" | 182 | #define SNAKE2_PLAYPAUSE_TEXT "Select" |
204 | 183 | ||
@@ -208,11 +187,6 @@ PLUGIN_HEADER | |||
208 | #define SNAKE2_UP BUTTON_UP | 187 | #define SNAKE2_UP BUTTON_UP |
209 | #define SNAKE2_DOWN BUTTON_DOWN | 188 | #define SNAKE2_DOWN BUTTON_DOWN |
210 | #define SNAKE2_QUIT BUTTON_POWER | 189 | #define SNAKE2_QUIT BUTTON_POWER |
211 | #define SNAKE2_LEVEL_UP BUTTON_UP | ||
212 | #define SNAKE2_LEVEL_DOWN BUTTON_DOWN | ||
213 | #define SNAKE2_MAZE_NEXT BUTTON_RIGHT | ||
214 | #define SNAKE2_MAZE_LAST BUTTON_LEFT | ||
215 | #define SNAKE2_SELECT_TYPE BUTTON_PLAY | ||
216 | #define SNAKE2_PLAYPAUSE BUTTON_SELECT | 190 | #define SNAKE2_PLAYPAUSE BUTTON_SELECT |
217 | #define SNAKE2_PLAYPAUSE_TEXT "Select" | 191 | #define SNAKE2_PLAYPAUSE_TEXT "Select" |
218 | 192 | ||
@@ -222,11 +196,6 @@ PLUGIN_HEADER | |||
222 | #define SNAKE2_UP BUTTON_UP | 196 | #define SNAKE2_UP BUTTON_UP |
223 | #define SNAKE2_DOWN BUTTON_DOWN | 197 | #define SNAKE2_DOWN BUTTON_DOWN |
224 | #define SNAKE2_QUIT BUTTON_POWER | 198 | #define SNAKE2_QUIT BUTTON_POWER |
225 | #define SNAKE2_LEVEL_UP BUTTON_UP | ||
226 | #define SNAKE2_LEVEL_DOWN BUTTON_DOWN | ||
227 | #define SNAKE2_MAZE_NEXT BUTTON_RIGHT | ||
228 | #define SNAKE2_MAZE_LAST BUTTON_LEFT | ||
229 | #define SNAKE2_SELECT_TYPE BUTTON_MENU | ||
230 | #define SNAKE2_PLAYPAUSE BUTTON_SELECT | 199 | #define SNAKE2_PLAYPAUSE BUTTON_SELECT |
231 | #define SNAKE2_PLAYPAUSE_TEXT "Select" | 200 | #define SNAKE2_PLAYPAUSE_TEXT "Select" |
232 | 201 | ||
@@ -237,11 +206,6 @@ PLUGIN_HEADER | |||
237 | #define SNAKE2_UP BUTTON_UP | 206 | #define SNAKE2_UP BUTTON_UP |
238 | #define SNAKE2_DOWN BUTTON_DOWN | 207 | #define SNAKE2_DOWN BUTTON_DOWN |
239 | #define SNAKE2_QUIT BUTTON_POWER | 208 | #define SNAKE2_QUIT BUTTON_POWER |
240 | #define SNAKE2_LEVEL_UP BUTTON_UP | ||
241 | #define SNAKE2_LEVEL_DOWN BUTTON_DOWN | ||
242 | #define SNAKE2_MAZE_NEXT BUTTON_RIGHT | ||
243 | #define SNAKE2_MAZE_LAST BUTTON_LEFT | ||
244 | #define SNAKE2_SELECT_TYPE BUTTON_REC | ||
245 | #define SNAKE2_PLAYPAUSE BUTTON_SELECT | 209 | #define SNAKE2_PLAYPAUSE BUTTON_SELECT |
246 | #define SNAKE2_PLAYPAUSE_TEXT "Select" | 210 | #define SNAKE2_PLAYPAUSE_TEXT "Select" |
247 | 211 | ||
@@ -252,11 +216,6 @@ PLUGIN_HEADER | |||
252 | #define SNAKE2_UP BUTTON_UP | 216 | #define SNAKE2_UP BUTTON_UP |
253 | #define SNAKE2_DOWN BUTTON_DOWN | 217 | #define SNAKE2_DOWN BUTTON_DOWN |
254 | #define SNAKE2_QUIT BUTTON_POWER | 218 | #define SNAKE2_QUIT BUTTON_POWER |
255 | #define SNAKE2_LEVEL_UP BUTTON_UP | ||
256 | #define SNAKE2_LEVEL_DOWN BUTTON_DOWN | ||
257 | #define SNAKE2_MAZE_NEXT BUTTON_RIGHT | ||
258 | #define SNAKE2_MAZE_LAST BUTTON_LEFT | ||
259 | #define SNAKE2_SELECT_TYPE BUTTON_VOL_UP | ||
260 | #define SNAKE2_PLAYPAUSE BUTTON_SELECT | 219 | #define SNAKE2_PLAYPAUSE BUTTON_SELECT |
261 | #define SNAKE2_PLAYPAUSE_TEXT "Select" | 220 | #define SNAKE2_PLAYPAUSE_TEXT "Select" |
262 | 221 | ||
@@ -266,11 +225,6 @@ PLUGIN_HEADER | |||
266 | #define SNAKE2_UP BUTTON_UP | 225 | #define SNAKE2_UP BUTTON_UP |
267 | #define SNAKE2_DOWN BUTTON_DOWN | 226 | #define SNAKE2_DOWN BUTTON_DOWN |
268 | #define SNAKE2_QUIT (BUTTON_HOME|BUTTON_REPEAT) | 227 | #define SNAKE2_QUIT (BUTTON_HOME|BUTTON_REPEAT) |
269 | #define SNAKE2_LEVEL_UP BUTTON_UP | ||
270 | #define SNAKE2_LEVEL_DOWN BUTTON_DOWN | ||
271 | #define SNAKE2_MAZE_NEXT BUTTON_RIGHT | ||
272 | #define SNAKE2_MAZE_LAST BUTTON_LEFT | ||
273 | #define SNAKE2_SELECT_TYPE BUTTON_SELECT|BUTTON_REL | ||
274 | #define SNAKE2_PLAYPAUSE BUTTON_SELECT|BUTTON_REPEAT | 228 | #define SNAKE2_PLAYPAUSE BUTTON_SELECT|BUTTON_REPEAT |
275 | #define SNAKE2_PLAYPAUSE_TEXT "Hold Select" | 229 | #define SNAKE2_PLAYPAUSE_TEXT "Hold Select" |
276 | 230 | ||
@@ -280,11 +234,6 @@ PLUGIN_HEADER | |||
280 | #define SNAKE2_UP BUTTON_SCROLL_UP | 234 | #define SNAKE2_UP BUTTON_SCROLL_UP |
281 | #define SNAKE2_DOWN BUTTON_SCROLL_DOWN | 235 | #define SNAKE2_DOWN BUTTON_SCROLL_DOWN |
282 | #define SNAKE2_QUIT BUTTON_POWER | 236 | #define SNAKE2_QUIT BUTTON_POWER |
283 | #define SNAKE2_LEVEL_UP BUTTON_SCROLL_UP | ||
284 | #define SNAKE2_LEVEL_DOWN BUTTON_SCROLL_DOWN | ||
285 | #define SNAKE2_MAZE_NEXT BUTTON_RIGHT | ||
286 | #define SNAKE2_MAZE_LAST BUTTON_LEFT | ||
287 | #define SNAKE2_SELECT_TYPE BUTTON_PLAY | ||
288 | #define SNAKE2_PLAYPAUSE BUTTON_FF | 237 | #define SNAKE2_PLAYPAUSE BUTTON_FF |
289 | #define SNAKE2_PLAYPAUSE_TEXT "FF" | 238 | #define SNAKE2_PLAYPAUSE_TEXT "FF" |
290 | 239 | ||
@@ -294,11 +243,6 @@ PLUGIN_HEADER | |||
294 | #define SNAKE2_UP BUTTON_UP | 243 | #define SNAKE2_UP BUTTON_UP |
295 | #define SNAKE2_DOWN BUTTON_DOWN | 244 | #define SNAKE2_DOWN BUTTON_DOWN |
296 | #define SNAKE2_QUIT BUTTON_BACK | 245 | #define SNAKE2_QUIT BUTTON_BACK |
297 | #define SNAKE2_LEVEL_UP BUTTON_UP | ||
298 | #define SNAKE2_LEVEL_DOWN BUTTON_DOWN | ||
299 | #define SNAKE2_MAZE_NEXT BUTTON_RIGHT | ||
300 | #define SNAKE2_MAZE_LAST BUTTON_LEFT | ||
301 | #define SNAKE2_SELECT_TYPE BUTTON_MENU | ||
302 | #define SNAKE2_PLAYPAUSE BUTTON_SELECT | 246 | #define SNAKE2_PLAYPAUSE BUTTON_SELECT |
303 | #define SNAKE2_PLAYPAUSE_TEXT "Select" | 247 | #define SNAKE2_PLAYPAUSE_TEXT "Select" |
304 | 248 | ||
@@ -308,11 +252,6 @@ PLUGIN_HEADER | |||
308 | #define SNAKE2_UP BUTTON_UP | 252 | #define SNAKE2_UP BUTTON_UP |
309 | #define SNAKE2_DOWN BUTTON_DOWN | 253 | #define SNAKE2_DOWN BUTTON_DOWN |
310 | #define SNAKE2_QUIT BUTTON_POWER | 254 | #define SNAKE2_QUIT BUTTON_POWER |
311 | #define SNAKE2_LEVEL_UP BUTTON_UP | ||
312 | #define SNAKE2_LEVEL_DOWN BUTTON_DOWN | ||
313 | #define SNAKE2_MAZE_NEXT BUTTON_RIGHT | ||
314 | #define SNAKE2_MAZE_LAST BUTTON_LEFT | ||
315 | #define SNAKE2_SELECT_TYPE BUTTON_MENU | ||
316 | #define SNAKE2_PLAYPAUSE BUTTON_SELECT | 255 | #define SNAKE2_PLAYPAUSE BUTTON_SELECT |
317 | #define SNAKE2_PLAYPAUSE_TEXT "Select" | 256 | #define SNAKE2_PLAYPAUSE_TEXT "Select" |
318 | 257 | ||
@@ -322,11 +261,6 @@ PLUGIN_HEADER | |||
322 | #define SNAKE2_UP BUTTON_RC_VOL_UP | 261 | #define SNAKE2_UP BUTTON_RC_VOL_UP |
323 | #define SNAKE2_DOWN BUTTON_RC_VOL_DOWN | 262 | #define SNAKE2_DOWN BUTTON_RC_VOL_DOWN |
324 | #define SNAKE2_QUIT BUTTON_RC_REC | 263 | #define SNAKE2_QUIT BUTTON_RC_REC |
325 | #define SNAKE2_LEVEL_UP BUTTON_RC_VOL_UP | ||
326 | #define SNAKE2_LEVEL_DOWN BUTTON_RC_VOL_DOWN | ||
327 | #define SNAKE2_MAZE_NEXT BUTTON_RC_FF | ||
328 | #define SNAKE2_MAZE_LAST BUTTON_RC_REW | ||
329 | #define SNAKE2_SELECT_TYPE BUTTON_RC_MODE | ||
330 | #define SNAKE2_PLAYPAUSE BUTTON_RC_PLAY | 264 | #define SNAKE2_PLAYPAUSE BUTTON_RC_PLAY |
331 | #define SNAKE2_PLAYPAUSE_TEXT "Play" | 265 | #define SNAKE2_PLAYPAUSE_TEXT "Play" |
332 | 266 | ||
@@ -339,11 +273,6 @@ PLUGIN_HEADER | |||
339 | #define SNAKE2_UP BUTTON_UP | 273 | #define SNAKE2_UP BUTTON_UP |
340 | #define SNAKE2_DOWN BUTTON_DOWN | 274 | #define SNAKE2_DOWN BUTTON_DOWN |
341 | #define SNAKE2_QUIT BUTTON_BACK | 275 | #define SNAKE2_QUIT BUTTON_BACK |
342 | #define SNAKE2_LEVEL_UP BUTTON_UP | ||
343 | #define SNAKE2_LEVEL_DOWN BUTTON_DOWN | ||
344 | #define SNAKE2_MAZE_NEXT BUTTON_RIGHT | ||
345 | #define SNAKE2_MAZE_LAST BUTTON_LEFT | ||
346 | #define SNAKE2_SELECT_TYPE BUTTON_MENU | ||
347 | #define SNAKE2_PLAYPAUSE BUTTON_PLAY | 276 | #define SNAKE2_PLAYPAUSE BUTTON_PLAY |
348 | #define SNAKE2_PLAYPAUSE_TEXT "Play" | 277 | #define SNAKE2_PLAYPAUSE_TEXT "Play" |
349 | 278 | ||
@@ -353,11 +282,6 @@ PLUGIN_HEADER | |||
353 | #define SNAKE2_UP BUTTON_UP | 282 | #define SNAKE2_UP BUTTON_UP |
354 | #define SNAKE2_DOWN BUTTON_DOWN | 283 | #define SNAKE2_DOWN BUTTON_DOWN |
355 | #define SNAKE2_QUIT BUTTON_POWER | 284 | #define SNAKE2_QUIT BUTTON_POWER |
356 | #define SNAKE2_LEVEL_UP BUTTON_UP | ||
357 | #define SNAKE2_LEVEL_DOWN BUTTON_DOWN | ||
358 | #define SNAKE2_MAZE_NEXT BUTTON_RIGHT | ||
359 | #define SNAKE2_MAZE_LAST BUTTON_LEFT | ||
360 | #define SNAKE2_SELECT_TYPE BUTTON_MENU | ||
361 | #define SNAKE2_PLAYPAUSE BUTTON_VIEW | 285 | #define SNAKE2_PLAYPAUSE BUTTON_VIEW |
362 | #define SNAKE2_PLAYPAUSE_TEXT "View" | 286 | #define SNAKE2_PLAYPAUSE_TEXT "View" |
363 | 287 | ||
@@ -370,13 +294,8 @@ PLUGIN_HEADER | |||
370 | #define SNAKE2_UP BUTTON_UP | 294 | #define SNAKE2_UP BUTTON_UP |
371 | #define SNAKE2_DOWN BUTTON_DOWN | 295 | #define SNAKE2_DOWN BUTTON_DOWN |
372 | #define SNAKE2_QUIT BUTTON_REC | 296 | #define SNAKE2_QUIT BUTTON_REC |
373 | #define SNAKE2_LEVEL_UP (BUTTON_FFWD|BUTTON_UP) | 297 | #define SNAKE2_PLAYPAUSE BUTTON_PLAY |
374 | #define SNAKE2_LEVEL_DOWN (BUTTON_FFWD|BUTTON_DOWN) | 298 | #define SNAKE2_PLAYPAUSE_TEXT "Play" |
375 | #define SNAKE2_MAZE_NEXT (BUTTON_REW|BUTTON_RIGHT) | ||
376 | #define SNAKE2_MAZE_LAST (BUTTON_REW|BUTTON_LEFT) | ||
377 | #define SNAKE2_SELECT_TYPE (BUTTON_PLAY|BUTTON_LEFT) | ||
378 | #define SNAKE2_PLAYPAUSE (BUTTON_PLAY|BUTTON_RIGHT) | ||
379 | #define SNAKE2_PLAYPAUSE_TEXT "Play + Right" | ||
380 | 299 | ||
381 | #else | 300 | #else |
382 | #error No keymap defined! | 301 | #error No keymap defined! |
@@ -398,24 +317,6 @@ PLUGIN_HEADER | |||
398 | #ifndef SNAKE2_QUIT | 317 | #ifndef SNAKE2_QUIT |
399 | #define SNAKE2_QUIT BUTTON_TOPLEFT | 318 | #define SNAKE2_QUIT BUTTON_TOPLEFT |
400 | #endif | 319 | #endif |
401 | #ifndef SNAKE2_LEVEL_UP | ||
402 | #define SNAKE2_LEVEL_UP BUTTON_TOPRIGHT | ||
403 | #endif | ||
404 | #ifndef SNAKE2_LEVEL_DOWN | ||
405 | #define SNAKE2_LEVEL_DOWN BUTTON_TOPLEFT | ||
406 | #endif | ||
407 | #ifndef SNAKE2_MAZE_NEXT | ||
408 | #define SNAKE2_MAZE_NEXT BUTTON_TOPMIDDLE | ||
409 | #endif | ||
410 | #ifndef SNAKE2_MAZE_LAST | ||
411 | #define SNAKE2_MAZE_LAST BUTTON_BOTTOMMIDDLE | ||
412 | #endif | ||
413 | #ifndef SNAKE2_SELECT_TYPE | ||
414 | #define SNAKE2_SELECT_TYPE BUTTON_BOTTOMLEFT | ||
415 | #endif | ||
416 | #ifndef SNAKE2_PLAYPAUSE | ||
417 | #define SNAKE2_PLAYPAUSE BUTTON_CENTER | ||
418 | #endif | ||
419 | #ifndef SNAKE2_PLAYPAUSE_TEXT | 320 | #ifndef SNAKE2_PLAYPAUSE_TEXT |
420 | #define SNAKE2_PLAYPAUSE_TEXT "CENTER" | 321 | #define SNAKE2_PLAYPAUSE_TEXT "CENTER" |
421 | #endif | 322 | #endif |
@@ -431,10 +332,9 @@ static int board[WIDTH][HEIGHT]; | |||
431 | single frame | 332 | single frame |
432 | */ | 333 | */ |
433 | static int ardirectionbuffer[2]; | 334 | static int ardirectionbuffer[2]; |
434 | static unsigned int score, hiscore = 0; | 335 | static int score; |
435 | static int applex; | 336 | static int applex; |
436 | static int appley; | 337 | static int appley; |
437 | static int strwdt,strhgt; /*used for string width, height for orientation purposes*/ | ||
438 | static int dir; | 338 | static int dir; |
439 | static int frames; | 339 | static int frames; |
440 | static int apple; | 340 | static int apple; |
@@ -447,7 +347,12 @@ static int num_apples_to_get=1; | |||
447 | static int num_apples_to_got=0; | 347 | static int num_apples_to_got=0; |
448 | static int game_b_level=0; | 348 | static int game_b_level=0; |
449 | static int applecount=0; | 349 | static int applecount=0; |
450 | static char phscore[30]; | 350 | /* used for string width, height for orientation purposes */ |
351 | static int strwdt, strhgt; | ||
352 | static char strbuf[32]; | ||
353 | |||
354 | #define NUM_SCORES 5 | ||
355 | static struct highscore highscores[NUM_SCORES]; | ||
451 | 356 | ||
452 | #define NORTH 1 | 357 | #define NORTH 1 |
453 | #define EAST 2 | 358 | #define EAST 2 |
@@ -465,8 +370,8 @@ static char phscore[30]; | |||
465 | #define SOUTH_EAST 2048 | 370 | #define SOUTH_EAST 2048 |
466 | #define SOUTH_WEST 4096 | 371 | #define SOUTH_WEST 4096 |
467 | 372 | ||
468 | #define LEVELS_FILE PLUGIN_GAMES_DIR "/snake2.levels" | 373 | #define LEVELS_FILE PLUGIN_GAMES_DIR "/snake2.levels" |
469 | #define HISCORE_FILE PLUGIN_GAMES_DIR "/snake2.hs" | 374 | #define SCORE_FILE PLUGIN_GAMES_DIR "/snake2.score" |
470 | 375 | ||
471 | int load_all_levels(void) | 376 | int load_all_levels(void) |
472 | { | 377 | { |
@@ -489,7 +394,7 @@ int load_all_levels(void) | |||
489 | return -1; | 394 | return -1; |
490 | } | 395 | } |
491 | 396 | ||
492 | while(rb->read_line(fd, buf, 64)) | 397 | while(rb->read_line(fd, buf, 64) > 0) |
493 | { | 398 | { |
494 | if(rb->strlen(buf) == 0) /* Separator? */ | 399 | if(rb->strlen(buf) == 0) /* Separator? */ |
495 | { | 400 | { |
@@ -514,36 +419,9 @@ int load_all_levels(void) | |||
514 | return 0; | 419 | return 0; |
515 | } | 420 | } |
516 | 421 | ||
517 | /*Hi-Score reading and writing to file "/.rockbox/rocks/games/snake2.levels" function */ | ||
518 | void iohiscore(void) | ||
519 | { | ||
520 | int fd; | ||
521 | unsigned int compare; | ||
522 | |||
523 | /* clear the buffer we're about to load the highscore data into */ | ||
524 | rb->memset(phscore, 0, sizeof(phscore)); | ||
525 | |||
526 | fd = rb->open(HISCORE_FILE,O_RDWR | O_CREAT); | ||
527 | |||
528 | /* highscore used to %d, is now %d\n | ||
529 | Deal with no file or bad file */ | ||
530 | rb->read(fd,phscore, sizeof(phscore)); | ||
531 | |||
532 | compare = rb->atoi(phscore); | ||
533 | |||
534 | if(hiscore > compare){ | ||
535 | rb->lseek(fd,0,SEEK_SET); | ||
536 | rb->fdprintf(fd, "%d\n", hiscore); | ||
537 | } | ||
538 | else | ||
539 | hiscore = compare; | ||
540 | |||
541 | rb->close(fd); | ||
542 | |||
543 | } | ||
544 | |||
545 | /* | 422 | /* |
546 | ** Completely clear the board of walls and/or snake */ | 423 | ** Completely clear the board of walls and/or snake |
424 | */ | ||
547 | 425 | ||
548 | void clear_board( void) | 426 | void clear_board( void) |
549 | { | 427 | { |
@@ -853,6 +731,13 @@ void redraw (void) | |||
853 | { | 731 | { |
854 | int x,y; | 732 | int x,y; |
855 | 733 | ||
734 | #ifdef HAVE_LCD_COLOR | ||
735 | rb->lcd_set_foreground(LCD_BLACK); | ||
736 | rb->lcd_set_background(LCD_WHITE); | ||
737 | #endif | ||
738 | |||
739 | rb->lcd_clear_display(); | ||
740 | |||
856 | for (x = 0; x < WIDTH; x++) | 741 | for (x = 0; x < WIDTH; x++) |
857 | { | 742 | { |
858 | for (y = 0; y < HEIGHT; y++) | 743 | for (y = 0; y < HEIGHT; y++) |
@@ -977,7 +862,6 @@ void die (void) | |||
977 | { | 862 | { |
978 | int button; | 863 | int button; |
979 | bool done=false; | 864 | bool done=false; |
980 | char pscore[20]; | ||
981 | 865 | ||
982 | rb->splash(HZ*2, "Oops!"); | 866 | rb->splash(HZ*2, "Oops!"); |
983 | 867 | ||
@@ -988,26 +872,26 @@ void die (void) | |||
988 | rb->lcd_getstringsize("You died!",&strwdt,&strhgt); | 872 | rb->lcd_getstringsize("You died!",&strwdt,&strhgt); |
989 | rb->lcd_putsxy((LCD_WIDTH - strwdt)/2,strhgt,"You died!"); | 873 | rb->lcd_putsxy((LCD_WIDTH - strwdt)/2,strhgt,"You died!"); |
990 | 874 | ||
991 | rb->snprintf(pscore,sizeof(pscore),"Your score: %d",score); | 875 | rb->snprintf(strbuf, sizeof(strbuf), "Your score: %d", score); |
992 | rb->lcd_getstringsize(pscore,&strwdt,&strhgt); | 876 | rb->lcd_getstringsize(strbuf, &strwdt, &strhgt); |
993 | rb->lcd_putsxy((LCD_WIDTH - strwdt)/2,strhgt * 2 + 2,pscore); | 877 | rb->lcd_putsxy((LCD_WIDTH - strwdt)/2, strhgt * 2 + 2, strbuf); |
994 | 878 | ||
995 | if (score>hiscore) | 879 | if (highscore_update(score, level_from_file, game_type==0?"Type A":"Type B", |
880 | highscores, NUM_SCORES) == 0) | ||
996 | { | 881 | { |
997 | hiscore=score; | ||
998 | rb->lcd_getstringsize("New high score!",&strwdt,&strhgt); | 882 | rb->lcd_getstringsize("New high score!",&strwdt,&strhgt); |
999 | rb->lcd_putsxy((LCD_WIDTH - strwdt)/2,strhgt * 4 + 2,"New high score!"); | 883 | rb->lcd_putsxy((LCD_WIDTH - strwdt)/2,strhgt * 4 + 2,"New high score!"); |
1000 | } | 884 | } |
1001 | else | 885 | else |
1002 | { | 886 | { |
1003 | rb->snprintf(phscore,sizeof(phscore),"High score: %d",hiscore); | 887 | rb->snprintf(strbuf, sizeof(strbuf), "High score: %d", highscores[0].score); |
1004 | rb->lcd_getstringsize(phscore,&strwdt,&strhgt); | 888 | rb->lcd_getstringsize(strbuf, &strwdt, &strhgt); |
1005 | rb->lcd_putsxy((LCD_WIDTH - strwdt)/2,strhgt * 5,phscore); | 889 | rb->lcd_putsxy((LCD_WIDTH - strwdt)/2, strhgt * 5, strbuf); |
1006 | } | 890 | } |
1007 | 891 | ||
1008 | rb->snprintf(phscore,sizeof(phscore),"Press %s...",SNAKE2_PLAYPAUSE_TEXT); | 892 | rb->snprintf(strbuf, sizeof(strbuf), "Press %s...", SNAKE2_PLAYPAUSE_TEXT); |
1009 | rb->lcd_getstringsize(phscore,&strwdt,&strhgt); | 893 | rb->lcd_getstringsize(strbuf, &strwdt, &strhgt); |
1010 | rb->lcd_putsxy((LCD_WIDTH - strwdt)/2,strhgt * 7,phscore); | 894 | rb->lcd_putsxy((LCD_WIDTH - strwdt)/2, strhgt * 7, strbuf); |
1011 | 895 | ||
1012 | rb->lcd_update(); | 896 | rb->lcd_update(); |
1013 | 897 | ||
@@ -1060,9 +944,7 @@ void collision ( int x, int y ) | |||
1060 | game_b_level++; | 944 | game_b_level++; |
1061 | } | 945 | } |
1062 | rb->splash(HZ, "Level Completed!"); | 946 | rb->splash(HZ, "Level Completed!"); |
1063 | rb->lcd_clear_display(); | ||
1064 | new_level(level_from_file); | 947 | new_level(level_from_file); |
1065 | rb->lcd_clear_display(); | ||
1066 | redraw(); | 948 | redraw(); |
1067 | rb->lcd_update(); | 949 | rb->lcd_update(); |
1068 | } | 950 | } |
@@ -1237,19 +1119,18 @@ void game_pause (void) | |||
1237 | switch (button) | 1119 | switch (button) |
1238 | { | 1120 | { |
1239 | case SNAKE2_PLAYPAUSE: | 1121 | case SNAKE2_PLAYPAUSE: |
1240 | rb->lcd_clear_display(); | ||
1241 | redraw(); | 1122 | redraw(); |
1242 | rb->lcd_update(); | 1123 | rb->lcd_update(); |
1243 | rb->sleep(HZ/2); | 1124 | rb->sleep(HZ/2); |
1244 | return; | 1125 | return; |
1245 | 1126 | ||
1246 | #ifdef SNAKE2_RC_QUIT | 1127 | #ifdef SNAKE2_RC_QUIT |
1247 | case SNAKE2_RC_QUIT: | 1128 | case SNAKE2_RC_QUIT: |
1248 | #endif | 1129 | #endif |
1249 | case SNAKE2_QUIT: | 1130 | case SNAKE2_QUIT: |
1250 | dead = 1; | 1131 | dead = 1; |
1251 | quit = 1; | 1132 | quit = 1; |
1252 | return; | 1133 | return; |
1253 | 1134 | ||
1254 | default: | 1135 | default: |
1255 | if (rb->default_event_handler(button)==SYS_USB_CONNECTED) { | 1136 | if (rb->default_event_handler(button)==SYS_USB_CONNECTED) { |
@@ -1266,7 +1147,6 @@ void game (void) | |||
1266 | { | 1147 | { |
1267 | int button; | 1148 | int button; |
1268 | 1149 | ||
1269 | rb->lcd_clear_display(); | ||
1270 | redraw(); | 1150 | redraw(); |
1271 | rb->lcd_update(); | 1151 | rb->lcd_update(); |
1272 | /*main loop:*/ | 1152 | /*main loop:*/ |
@@ -1274,8 +1154,8 @@ void game (void) | |||
1274 | { | 1154 | { |
1275 | if(frames==5) | 1155 | if(frames==5) |
1276 | { | 1156 | { |
1277 | frame(); | 1157 | frame(); |
1278 | if(frames>0) frames=0; | 1158 | if(frames > 0) frames = 0; |
1279 | } | 1159 | } |
1280 | frames++; | 1160 | frames++; |
1281 | 1161 | ||
@@ -1305,66 +1185,59 @@ void game (void) | |||
1305 | 1185 | ||
1306 | #ifdef HAS_BUTTON_HOLD | 1186 | #ifdef HAS_BUTTON_HOLD |
1307 | if (rb->button_hold()) | 1187 | if (rb->button_hold()) |
1308 | button = SNAKE2_PLAYPAUSE; | 1188 | button = SNAKE2_PLAYPAUSE; |
1309 | #endif | 1189 | #endif |
1310 | 1190 | ||
1311 | switch (button) | 1191 | switch (button) |
1312 | { | 1192 | { |
1313 | case SNAKE2_UP: | 1193 | case SNAKE2_UP: |
1314 | case SNAKE2_UP | BUTTON_REPEAT: | 1194 | case SNAKE2_UP | BUTTON_REPEAT: |
1315 | if (dir != SOUTH) set_direction(NORTH); | 1195 | if (dir != SOUTH) set_direction(NORTH); |
1316 | break; | 1196 | break; |
1317 | 1197 | ||
1318 | case SNAKE2_RIGHT: | 1198 | case SNAKE2_RIGHT: |
1319 | case SNAKE2_RIGHT | BUTTON_REPEAT: | 1199 | case SNAKE2_RIGHT | BUTTON_REPEAT: |
1320 | if (dir != WEST) set_direction(EAST); | 1200 | if (dir != WEST) set_direction(EAST); |
1321 | break; | 1201 | break; |
1322 | 1202 | ||
1323 | case SNAKE2_DOWN: | 1203 | case SNAKE2_DOWN: |
1324 | case SNAKE2_DOWN | BUTTON_REPEAT: | 1204 | case SNAKE2_DOWN | BUTTON_REPEAT: |
1325 | if (dir != NORTH) set_direction(SOUTH); | 1205 | if (dir != NORTH) set_direction(SOUTH); |
1326 | break; | 1206 | break; |
1327 | 1207 | ||
1328 | case SNAKE2_LEFT: | 1208 | case SNAKE2_LEFT: |
1329 | case SNAKE2_LEFT | BUTTON_REPEAT: | 1209 | case SNAKE2_LEFT | BUTTON_REPEAT: |
1330 | if (dir != EAST) set_direction(WEST); | 1210 | if (dir != EAST) set_direction(WEST); |
1331 | break; | 1211 | break; |
1332 | 1212 | ||
1333 | #ifdef SNAKE2_RC_QUIT | 1213 | #ifdef SNAKE2_RC_QUIT |
1334 | case SNAKE2_RC_QUIT: | 1214 | case SNAKE2_RC_QUIT: |
1335 | #endif | 1215 | #endif |
1336 | case SNAKE2_QUIT: | 1216 | case SNAKE2_QUIT: |
1337 | dead=1; | 1217 | dead=1; |
1338 | return; | 1218 | return; |
1339 | 1219 | ||
1340 | case SNAKE2_PLAYPAUSE: | 1220 | case SNAKE2_PLAYPAUSE: |
1341 | game_pause(); | 1221 | game_pause(); |
1342 | break; | 1222 | break; |
1343 | 1223 | ||
1344 | default: | 1224 | default: |
1345 | if (rb->default_event_handler(button)==SYS_USB_CONNECTED) { | 1225 | if (rb->default_event_handler(button)==SYS_USB_CONNECTED) { |
1346 | quit = 2; | 1226 | quit = 2; |
1347 | return; | 1227 | return; |
1348 | } | 1228 | } |
1349 | break; | 1229 | break; |
1350 | } | 1230 | } |
1351 | } | 1231 | } |
1352 | 1232 | ||
1353 | } | 1233 | } |
1354 | 1234 | ||
1355 | void game_init(void) | 1235 | void select_maze(void) |
1356 | { | 1236 | { |
1357 | int button; | 1237 | int button; |
1358 | char plevel[30]; | ||
1359 | |||
1360 | dead=0; | ||
1361 | apple=0; | ||
1362 | score=0; | ||
1363 | applecount=0; | ||
1364 | 1238 | ||
1365 | clear_board(); | 1239 | clear_board(); |
1366 | load_level( level_from_file ); | 1240 | load_level( level_from_file ); |
1367 | rb->lcd_clear_display(); | ||
1368 | redraw(); | 1241 | redraw(); |
1369 | rb->lcd_update(); | 1242 | rb->lcd_update(); |
1370 | 1243 | ||
@@ -1377,81 +1250,40 @@ void game_init(void) | |||
1377 | rb->lcd_bitmap(snake2_right,LCD_WIDTH-BMPWIDTH_snake2_right,BMPHEIGHT_snake2_header,BMPWIDTH_snake2_right, BMPHEIGHT_snake2_right); | 1250 | rb->lcd_bitmap(snake2_right,LCD_WIDTH-BMPWIDTH_snake2_right,BMPHEIGHT_snake2_header,BMPWIDTH_snake2_right, BMPHEIGHT_snake2_right); |
1378 | rb->lcd_bitmap(snake2_bottom,0,BMPHEIGHT_snake2_header+BMPHEIGHT_snake2_left,BMPWIDTH_snake2_bottom, BMPHEIGHT_snake2_bottom); | 1251 | rb->lcd_bitmap(snake2_bottom,0,BMPHEIGHT_snake2_header+BMPHEIGHT_snake2_left,BMPWIDTH_snake2_bottom, BMPHEIGHT_snake2_bottom); |
1379 | 1252 | ||
1380 | rb->snprintf(plevel,sizeof(plevel),"%d",level); | 1253 | rb->snprintf(strbuf, sizeof(strbuf), "%d", level); |
1381 | rb->lcd_getstringsize(plevel,&strwdt,&strhgt); | 1254 | rb->lcd_getstringsize(strbuf, &strwdt, &strhgt); |
1382 | rb->lcd_putsxy(TOP_X3-strwdt/2,TOP_Y2, plevel); | 1255 | rb->lcd_putsxy(TOP_X3 - strwdt/2, TOP_Y2, strbuf); |
1383 | |||
1384 | rb->snprintf(plevel,sizeof(plevel),"%d",level_from_file); | ||
1385 | rb->lcd_getstringsize(plevel,&strwdt,&strhgt); | ||
1386 | rb->lcd_putsxy(TOP_X2-strwdt/2,TOP_Y1, plevel); | ||
1387 | |||
1388 | if(game_type==0){ | ||
1389 | rb->lcd_getstringsize("A",&strwdt,&strhgt); | ||
1390 | rb->lcd_putsxy(TOP_X1,TOP_Y1,"A"); | ||
1391 | } | ||
1392 | else{ | ||
1393 | rb->lcd_getstringsize("B",&strwdt,&strhgt); | ||
1394 | rb->lcd_putsxy(TOP_X1,TOP_Y1,"B"); | ||
1395 | } | ||
1396 | |||
1397 | rb->snprintf(phscore,sizeof(phscore),"%d",hiscore); | ||
1398 | rb->lcd_getstringsize(phscore,&strwdt,&strhgt); | ||
1399 | rb->lcd_putsxy(TOP_X4-strwdt/2,TOP_Y2, phscore); | ||
1400 | 1256 | ||
1401 | #else | 1257 | rb->snprintf(strbuf, sizeof(strbuf), "%d", level_from_file); |
1402 | rb->snprintf(plevel,sizeof(plevel),"Speed: %02d",level); | 1258 | rb->lcd_getstringsize(strbuf, &strwdt, &strhgt); |
1403 | rb->lcd_getstringsize("Speed: 00",&strwdt,&strhgt); | 1259 | rb->lcd_putsxy(TOP_X2 - strwdt/2, TOP_Y1, strbuf); |
1404 | rb->lcd_putsxy((LCD_WIDTH - strwdt)/2,strhgt+4, plevel); | ||
1405 | 1260 | ||
1406 | rb->snprintf(plevel,sizeof(plevel),"Maze: %d",level_from_file); | 1261 | rb->strcpy(strbuf, game_type==0? "A": "B"); |
1407 | rb->lcd_getstringsize(plevel,&strwdt,&strhgt); | 1262 | rb->lcd_getstringsize(strbuf, &strwdt, &strhgt); |
1408 | rb->lcd_putsxy((LCD_WIDTH - strwdt)/2,strhgt*2+4, plevel); | 1263 | rb->lcd_putsxy(TOP_X1, TOP_Y1, strbuf); |
1409 | 1264 | ||
1410 | if(game_type==0){ | 1265 | rb->snprintf(strbuf, sizeof(strbuf), "%d", highscores[0].score); |
1411 | rb->lcd_getstringsize("Game Type: A ",&strwdt,&strhgt); | 1266 | rb->lcd_getstringsize(strbuf, &strwdt, &strhgt); |
1412 | rb->lcd_putsxy((LCD_WIDTH - strwdt)/2,strhgt*3+4,"Game Type: A"); | 1267 | rb->lcd_putsxy(TOP_X4 - strwdt/2, TOP_Y2, strbuf); |
1413 | } | ||
1414 | else{ | ||
1415 | rb->lcd_getstringsize("Game Type: B ",&strwdt,&strhgt); | ||
1416 | rb->lcd_putsxy((LCD_WIDTH - strwdt)/2,strhgt*3+4,"Game Type: B"); | ||
1417 | } | ||
1418 | 1268 | ||
1419 | rb->snprintf(phscore,sizeof(phscore),"Hi Score: %d",hiscore); | 1269 | #else |
1420 | rb->lcd_getstringsize(phscore,&strwdt,&strhgt); | 1270 | rb->snprintf(strbuf, sizeof(strbuf), "Maze: %d", level_from_file); |
1421 | rb->lcd_putsxy((LCD_WIDTH - strwdt)/2,strhgt*4+4, phscore); | 1271 | rb->lcd_getstringsize(strbuf, &strwdt, &strhgt); |
1272 | rb->lcd_putsxy((WIDTH*MULTIPLIER - strwdt)/2, | ||
1273 | (HEIGHT*MULTIPLIER - strhgt)/2, strbuf); | ||
1422 | #endif | 1274 | #endif |
1423 | 1275 | ||
1424 | rb->lcd_update(); | 1276 | rb->lcd_update(); |
1425 | 1277 | ||
1426 | button=rb->button_get(true); | 1278 | button = rb->button_get(true); |
1427 | switch (button) | 1279 | switch (button) |
1428 | { | 1280 | { |
1429 | case SNAKE2_LEVEL_UP: | ||
1430 | case SNAKE2_LEVEL_UP|BUTTON_REPEAT: | ||
1431 | if (level<10) | ||
1432 | level+=1; | ||
1433 | break; | ||
1434 | case SNAKE2_LEVEL_DOWN: | ||
1435 | case SNAKE2_LEVEL_DOWN|BUTTON_REPEAT: | ||
1436 | if (level>1) | ||
1437 | level-=1; | ||
1438 | break; | ||
1439 | case SNAKE2_QUIT: | 1281 | case SNAKE2_QUIT: |
1440 | quit=1; | ||
1441 | return; | ||
1442 | break; | ||
1443 | case SNAKE2_PLAYPAUSE: | 1282 | case SNAKE2_PLAYPAUSE: |
1444 | speed = level*20; | ||
1445 | return; | 1283 | return; |
1446 | break; | 1284 | break; |
1447 | case SNAKE2_SELECT_TYPE: | 1285 | case SNAKE2_UP: |
1448 | if(game_type==0)game_type=1; else game_type=0; | 1286 | case SNAKE2_RIGHT: |
1449 | break; | ||
1450 | case SNAKE2_MAZE_NEXT: | ||
1451 | rb->lcd_set_drawmode(DRMODE_BG|DRMODE_INVERSEVID); | ||
1452 | rb->lcd_fillrect(CENTER_X, CENTER_Y, CENTER_X+WIDTH*MULTIPLIER, | ||
1453 | CENTER_Y+HEIGHT*MULTIPLIER); | ||
1454 | rb->lcd_set_drawmode(DRMODE_SOLID); | ||
1455 | if(level_from_file < num_levels) | 1287 | if(level_from_file < num_levels) |
1456 | level_from_file++; | 1288 | level_from_file++; |
1457 | else | 1289 | else |
@@ -1459,12 +1291,8 @@ void game_init(void) | |||
1459 | load_level( level_from_file ); | 1291 | load_level( level_from_file ); |
1460 | redraw(); | 1292 | redraw(); |
1461 | break; | 1293 | break; |
1462 | #ifdef SNAKE2_MAZE_LAST | 1294 | case SNAKE2_DOWN: |
1463 | case SNAKE2_MAZE_LAST: | 1295 | case SNAKE2_LEFT: |
1464 | rb->lcd_set_drawmode(DRMODE_BG|DRMODE_INVERSEVID); | ||
1465 | rb->lcd_fillrect(CENTER_X, CENTER_Y, CENTER_X+WIDTH*MULTIPLIER, | ||
1466 | CENTER_Y+HEIGHT*MULTIPLIER); | ||
1467 | rb->lcd_set_drawmode(DRMODE_SOLID); | ||
1468 | if(level_from_file > 0) | 1296 | if(level_from_file > 0) |
1469 | level_from_file--; | 1297 | level_from_file--; |
1470 | else | 1298 | else |
@@ -1472,7 +1300,6 @@ void game_init(void) | |||
1472 | load_level( level_from_file ); | 1300 | load_level( level_from_file ); |
1473 | redraw(); | 1301 | redraw(); |
1474 | break; | 1302 | break; |
1475 | #endif | ||
1476 | default: | 1303 | default: |
1477 | if (rb->default_event_handler(button)==SYS_USB_CONNECTED) { | 1304 | if (rb->default_event_handler(button)==SYS_USB_CONNECTED) { |
1478 | quit = 2; | 1305 | quit = 2; |
@@ -1484,6 +1311,63 @@ void game_init(void) | |||
1484 | 1311 | ||
1485 | } | 1312 | } |
1486 | 1313 | ||
1314 | void game_init(void) | ||
1315 | { | ||
1316 | int selection = 0; | ||
1317 | |||
1318 | static const struct opt_items type_options[] = { | ||
1319 | { "Type A", -1 }, | ||
1320 | { "Type B", -1 }, | ||
1321 | }; | ||
1322 | |||
1323 | MENUITEM_STRINGLIST(menu, "Snake2 Menu", NULL, | ||
1324 | "Start New Game", | ||
1325 | "Game Type", "Select Maze", "Speed", | ||
1326 | "High Scores", | ||
1327 | "Playback Control", "Quit"); | ||
1328 | |||
1329 | rb->button_clear_queue(); | ||
1330 | |||
1331 | dead = 0; | ||
1332 | apple = 0; | ||
1333 | score = 0; | ||
1334 | applecount = 0; | ||
1335 | |||
1336 | while (1) { | ||
1337 | switch (rb->do_menu(&menu, &selection, NULL, false)) { | ||
1338 | case 0: | ||
1339 | speed = level*20; | ||
1340 | return; | ||
1341 | case 1: | ||
1342 | rb->set_option("Game Type", &game_type, INT, | ||
1343 | type_options, 2, NULL); | ||
1344 | break; | ||
1345 | case 2: | ||
1346 | select_maze(); | ||
1347 | if(quit) return; | ||
1348 | break; | ||
1349 | case 3: | ||
1350 | rb->set_int("Speed", "", UNIT_INT, &level, | ||
1351 | NULL, 1, 1, 10, NULL); | ||
1352 | break; | ||
1353 | case 4: | ||
1354 | highscore_show(NUM_SCORES, highscores, NUM_SCORES, true); | ||
1355 | break; | ||
1356 | case 5: | ||
1357 | playback_control(NULL); | ||
1358 | break; | ||
1359 | case 6: | ||
1360 | quit = 1; | ||
1361 | return; | ||
1362 | case MENU_ATTACHED_USB: | ||
1363 | quit = 2; | ||
1364 | return; | ||
1365 | default: | ||
1366 | break; | ||
1367 | } | ||
1368 | } | ||
1369 | } | ||
1370 | |||
1487 | enum plugin_status plugin_start(const void* parameter) | 1371 | enum plugin_status plugin_start(const void* parameter) |
1488 | { | 1372 | { |
1489 | (void)(parameter); | 1373 | (void)(parameter); |
@@ -1493,10 +1377,6 @@ enum plugin_status plugin_start(const void* parameter) | |||
1493 | #if LCD_DEPTH > 1 | 1377 | #if LCD_DEPTH > 1 |
1494 | rb->lcd_set_backdrop(NULL); | 1378 | rb->lcd_set_backdrop(NULL); |
1495 | #endif | 1379 | #endif |
1496 | #ifdef HAVE_LCD_COLOR | ||
1497 | rb->lcd_set_foreground(LCD_BLACK); | ||
1498 | rb->lcd_set_background(LCD_WHITE); | ||
1499 | #endif | ||
1500 | 1380 | ||
1501 | load_all_levels(); | 1381 | load_all_levels(); |
1502 | 1382 | ||
@@ -1505,24 +1385,25 @@ enum plugin_status plugin_start(const void* parameter) | |||
1505 | return PLUGIN_OK; | 1385 | return PLUGIN_OK; |
1506 | } | 1386 | } |
1507 | 1387 | ||
1508 | iohiscore(); | 1388 | highscore_load(SCORE_FILE, highscores, NUM_SCORES); |
1509 | 1389 | ||
1510 | while(quit==0) | 1390 | while(quit==0) |
1511 | { | 1391 | { |
1512 | game_init(); | 1392 | game_init(); |
1513 | rb->lcd_clear_display(); | 1393 | if(quit) |
1514 | frames=1; | 1394 | break; |
1395 | |||
1396 | rb->lcd_clear_display(); | ||
1397 | frames=1; | ||
1515 | 1398 | ||
1516 | if(quit==0) | 1399 | init_snake(); |
1517 | { | ||
1518 | init_snake(); | ||
1519 | 1400 | ||
1520 | /*Start Game:*/ | 1401 | /*Start Game:*/ |
1521 | game(); | 1402 | game(); |
1522 | } | ||
1523 | } | 1403 | } |
1524 | 1404 | ||
1525 | iohiscore(); | 1405 | highscore_save(SCORE_FILE, highscores, NUM_SCORES); |
1406 | |||
1526 | return (quit==1) ? PLUGIN_OK : PLUGIN_USB_CONNECTED; | 1407 | return (quit==1) ? PLUGIN_OK : PLUGIN_USB_CONNECTED; |
1527 | } | 1408 | } |
1528 | 1409 | ||