diff options
Diffstat (limited to 'apps/plugins/sliding_puzzle.c')
-rw-r--r-- | apps/plugins/sliding_puzzle.c | 48 |
1 files changed, 41 insertions, 7 deletions
diff --git a/apps/plugins/sliding_puzzle.c b/apps/plugins/sliding_puzzle.c index 423ab7fcf1..789e8789e8 100644 --- a/apps/plugins/sliding_puzzle.c +++ b/apps/plugins/sliding_puzzle.c | |||
@@ -19,6 +19,20 @@ | |||
19 | #include "plugin.h" | 19 | #include "plugin.h" |
20 | #ifdef HAVE_LCD_BITMAP | 20 | #ifdef HAVE_LCD_BITMAP |
21 | 21 | ||
22 | /* variable button definitions */ | ||
23 | #if CONFIG_KEYPAD == RECORDER_PAD | ||
24 | #define PUZZLE_QUIT BUTTON_OFF | ||
25 | #define PUZZLE_SHUFFLE BUTTON_F1 | ||
26 | #define PUZZLE_PICTURE BUTTON_F2 | ||
27 | |||
28 | #elif CONFIG_KEYPAD == ONDIO_PAD | ||
29 | #define PUZZLE_QUIT BUTTON_OFF | ||
30 | #define PUZZLE_SHUFFLE_PICTURE_PRE BUTTON_MENU | ||
31 | #define PUZZLE_SHUFFLE (BUTTON_MENU | BUTTON_REPEAT) | ||
32 | #define PUZZLE_PICTURE (BUTTON_MENU | BUTTON_REL) | ||
33 | |||
34 | #endif | ||
35 | |||
22 | static struct plugin_api* rb; | 36 | static struct plugin_api* rb; |
23 | static int spots[20]; | 37 | static int spots[20]; |
24 | static int hole = 19, moves; | 38 | static int hole = 19, moves; |
@@ -232,20 +246,31 @@ static void puzzle_init(void) | |||
232 | /* the main game loop */ | 246 | /* the main game loop */ |
233 | static int puzzle_loop(void) | 247 | static int puzzle_loop(void) |
234 | { | 248 | { |
249 | int button; | ||
250 | int lastbutton = BUTTON_NONE; | ||
235 | int i; | 251 | int i; |
236 | puzzle_init(); | 252 | puzzle_init(); |
237 | while(true) { | 253 | while(true) { |
238 | switch (rb->button_get(true)) { | 254 | button = rb->button_get(true); |
239 | case BUTTON_OFF: | 255 | switch (button) { |
256 | case PUZZLE_QUIT: | ||
240 | /* get out of here */ | 257 | /* get out of here */ |
241 | return PLUGIN_OK; | 258 | return PLUGIN_OK; |
242 | 259 | ||
243 | case BUTTON_F1: | 260 | case PUZZLE_SHUFFLE: |
261 | #ifdef PUZZLE_SHUFFLE_PICTURE_PRE | ||
262 | if (lastbutton != PUZZLE_SHUFFLE_PICTURE_PRE) | ||
263 | break; | ||
264 | #endif | ||
244 | /* mix up the pieces */ | 265 | /* mix up the pieces */ |
245 | puzzle_init(); | 266 | puzzle_init(); |
246 | break; | 267 | break; |
247 | 268 | ||
248 | case BUTTON_F2: | 269 | case PUZZLE_PICTURE: |
270 | #ifdef PUZZLE_SHUFFLE_PICTURE_PRE | ||
271 | if (lastbutton != PUZZLE_SHUFFLE_PICTURE_PRE) | ||
272 | break; | ||
273 | #endif | ||
249 | /* change picture */ | 274 | /* change picture */ |
250 | pic = (pic==true?false:true); | 275 | pic = (pic==true?false:true); |
251 | for (i=0; i<20; i++) | 276 | for (i=0; i<20; i++) |
@@ -273,10 +298,13 @@ static int puzzle_loop(void) | |||
273 | move_spot(0, 1); | 298 | move_spot(0, 1); |
274 | break; | 299 | break; |
275 | 300 | ||
276 | case SYS_USB_CONNECTED: | 301 | default: |
277 | rb->usb_screen(); | 302 | if (rb->default_event_handler(button) == SYS_USB_CONNECTED) |
278 | return PLUGIN_USB_CONNECTED; | 303 | return PLUGIN_USB_CONNECTED; |
304 | break; | ||
279 | } | 305 | } |
306 | if (button != BUTTON_NONE) | ||
307 | lastbutton = button; | ||
280 | } | 308 | } |
281 | } | 309 | } |
282 | 310 | ||
@@ -300,9 +328,15 @@ enum plugin_status plugin_start(struct plugin_api* api, void* parameter) | |||
300 | /* print instructions */ | 328 | /* print instructions */ |
301 | rb->lcd_clear_display(); | 329 | rb->lcd_clear_display(); |
302 | rb->lcd_setfont(FONT_SYSFIXED); | 330 | rb->lcd_setfont(FONT_SYSFIXED); |
331 | #if CONFIG_KEYPAD == RECORDER_PAD | ||
303 | rb->lcd_putsxy(3, 18, "[OFF] to stop"); | 332 | rb->lcd_putsxy(3, 18, "[OFF] to stop"); |
304 | rb->lcd_putsxy(3, 28, "[F1] shuffle"); | 333 | rb->lcd_putsxy(3, 28, "[F1] shuffle"); |
305 | rb->lcd_putsxy(3, 38, "[F2] change pic"); | 334 | rb->lcd_putsxy(3, 38, "[F2] change pic"); |
335 | #elif CONFIG_KEYPAD == ONDIO_PAD | ||
336 | rb->lcd_putsxy(0, 18, "[OFF] to stop"); | ||
337 | rb->lcd_putsxy(0, 28, "[MENU..] shuffle"); | ||
338 | rb->lcd_putsxy(0, 38, "[MENU] change pic"); | ||
339 | #endif | ||
306 | rb->lcd_update(); | 340 | rb->lcd_update(); |
307 | rb->sleep(HZ*2); | 341 | rb->sleep(HZ*2); |
308 | 342 | ||