summaryrefslogtreecommitdiff
path: root/apps/plugins/bubbles.c
diff options
context:
space:
mode:
authorJonathan Gordon <rockbox@jdgordon.info>2006-11-16 02:53:44 +0000
committerJonathan Gordon <rockbox@jdgordon.info>2006-11-16 02:53:44 +0000
commit7b8b0ff49192007d791038cda2d3f44f004ff169 (patch)
tree6515041a44eb261160763a53cbdefd71a125d794 /apps/plugins/bubbles.c
parent407284818411f82419679d39686f5402596f3725 (diff)
downloadrockbox-7b8b0ff49192007d791038cda2d3f44f004ff169.tar.gz
rockbox-7b8b0ff49192007d791038cda2d3f44f004ff169.zip
implement actions in the plugins, bubbles and metronome converted.
(hopefully buttons are correct, let me know in http://forums.rockbox.org/index.php?topic=5829.0 if there is a major stuff up) git-svn-id: svn://svn.rockbox.org/rockbox/trunk@11535 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps/plugins/bubbles.c')
-rwxr-xr-xapps/plugins/bubbles.c145
1 files changed, 27 insertions, 118 deletions
diff --git a/apps/plugins/bubbles.c b/apps/plugins/bubbles.c
index 9ce6ee80c5..e5a094e053 100755
--- a/apps/plugins/bubbles.c
+++ b/apps/plugins/bubbles.c
@@ -21,6 +21,7 @@
21 21
22#include "plugin.h" 22#include "plugin.h"
23#include "xlcd.h" 23#include "xlcd.h"
24#include "pluginlib_actions.h"
24 25
25#ifdef HAVE_LCD_BITMAP 26#ifdef HAVE_LCD_BITMAP
26 27
@@ -53,93 +54,6 @@ PLUGIN_HEADER
53#define NUM_COMPRESS 9 54#define NUM_COMPRESS 9
54#define MAX_SHOTTIME 1000 55#define MAX_SHOTTIME 1000
55 56
56/* button definitions */
57#if (CONFIG_KEYPAD == IRIVER_H100_PAD) || (CONFIG_KEYPAD == IRIVER_H300_PAD)
58#define BUBBLES_LEFT BUTTON_LEFT
59#define BUBBLES_RIGHT BUTTON_RIGHT
60#define BUBBLES_UP BUTTON_UP
61#define BUBBLES_DOWN BUTTON_DOWN
62#define BUBBLES_QUIT BUTTON_OFF
63#define BUBBLES_START BUTTON_ON
64#define BUBBLES_SELECT BUTTON_SELECT
65#define BUBBLES_RESUME BUTTON_MODE
66
67#define BUBBLES_RC_QUIT BUTTON_RC_STOP
68
69#elif (CONFIG_KEYPAD == IPOD_3G_PAD) || (CONFIG_KEYPAD == IPOD_4G_PAD)
70#define BUBBLES_LEFT BUTTON_SCROLL_BACK
71#define BUBBLES_RIGHT BUTTON_SCROLL_FWD
72#define BUBBLES_UP BUTTON_SCROLL_FWD
73#define BUBBLES_DOWN BUTTON_SCROLL_BACK
74#define BUBBLES_QUIT BUTTON_MENU|BUTTON_REL
75#define BUBBLES_START BUTTON_PLAY|BUTTON_REL
76#define BUBBLES_SELECT BUTTON_SELECT
77#define BUBBLES_RESUME BUTTON_RIGHT|BUTTON_LEFT
78
79#elif CONFIG_KEYPAD == IAUDIO_X5_PAD
80#define BUBBLES_LEFT BUTTON_LEFT
81#define BUBBLES_RIGHT BUTTON_RIGHT
82#define BUBBLES_UP BUTTON_UP
83#define BUBBLES_DOWN BUTTON_DOWN
84#define BUBBLES_QUIT BUTTON_POWER
85#define BUBBLES_START BUTTON_PLAY
86#define BUBBLES_SELECT BUTTON_SELECT
87#define BUBBLES_RESUME BUTTON_REC
88
89#elif CONFIG_KEYPAD == GIGABEAT_PAD
90#define BUBBLES_LEFT BUTTON_LEFT
91#define BUBBLES_RIGHT BUTTON_RIGHT
92#define BUBBLES_UP BUTTON_UP
93#define BUBBLES_DOWN BUTTON_DOWN
94#define BUBBLES_QUIT BUTTON_A
95#define BUBBLES_START BUTTON_POWER
96#define BUBBLES_SELECT BUTTON_SELECT
97#define BUBBLES_RESUME BUTTON_MENU
98
99#elif CONFIG_KEYPAD == RECORDER_PAD
100#define BUBBLES_LEFT BUTTON_LEFT
101#define BUBBLES_RIGHT BUTTON_RIGHT
102#define BUBBLES_UP BUTTON_UP
103#define BUBBLES_DOWN BUTTON_DOWN
104#define BUBBLES_QUIT BUTTON_OFF
105#define BUBBLES_START BUTTON_ON
106#define BUBBLES_SELECT BUTTON_PLAY
107#define BUBBLES_RESUME BUTTON_F1
108
109#elif CONFIG_KEYPAD == ONDIO_PAD
110#define BUBBLES_LEFT BUTTON_LEFT
111#define BUBBLES_RIGHT BUTTON_RIGHT
112#define BUBBLES_UP BUTTON_RIGHT
113#define BUBBLES_DOWN BUTTON_LEFT
114#define BUBBLES_QUIT BUTTON_OFF
115#define BUBBLES_START BUTTON_MENU
116#define BUBBLES_SELECT BUTTON_UP
117#define BUBBLES_RESUME BUTTON_DOWN
118
119#elif CONFIG_KEYPAD == SANSA_E200_PAD
120#define BUBBLES_LEFT BUTTON_LEFT
121#define BUBBLES_RIGHT BUTTON_RIGHT
122#define BUBBLES_UP BUTTON_SCROLL_UP
123#define BUBBLES_DOWN BUTTON_SCROLL_DOWN
124#define BUBBLES_QUIT BUTTON_POWER
125#define BUBBLES_START BUTTON_PLAY
126#define BUBBLES_SELECT BUTTON_SELECT
127#define BUBBLES_RESUME BUTTON_DOWN
128
129#elif CONFIG_KEYPAD == IRIVER_H10_PAD
130#define BUBBLES_LEFT BUTTON_LEFT
131#define BUBBLES_RIGHT BUTTON_RIGHT
132#define BUBBLES_UP BUTTON_SCROLL_UP
133#define BUBBLES_DOWN BUTTON_SCROLL_DOWN
134#define BUBBLES_QUIT BUTTON_POWER
135#define BUBBLES_START BUTTON_PLAY
136#define BUBBLES_SELECT BUTTON_REW
137#define BUBBLES_RESUME BUTTON_FF
138
139#else
140 #error BUBBLES: Unsupported keypad
141#endif
142
143/* bubbles will consume height of 10*ROW_HEIGHT+2*(BUBBLE_HEIGHT-1)+BUBBLE_HEIGHT/2 */ 57/* bubbles will consume height of 10*ROW_HEIGHT+2*(BUBBLE_HEIGHT-1)+BUBBLE_HEIGHT/2 */
144/* 24x24 bubbles (iPod Video) */ 58/* 24x24 bubbles (iPod Video) */
145#if (LCD_HEIGHT == 240) && (LCD_WIDTH == 320) 59#if (LCD_HEIGHT == 240) && (LCD_WIDTH == 320)
@@ -2395,31 +2309,29 @@ static int bubbles_handlebuttons(struct game_context* bb, bool animblock,
2395 int button; 2309 int button;
2396 int buttonres; 2310 int buttonres;
2397 long start; 2311 long start;
2398 2312 const struct button_mapping *plugin_contexts[]
2399 button = rb->button_get_w_tmo(timeout); 2313 = {generic_directions,generic_actions};
2314 button = pluginlib_getaction(rb,timeout,plugin_contexts,2);
2400 2315
2401#ifdef HAS_BUTTON_HOLD 2316#ifdef HAS_BUTTON_HOLD
2402 if (rb->button_hold()) 2317 if (rb->button_hold())
2403 button = BUBBLES_START; 2318 button = PLA_START;
2404#endif 2319#endif
2405 2320
2406 switch(button){ 2321 switch(button){
2407 case (BUBBLES_LEFT|BUTTON_REPEAT): 2322 case PLA_LEFT_REPEAT:
2408 if(bb->angle > MIN_ANGLE) bb->angle -= 4; 2323 if(bb->angle > MIN_ANGLE) bb->angle -= 4;
2409 case BUBBLES_LEFT: /* change angle to the left */ 2324 case PLA_LEFT: /* change angle to the left */
2410 if(bb->angle > MIN_ANGLE) bb->angle -= 2; 2325 if(bb->angle > MIN_ANGLE) bb->angle -= 2;
2411 break; 2326 break;
2412 2327
2413 case (BUBBLES_RIGHT|BUTTON_REPEAT): 2328 case PLA_RIGHT_REPEAT:
2414 if(bb->angle < MAX_ANGLE) bb->angle += 4; 2329 if(bb->angle < MAX_ANGLE) bb->angle += 4;
2415 case BUBBLES_RIGHT: /* change angle to the right */ 2330 case PLA_RIGHT: /* change angle to the right */
2416 if(bb->angle < MAX_ANGLE) bb->angle += 2; 2331 if(bb->angle < MAX_ANGLE) bb->angle += 2;
2417 break; 2332 break;
2418 2333
2419 case BUBBLES_SELECT: /* fire the shot */ 2334 case PLA_FIRE: /* fire the shot */
2420#if CONFIG_KEYPAD == IRIVER_H10_PAD
2421 case BUBBLES_UP: /* easier to press on H10 */
2422#endif
2423 if(!animblock) { 2335 if(!animblock) {
2424 bb->elapsedlvl += bb->elapsedshot; 2336 bb->elapsedlvl += bb->elapsedshot;
2425 bb->elapsedshot = 0; 2337 bb->elapsedshot = 0;
@@ -2431,29 +2343,27 @@ static int bubbles_handlebuttons(struct game_context* bb, bool animblock,
2431 } 2343 }
2432 break; 2344 break;
2433 2345
2434 case BUBBLES_START: /* pause the game */ 2346 case PLA_START: /* pause the game */
2435 start = *rb->current_tick; 2347 start = *rb->current_tick;
2436 rb->splash(1, true, "Paused"); 2348 rb->splash(1, true, "Paused");
2437 while(rb->button_get(true) != (BUBBLES_START)); 2349 while(pluginlib_getaction(rb,TIMEOUT_BLOCK,plugin_contexts,2)
2350 != (PLA_START));
2438 bb->startedshot += *rb->current_tick-start; 2351 bb->startedshot += *rb->current_tick-start;
2439 bubbles_drawboard(bb); 2352 bubbles_drawboard(bb);
2440 rb->lcd_update(); 2353 rb->lcd_update();
2441 break; 2354 break;
2442 2355
2443 case BUBBLES_RESUME: /* save and end the game */ 2356 case PLA_MENU: /* save and end the game */
2444 if(!animblock) { 2357 if(!animblock) {
2445 rb->splash(HZ/2, true, "Saving game..."); 2358 rb->splash(HZ/2, true, "Saving game...");
2446 bubbles_savegame(bb); 2359 bubbles_savegame(bb);
2447 return BB_END; 2360 return BB_END;
2448 } 2361 }
2449 break; 2362 break;
2450#ifdef BUBBLES_RC_QUIT 2363 case PLA_QUIT: /* end the game */
2451 case BUBBLES_RC_QUIT:
2452#endif
2453 case BUBBLES_QUIT: /* end the game */
2454 return BB_END; 2364 return BB_END;
2455 2365
2456 case BUTTON_NONE: /* no button pressed */ 2366 case ACTION_UNKNOWN: /* no button pressed */
2457 break; 2367 break;
2458 2368
2459 default: 2369 default:
@@ -2479,6 +2389,8 @@ static int bubbles(struct game_context* bb) {
2479 bool startgame = false; 2389 bool startgame = false;
2480 bool showscores = false; 2390 bool showscores = false;
2481 long timeout; 2391 long timeout;
2392 const struct button_mapping *plugin_contexts[]
2393 = {generic_directions,generic_actions};
2482 2394
2483 bubbles_setcolors(); 2395 bubbles_setcolors();
2484 2396
@@ -2578,23 +2490,20 @@ static int bubbles(struct game_context* bb) {
2578 rb->lcd_update(); 2490 rb->lcd_update();
2579 2491
2580 /* handle menu button presses */ 2492 /* handle menu button presses */
2581 button = rb->button_get(true); 2493 button = pluginlib_getaction(rb,timeout,plugin_contexts,2);
2582 switch(button){ 2494 switch(button){
2583 case BUBBLES_START: /* start playing */ 2495 case PLA_START: /* start playing */
2584 bb->level = startlevel; 2496 bb->level = startlevel;
2585 startgame = true; 2497 startgame = true;
2586 break; 2498 break;
2587#ifdef BUBBLES_RC_QUIT 2499 case PLA_QUIT: /* quit program */
2588 case BUBBLES_RC_QUIT:
2589#endif
2590 case BUBBLES_QUIT: /* quit program */
2591 if(showscores) { 2500 if(showscores) {
2592 showscores = false; 2501 showscores = false;
2593 break; 2502 break;
2594 } 2503 }
2595 return BB_QUIT; 2504 return BB_QUIT;
2596 2505
2597 case BUBBLES_RESUME: /* resume game */ 2506 case PLA_MENU: /* resume game */
2598 if(!bubbles_loadgame(bb)) { 2507 if(!bubbles_loadgame(bb)) {
2599 rb->splash(HZ*2, true, "Nothing to resume"); 2508 rb->splash(HZ*2, true, "Nothing to resume");
2600 } else { 2509 } else {
@@ -2602,12 +2511,12 @@ static int bubbles(struct game_context* bb) {
2602 } 2511 }
2603 break; 2512 break;
2604 2513
2605 case BUBBLES_SELECT: /* toggle high scores */ 2514 case PLA_FIRE: /* toggle high scores */
2606 showscores = !showscores; 2515 showscores = !showscores;
2607 break; 2516 break;
2608 2517
2609 case (BUBBLES_UP|BUTTON_REPEAT): 2518 case PLA_UP: /* increase starting level */
2610 case BUBBLES_UP: /* increase starting level */ 2519 case PLA_UP_REPEAT:
2611 if(startlevel >= bb->highlevel) { 2520 if(startlevel >= bb->highlevel) {
2612 startlevel = 0; 2521 startlevel = 0;
2613 } else { 2522 } else {
@@ -2615,8 +2524,8 @@ static int bubbles(struct game_context* bb) {
2615 } 2524 }
2616 break; 2525 break;
2617 2526
2618 case (BUBBLES_DOWN|BUTTON_REPEAT): 2527 case PLA_DOWN: /* decrease starting level */
2619 case BUBBLES_DOWN: /* decrease starting level */ 2528 case PLA_DOWN_REPEAT:
2620 if(startlevel <= 0) { 2529 if(startlevel <= 0) {
2621 startlevel = bb->highlevel; 2530 startlevel = bb->highlevel;
2622 } else { 2531 } else {