Index: apps/menu.c =================================================================== --- apps/menu.c (revision 21234) +++ apps/menu.c (working copy) @@ -81,7 +81,8 @@ static int get_menu_selection(int selected_item, const struct menu_item_ex *menu) { int type = (menu->flags&MENU_TYPE_MASK); - if (type == MT_MENU && (selected_itembutton_clear_queue(); - int choice = 0; - if (ingame) { - MENUITEM_STRINGLIST (main_menu, "Xobox Menu", NULL, - "Resume Game", - "Restart Level", - "Speed", - "Difficult", - "Playback Control", - "Quit"); + int selection = 0; + _ingame = ingame; + MENUITEM_STRINGLIST(main_menu, "Xobox Menu", xobox_menu_cb, + "Resume Game", "Start New Game", + "Speed", "Difficulty", + "Playback Control", "Quit"); - while (true) { - choice = rb->do_menu(&main_menu, &choice, NULL, false); - switch (choice) { - case 0: - return 0; - case 1: - init_game (); - return 0; - case 2: - rb->set_int ("Speed", "", UNIT_INT, &speed, NULL, 1, 1, 10, NULL); - break; - case 3: - rb->set_int ("Difficulty", "", UNIT_INT, &difficulty, NULL, - 5, 50, 95, NULL); - break; - case 4: - playback_control(NULL); - break; - case 5: - return 1; - case MENU_ATTACHED_USB: - return 1; - default: - break; - } + while (true) { + switch (rb->do_menu(&main_menu, &selection, NULL, false)) { + case 0: + return 0; + case 1: + init_game (); + return 0; + case 2: + rb->set_int ("Speed", "", UNIT_INT, &speed, NULL, + 1, 1, 10, NULL); + break; + case 3: + rb->set_int ("Difficulty", "", UNIT_INT, &difficulty, NULL, + 5, 50, 95, NULL); + break; + case 4: + playback_control(NULL); + break; + case 5: + return 1; + case MENU_ATTACHED_USB: + return 1; + default: + break; } } - else { - MENUITEM_STRINGLIST (main_menu, "Xobox Menu", NULL, - "Start Game", - "Speed", - "Difficulty", - "Playback Control", - "Quit"); - - while (true) { - choice = rb->do_menu(&main_menu, &choice, NULL, false); - switch (choice) { - case 0: - init_game (); - return 0; - case 1: - rb->set_int ("Speed", "", UNIT_INT, &speed, NULL, 1, 1, 10, NULL); - break; - case 2: - rb->set_int ("Difficulty", "", UNIT_INT, &difficulty, NULL, - 5, 50, 95, NULL); - break; - case 3: - playback_control(NULL); - break; - case 4: - return 1; - case MENU_ATTACHED_USB: - return 1; - default: - break; - } - } - } } /* general keypad handler loop */ @@ -1005,7 +973,7 @@ bool pause = false; int end; - if (xobox_menu(false)==1) { + if (xobox_menu(false)) { return PLUGIN_OK; } @@ -1014,8 +982,8 @@ #ifdef HAS_BUTTON_HOLD if (rb->button_hold()) { - pause = true; - rb->splash (HZ, "PAUSED"); + pause = true; + rb->splash (HZ, "Paused"); } #endif @@ -1043,8 +1011,10 @@ rb->splash (HZ, "Paused"); break; case QUIT: - if (xobox_menu(true)==1) { - quit = true; + if (!pause) { + if (xobox_menu(true)) { + quit = true; + } } break; default: @@ -1058,7 +1028,7 @@ } if (player.gameover) { rb->splash (HZ, "Game Over!"); - if (xobox_menu(false)==1) { + if (xobox_menu(false)) { quit = true; } }