summaryrefslogtreecommitdiff
path: root/apps/plugins
diff options
context:
space:
mode:
authorZakk Roberts <midk@rockbox.org>2006-05-16 03:34:45 +0000
committerZakk Roberts <midk@rockbox.org>2006-05-16 03:34:45 +0000
commitca916145f914d5eb0ff23afc81c28649c44de1a5 (patch)
treefaef8d6c5f494707210f221c1bfb2be1c9f4734a /apps/plugins
parentd6af987b4b544451359d995cbfc5dd7075cce114 (diff)
downloadrockbox-ca916145f914d5eb0ff23afc81c28649c44de1a5.zip
rockbox-ca916145f914d5eb0ff23afc81c28649c44de1a5.tar.gz
rockbox-ca916145f914d5eb0ff23afc81c28649c44de1a5.tar.bz2
rockbox-ca916145f914d5eb0ff23afc81c28649c44de1a5.tar.xz
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')
-rw-r--r--apps/plugins/jewels.c37
1 files changed, 29 insertions, 8 deletions
diff --git a/apps/plugins/jewels.c b/apps/plugins/jewels.c
index a109a5b..02cb8e0 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;
}