summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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 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 }