summaryrefslogtreecommitdiff
path: root/apps/plugins/mazezam.c
diff options
context:
space:
mode:
authorJohannes Schwarz <ubuntuxer@rockbox.org>2009-06-26 17:59:33 +0000
committerJohannes Schwarz <ubuntuxer@rockbox.org>2009-06-26 17:59:33 +0000
commit73d25744fb01844cc28402dfc4b48a030d270579 (patch)
tree34a3e43d7160f263178928553644cf3392a6341b /apps/plugins/mazezam.c
parentc2565c9bcf02b8b9fe0311a15a731dde449c1552 (diff)
downloadrockbox-73d25744fb01844cc28402dfc4b48a030d270579.zip
rockbox-73d25744fb01844cc28402dfc4b48a030d270579.tar.gz
rockbox-73d25744fb01844cc28402dfc4b48a030d270579.tar.bz2
rockbox-73d25744fb01844cc28402dfc4b48a030d270579.tar.xz
FS#10283 simplify plugins' menus by using stringlist with callback (by Teruaki Kawashima - some minor changes by myself)
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@21523 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps/plugins/mazezam.c')
-rw-r--r--apps/plugins/mazezam.c59
1 files changed, 21 insertions, 38 deletions
diff --git a/apps/plugins/mazezam.c b/apps/plugins/mazezam.c
index 2e79567..ac7e651 100644
--- a/apps/plugins/mazezam.c
+++ b/apps/plugins/mazezam.c
@@ -52,13 +52,12 @@ const struct button_mapping *plugin_contexts[]
#define MAZEZAM_TEXT_WELLDONE_OPTION "Goodbye"
#define MAZEZAM_TEXT_MAZEZAM_MENU "MazezaM Menu"
#define MAZEZAM_TEXT_RETRY_LEVEL "Retry level"
-#define MAZEZAM_TEXT_AUDIO_PLAYBACK "Audio playback"
+#define MAZEZAM_TEXT_AUDIO_PLAYBACK "Playback Control"
#define MAZEZAM_TEXT_QUIT "Quit"
-#define MAZEZAM_TEXT_BACK "Return"
+#define MAZEZAM_TEXT_BACK "Resume Game"
#define MAZEZAM_TEXT_MAIN_MENU "MazezaM"
#define MAZEZAM_TEXT_CONTINUE "Play from checkpoint"
-#define MAZEZAM_TEXT_PLAY_GAME "Play game"
-#define MAZEZAM_TEXT_PLAY_NEW_GAME "Play new game"
+#define MAZEZAM_TEXT_PLAY_NEW_GAME "Start New Game"
#define MAZEZAM_START_LIVES 3 /* how many lives at game start */
#define MAZEZAM_FIRST_CHECKPOINT 3 /* The level at the first checkpoint */
@@ -838,31 +837,16 @@ static void resume_save_data (struct resume_data *r, struct resume_data *old)
}
/*****************************************************************************
-* Offer a main menu with no continue option
-******************************************************************************/
-static int main_menu_without_continue(int* start_selection)
-{
- MENUITEM_STRINGLIST(menu,MAZEZAM_TEXT_MAIN_MENU,NULL,
- MAZEZAM_TEXT_PLAY_GAME,
- MAZEZAM_TEXT_QUIT);
- return rb->do_menu(&menu, start_selection, NULL, false);
-}
-
-/*****************************************************************************
-* Offer a main menu with a continue option
+* Manages the main menu
******************************************************************************/
-static int main_menu_with_continue(int* start_selection)
+static bool have_continue;
+static int main_menu_cb(int action, const struct menu_item_ex *this_item)
{
- MENUITEM_STRINGLIST(menu,MAZEZAM_TEXT_MAIN_MENU,NULL,
- MAZEZAM_TEXT_CONTINUE,
- MAZEZAM_TEXT_PLAY_NEW_GAME,
- MAZEZAM_TEXT_QUIT);
- return rb->do_menu(&menu, start_selection, NULL, false);
+ if(action == ACTION_REQUEST_MENUITEM
+ && !have_continue && ((intptr_t)this_item)==0)
+ return ACTION_EXIT_MENUITEM;
+ return action;
}
-
-/*****************************************************************************
-* Manages the main menu
-******************************************************************************/
static void main_menu(void)
{
/* The initial option is "play game" */
@@ -873,11 +857,14 @@ static void main_menu(void)
/* Load data */
resume_load_data(&r_data, &old_data);
+ MENUITEM_STRINGLIST(menu,MAZEZAM_TEXT_MAIN_MENU,main_menu_cb,
+ MAZEZAM_TEXT_CONTINUE,
+ MAZEZAM_TEXT_PLAY_NEW_GAME,
+ MAZEZAM_TEXT_QUIT);
+
while (state >= STATE_IN_APPLICATION) {
- if (r_data.level == 0)
- choice = main_menu_without_continue(&start_selection);
- else
- choice = main_menu_with_continue(&start_selection);
+ have_continue = (r_data.level != 0);
+ choice = rb->do_menu(&menu, &start_selection, NULL, false);
switch(choice) {
case 0: /* Continue */
@@ -885,14 +872,10 @@ static void main_menu(void)
game_loop(&r_data);
break;
- case 1: /* Quit or Play new game */
- if (r_data.level == 0)
- state = STATE_QUIT;
- else { /* Play new game */
- r_data.level = 0;
- state = STATE_IN_GAME;
- game_loop(&r_data);
- }
+ case 1: /* Play new game */
+ r_data.level = 0;
+ state = STATE_IN_GAME;
+ game_loop(&r_data);
break;
case MENU_ATTACHED_USB: