From ca916145f914d5eb0ff23afc81c28649c44de1a5 Mon Sep 17 00:00:00 2001 From: Zakk Roberts Date: Tue, 16 May 2006 03:34:45 +0000 Subject: 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 --- apps/plugins/jewels.c | 37 +++++++++++++++++++++++++++++-------- 1 file changed, 29 insertions(+), 8 deletions(-) (limited to 'apps') 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 #define JEWELS_PREV BUTTON_SCROLL_BACK #define JEWELS_NEXT BUTTON_SCROLL_FWD #define JEWELS_SELECT BUTTON_SELECT -#define JEWELS_CANCEL BUTTON_SELECT|BUTTON_MENU #elif CONFIG_KEYPAD == IRIVER_IFP7XX_PAD #define JEWELS_UP BUTTON_UP @@ -149,10 +148,11 @@ PLUGIN_HEADER #define SAVE_FILE PLUGIN_DIR "/jewels.save" /* final game return status */ -#define BJ_END 3 -#define BJ_USB 2 -#define BJ_QUIT 1 -#define BJ_LOSE 0 +#define BJ_QUIT_FROM_GAME 4 +#define BJ_END 3 +#define BJ_USB 2 +#define BJ_QUIT 1 +#define BJ_LOSE 0 /* swap directions */ #define SWAP_UP 0 @@ -184,7 +184,8 @@ enum menu_result { MRES_SCORES, MRES_HELP, MRES_QUIT, - MRES_PLAYBACK + MRES_PLAYBACK, + MRES_EXIT }; /* menu commands */ @@ -212,11 +213,12 @@ struct jewels_menu { {"High Scores", MRES_SCORES}, {"Help", MRES_HELP}, {"Quit", MRES_QUIT}}}, - {"Menu", true, 0, 4, + {"Menu", true, 0, 5, {{"Audio Playback", MRES_PLAYBACK }, {"Resume Game", MRES_RESUME}, {"Save Game", MRES_SAVE}, - {"End Game", MRES_QUIT}}} + {"End Game", MRES_QUIT}, + {"Exit Jewels", MRES_EXIT}}} }; /* global rockbox api */ @@ -1301,6 +1303,9 @@ static int jewels_main(struct game_context* bj) { case MRES_QUIT: return BJ_END; + case MRES_EXIT: + return BJ_QUIT_FROM_GAME; + default: break; } @@ -1409,9 +1414,11 @@ static int jewels_main(struct game_context* bj) { if(!inmenu) inmenu = true; break; +#ifdef JEWELS_CANCEL case JEWELS_CANCEL: /* end game */ return BJ_END; break; +#endif default: if(rb->default_event_handler_ex(button, jewels_callback, @@ -1471,6 +1478,20 @@ enum plugin_status plugin_start(struct plugin_api* api, void* parameter) { exit = true; break; + case BJ_QUIT_FROM_GAME: + if(!bj.resume) { + if((position = jewels_recordscore(&bj))) { + rb->snprintf(str, 19, "New high score #%d!", position); + rb->splash(HZ*2, true, str); + } + } + if(bj.dirty) { + rb->splash(HZ, true, "Saving high scores..."); + jewels_savescores(&bj); + } + exit = true; + break; + default: break; } -- cgit v1.2.3