diff options
author | Jens Arnold <amiconn@rockbox.org> | 2006-09-18 00:36:09 +0000 |
---|---|---|
committer | Jens Arnold <amiconn@rockbox.org> | 2006-09-18 00:36:09 +0000 |
commit | 7b76bd9f698d9e193713ddd4aaf1975f404cfaae (patch) | |
tree | 209718d81782c81314ce0b9c6e414a37a818b65e /apps | |
parent | b0a7de6b7d8459b2bc2f4dd6e7c81ebaade13c5c (diff) | |
download | rockbox-7b76bd9f698d9e193713ddd4aaf1975f404cfaae.tar.gz rockbox-7b76bd9f698d9e193713ddd4aaf1975f404cfaae.zip |
Solitaire: * Use rockbox API menu. * Fixed typo.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@10986 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps')
-rw-r--r-- | apps/plugins/solitaire.c | 176 |
1 files changed, 60 insertions, 116 deletions
diff --git a/apps/plugins/solitaire.c b/apps/plugins/solitaire.c index faaf504622..5342fe3350 100644 --- a/apps/plugins/solitaire.c +++ b/apps/plugins/solitaire.c | |||
@@ -135,7 +135,7 @@ static struct plugin_api* rb; | |||
135 | # define SOL_REM2STACK_PRE BUTTON_RIGHT | 135 | # define SOL_REM2STACK_PRE BUTTON_RIGHT |
136 | # define SOL_REM2STACK (BUTTON_RIGHT | BUTTON_REPEAT) | 136 | # define SOL_REM2STACK (BUTTON_RIGHT | BUTTON_REPEAT) |
137 | # define SOL_MENU_RUN BUTTON_SELECT | 137 | # define SOL_MENU_RUN BUTTON_SELECT |
138 | # define HK_UD "SROLL U/D" | 138 | # define HK_UD "SCROLL U/D" |
139 | # define HK_MOVE "SELECT" | 139 | # define HK_MOVE "SELECT" |
140 | # define HK_DRAW "MENU" | 140 | # define HK_DRAW "MENU" |
141 | # define HK_REM2CUR "PLAY" | 141 | # define HK_REM2CUR "PLAY" |
@@ -574,8 +574,6 @@ enum help solitaire_help( void ) | |||
574 | 574 | ||
575 | /** | 575 | /** |
576 | * Custom menu / options | 576 | * Custom menu / options |
577 | * | ||
578 | * TODO: use rockbox api menus instead | ||
579 | */ | 577 | */ |
580 | 578 | ||
581 | #define CFGFILE_VERSION 0 | 579 | #define CFGFILE_VERSION 0 |
@@ -588,133 +586,88 @@ static struct configdata config[] = { | |||
588 | { TYPE_INT, 0, 1, &draw_type_disk, "draw_type", NULL, NULL } | 586 | { TYPE_INT, 0, 1, &draw_type_disk, "draw_type", NULL, NULL } |
589 | }; | 587 | }; |
590 | 588 | ||
591 | /* menu return codes */ | ||
592 | enum { MENU_RESUME, MENU_RESTART, MENU_OPT, | ||
593 | MENU_HELP, MENU_QUIT, MENU_USB }; | ||
594 | #define MENU_LENGTH MENU_USB | ||
595 | 589 | ||
596 | /* different menu behaviors */ | 590 | char draw_option_string[32]; |
597 | enum { MENU_BEFOREGAME, MENU_BEFOREGAMEOP, MENU_DURINGGAME }; | ||
598 | 591 | ||
599 | /** | 592 | static void create_draw_option_string(void) |
600 | * The menu | ||
601 | * text displayed changes depending on the context */ | ||
602 | int solitaire_menu( unsigned char context ) | ||
603 | { | 593 | { |
604 | static char menu[3][MENU_LENGTH][17] = | 594 | if (draw_type == 0) |
605 | { { "Start Game", | 595 | rb->strcpy(draw_option_string, "Draw Three Cards"); |
606 | "", | 596 | else |
607 | "Draw Three Cards", | 597 | rb->strcpy(draw_option_string, "Draw One Card"); |
608 | "Help", | 598 | } |
609 | "Quit" }, | ||
610 | { "Start Game", | ||
611 | "", | ||
612 | "Draw One Card", | ||
613 | "Help", | ||
614 | "Quit" }, | ||
615 | { "Resume Game", | ||
616 | "Restart Game", | ||
617 | "", | ||
618 | "Help", | ||
619 | "Quit"}, | ||
620 | }; | ||
621 | 599 | ||
600 | void solitaire_init(void); | ||
622 | 601 | ||
623 | int i; | 602 | /* menu return codes */ |
624 | int cursor = 0; | 603 | enum { MENU_RESUME, MENU_QUIT, MENU_USB }; |
625 | int button; | 604 | |
605 | int solitaire_menu(bool in_game) | ||
606 | { | ||
607 | int m; | ||
608 | int result = -1; | ||
609 | int i = 0; | ||
626 | 610 | ||
627 | int fh; | 611 | struct menu_item items[4]; |
628 | rb->lcd_getstringsize( menu[0][0], NULL, &fh ); | ||
629 | fh++; | ||
630 | 612 | ||
631 | if( context != MENU_BEFOREGAMEOP | 613 | if (in_game) |
632 | && context != MENU_BEFOREGAME | ||
633 | && context != MENU_DURINGGAME ) | ||
634 | { | 614 | { |
635 | context = MENU_DURINGGAME; | 615 | items[i++].desc = "Resume Game"; |
616 | items[i++].desc = "Restart Game"; | ||
636 | } | 617 | } |
637 | 618 | else | |
638 | #if LCD_DEPTH > 1 | ||
639 | rb->lcd_set_background( LCD_DEFAULT_BG ); | ||
640 | rb->lcd_set_foreground( LCD_DEFAULT_FG ); | ||
641 | #endif | ||
642 | |||
643 | while( true ) | ||
644 | { | 619 | { |
620 | items[i++].desc = "Start Game"; | ||
621 | items[i++].desc = draw_option_string; | ||
622 | } | ||
623 | items[i++].desc = "Help"; | ||
624 | items[i++].desc = "Quit"; | ||
645 | 625 | ||
646 | rb->lcd_clear_display(); | 626 | create_draw_option_string(); |
647 | rb->lcd_putsxy( 20, 1, "Solitaire" ); | 627 | m = rb->menu_init(items, i, NULL, NULL, NULL, NULL); |
648 | 628 | while (result < 0) | |
649 | for( i = 0; i<MENU_LENGTH; i++ ) | 629 | { |
650 | { | 630 | switch (rb->menu_show(m)) |
651 | rb->lcd_putsxy( 1, 17+fh*i, menu[context][i] ); | ||
652 | if( cursor == i ) | ||
653 | { | ||
654 | rb->lcd_set_drawmode( DRMODE_COMPLEMENT ); | ||
655 | rb->lcd_fillrect( 0, 17+fh*i, LCD_WIDTH, fh ); | ||
656 | rb->lcd_set_drawmode( DRMODE_SOLID ); | ||
657 | } | ||
658 | } | ||
659 | |||
660 | rb->lcd_update(); | ||
661 | |||
662 | button = rb->button_get( true ); | ||
663 | switch( button ) | ||
664 | { | 631 | { |
665 | case SOL_UP: | 632 | case MENU_SELECTED_EXIT: |
666 | #ifndef SOL_UP_PRE | 633 | result = MENU_RESUME; |
667 | case SOL_UP|BUTTON_REPEAT: | ||
668 | #endif | ||
669 | cursor = (cursor + MENU_LENGTH - 1)%MENU_LENGTH; | ||
670 | break; | 634 | break; |
671 | 635 | ||
672 | case SOL_DOWN: | 636 | case MENU_ATTACHED_USB: |
673 | #ifndef SOL_DOWN_PRE | 637 | result = MENU_USB; |
674 | case SOL_DOWN|BUTTON_REPEAT: | ||
675 | #endif | ||
676 | cursor = (cursor + 1)%MENU_LENGTH; | ||
677 | break; | 638 | break; |
678 | 639 | ||
679 | case SOL_LEFT: | 640 | case 0: |
680 | return MENU_RESUME; | 641 | result = MENU_RESUME; |
642 | break; | ||
681 | 643 | ||
682 | case SOL_MENU_RUN: | 644 | case 1: |
683 | #ifdef SOL_MENU_RUN2 | 645 | if (in_game) |
684 | case SOL_MENU_RUN2: | ||
685 | #endif | ||
686 | switch( cursor ) | ||
687 | { | 646 | { |
688 | case MENU_RESUME: | 647 | solitaire_init(); |
689 | case MENU_RESTART: | 648 | result = MENU_RESUME; |
690 | case MENU_OPT: | 649 | } |
691 | case MENU_QUIT: | 650 | else |
692 | return cursor; | 651 | { |
693 | 652 | draw_type = (draw_type + 1) % 2; | |
694 | case MENU_HELP: | 653 | create_draw_option_string(); |
695 | if( solitaire_help() == HELP_USB ) | ||
696 | return MENU_USB; | ||
697 | break; | ||
698 | } | 654 | } |
699 | break; | 655 | break; |
700 | 656 | ||
701 | #ifdef SOL_OPT | 657 | case 2: |
702 | case SOL_OPT: | 658 | rb->lcd_setmargins(0, 0); |
703 | return MENU_OPT; | 659 | if (solitaire_help() == HELP_USB) |
704 | #endif | 660 | result = MENU_USB; |
705 | 661 | break; | |
706 | #ifdef SOL_RC_QUIT | ||
707 | case SOL_RC_QUIT: | ||
708 | #endif | ||
709 | case SOL_QUIT: | ||
710 | return MENU_QUIT; | ||
711 | 662 | ||
712 | default: | 663 | case 3: |
713 | if( rb->default_event_handler( button ) == SYS_USB_CONNECTED ) | 664 | result = MENU_QUIT; |
714 | return MENU_USB; | ||
715 | break; | 665 | break; |
716 | } | 666 | } |
717 | } | 667 | } |
668 | rb->menu_exit(m); | ||
669 | rb->lcd_setmargins(0, 0); | ||
670 | return result; | ||
718 | } | 671 | } |
719 | 672 | ||
720 | /** | 673 | /** |
@@ -1131,18 +1084,13 @@ int solitaire( void ) | |||
1131 | int biggest_col_length; | 1084 | int biggest_col_length; |
1132 | 1085 | ||
1133 | rb->srand( *rb->current_tick ); | 1086 | rb->srand( *rb->current_tick ); |
1134 | switch( solitaire_menu( draw_type == 0 ? MENU_BEFOREGAME | 1087 | switch( solitaire_menu(false) ) |
1135 | : MENU_BEFOREGAMEOP ) ) | ||
1136 | { | 1088 | { |
1137 | case MENU_QUIT: | 1089 | case MENU_QUIT: |
1138 | return SOLITAIRE_QUIT; | 1090 | return SOLITAIRE_QUIT; |
1139 | 1091 | ||
1140 | case MENU_USB: | 1092 | case MENU_USB: |
1141 | return SOLITAIRE_USB; | 1093 | return SOLITAIRE_USB; |
1142 | |||
1143 | case MENU_OPT: | ||
1144 | draw_type = (draw_type+1)%2; | ||
1145 | return 0; | ||
1146 | } | 1094 | } |
1147 | solitaire_init(); | 1095 | solitaire_init(); |
1148 | 1096 | ||
@@ -1564,17 +1512,13 @@ int solitaire( void ) | |||
1564 | case SOL_RC_QUIT: | 1512 | case SOL_RC_QUIT: |
1565 | #endif | 1513 | #endif |
1566 | case SOL_QUIT: | 1514 | case SOL_QUIT: |
1567 | switch( solitaire_menu( MENU_DURINGGAME ) ) | 1515 | switch( solitaire_menu(true) ) |
1568 | { | 1516 | { |
1569 | case MENU_QUIT: | 1517 | case MENU_QUIT: |
1570 | return SOLITAIRE_QUIT; | 1518 | return SOLITAIRE_QUIT; |
1571 | 1519 | ||
1572 | case MENU_USB: | 1520 | case MENU_USB: |
1573 | return SOLITAIRE_USB; | 1521 | return SOLITAIRE_USB; |
1574 | |||
1575 | case MENU_RESTART: | ||
1576 | solitaire_init(); | ||
1577 | break; | ||
1578 | } | 1522 | } |
1579 | break; | 1523 | break; |
1580 | 1524 | ||