diff options
author | Zakk Roberts <midk@rockbox.org> | 2006-05-16 03:34:45 +0000 |
---|---|---|
committer | Zakk Roberts <midk@rockbox.org> | 2006-05-16 03:34:45 +0000 |
commit | ca916145f914d5eb0ff23afc81c28649c44de1a5 (patch) | |
tree | faef8d6c5f494707210f221c1bfb2be1c9f4734a /apps/plugins/jewels.c | |
parent | d6af987b4b544451359d995cbfc5dd7075cce114 (diff) | |
download | rockbox-ca916145f914d5eb0ff23afc81c28649c44de1a5.tar.gz rockbox-ca916145f914d5eb0ff23afc81c28649c44de1a5.zip |
Add an 'Exit Jewels' option to the in-game menu to avoid having to exit to the main menu to quit; this allows us to remove the Menu+Select 'quit' key for iPods, which could be accidentally pressed during play.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@9949 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps/plugins/jewels.c')
-rw-r--r-- | apps/plugins/jewels.c | 37 |
1 files changed, 29 insertions, 8 deletions
diff --git a/apps/plugins/jewels.c b/apps/plugins/jewels.c index a109a5b56f..02cb8e0b36 100644 --- a/apps/plugins/jewels.c +++ b/apps/plugins/jewels.c | |||
@@ -60,7 +60,6 @@ PLUGIN_HEADER | |||
60 | #define JEWELS_PREV BUTTON_SCROLL_BACK | 60 | #define JEWELS_PREV BUTTON_SCROLL_BACK |
61 | #define JEWELS_NEXT BUTTON_SCROLL_FWD | 61 | #define JEWELS_NEXT BUTTON_SCROLL_FWD |
62 | #define JEWELS_SELECT BUTTON_SELECT | 62 | #define JEWELS_SELECT BUTTON_SELECT |
63 | #define JEWELS_CANCEL BUTTON_SELECT|BUTTON_MENU | ||
64 | 63 | ||
65 | #elif CONFIG_KEYPAD == IRIVER_IFP7XX_PAD | 64 | #elif CONFIG_KEYPAD == IRIVER_IFP7XX_PAD |
66 | #define JEWELS_UP BUTTON_UP | 65 | #define JEWELS_UP BUTTON_UP |
@@ -149,10 +148,11 @@ PLUGIN_HEADER | |||
149 | #define SAVE_FILE PLUGIN_DIR "/jewels.save" | 148 | #define SAVE_FILE PLUGIN_DIR "/jewels.save" |
150 | 149 | ||
151 | /* final game return status */ | 150 | /* final game return status */ |
152 | #define BJ_END 3 | 151 | #define BJ_QUIT_FROM_GAME 4 |
153 | #define BJ_USB 2 | 152 | #define BJ_END 3 |
154 | #define BJ_QUIT 1 | 153 | #define BJ_USB 2 |
155 | #define BJ_LOSE 0 | 154 | #define BJ_QUIT 1 |
155 | #define BJ_LOSE 0 | ||
156 | 156 | ||
157 | /* swap directions */ | 157 | /* swap directions */ |
158 | #define SWAP_UP 0 | 158 | #define SWAP_UP 0 |
@@ -184,7 +184,8 @@ enum menu_result { | |||
184 | MRES_SCORES, | 184 | MRES_SCORES, |
185 | MRES_HELP, | 185 | MRES_HELP, |
186 | MRES_QUIT, | 186 | MRES_QUIT, |
187 | MRES_PLAYBACK | 187 | MRES_PLAYBACK, |
188 | MRES_EXIT | ||
188 | }; | 189 | }; |
189 | 190 | ||
190 | /* menu commands */ | 191 | /* menu commands */ |
@@ -212,11 +213,12 @@ struct jewels_menu { | |||
212 | {"High Scores", MRES_SCORES}, | 213 | {"High Scores", MRES_SCORES}, |
213 | {"Help", MRES_HELP}, | 214 | {"Help", MRES_HELP}, |
214 | {"Quit", MRES_QUIT}}}, | 215 | {"Quit", MRES_QUIT}}}, |
215 | {"Menu", true, 0, 4, | 216 | {"Menu", true, 0, 5, |
216 | {{"Audio Playback", MRES_PLAYBACK }, | 217 | {{"Audio Playback", MRES_PLAYBACK }, |
217 | {"Resume Game", MRES_RESUME}, | 218 | {"Resume Game", MRES_RESUME}, |
218 | {"Save Game", MRES_SAVE}, | 219 | {"Save Game", MRES_SAVE}, |
219 | {"End Game", MRES_QUIT}}} | 220 | {"End Game", MRES_QUIT}, |
221 | {"Exit Jewels", MRES_EXIT}}} | ||
220 | }; | 222 | }; |
221 | 223 | ||
222 | /* global rockbox api */ | 224 | /* global rockbox api */ |
@@ -1301,6 +1303,9 @@ static int jewels_main(struct game_context* bj) { | |||
1301 | case MRES_QUIT: | 1303 | case MRES_QUIT: |
1302 | return BJ_END; | 1304 | return BJ_END; |
1303 | 1305 | ||
1306 | case MRES_EXIT: | ||
1307 | return BJ_QUIT_FROM_GAME; | ||
1308 | |||
1304 | default: | 1309 | default: |
1305 | break; | 1310 | break; |
1306 | } | 1311 | } |
@@ -1409,9 +1414,11 @@ static int jewels_main(struct game_context* bj) { | |||
1409 | if(!inmenu) inmenu = true; | 1414 | if(!inmenu) inmenu = true; |
1410 | break; | 1415 | break; |
1411 | 1416 | ||
1417 | #ifdef JEWELS_CANCEL | ||
1412 | case JEWELS_CANCEL: /* end game */ | 1418 | case JEWELS_CANCEL: /* end game */ |
1413 | return BJ_END; | 1419 | return BJ_END; |
1414 | break; | 1420 | break; |
1421 | #endif | ||
1415 | 1422 | ||
1416 | default: | 1423 | default: |
1417 | if(rb->default_event_handler_ex(button, jewels_callback, | 1424 | if(rb->default_event_handler_ex(button, jewels_callback, |
@@ -1471,6 +1478,20 @@ enum plugin_status plugin_start(struct plugin_api* api, void* parameter) { | |||
1471 | exit = true; | 1478 | exit = true; |
1472 | break; | 1479 | break; |
1473 | 1480 | ||
1481 | case BJ_QUIT_FROM_GAME: | ||
1482 | if(!bj.resume) { | ||
1483 | if((position = jewels_recordscore(&bj))) { | ||
1484 | rb->snprintf(str, 19, "New high score #%d!", position); | ||
1485 | rb->splash(HZ*2, true, str); | ||
1486 | } | ||
1487 | } | ||
1488 | if(bj.dirty) { | ||
1489 | rb->splash(HZ, true, "Saving high scores..."); | ||
1490 | jewels_savescores(&bj); | ||
1491 | } | ||
1492 | exit = true; | ||
1493 | break; | ||
1494 | |||
1474 | default: | 1495 | default: |
1475 | break; | 1496 | break; |
1476 | } | 1497 | } |