summaryrefslogtreecommitdiff
path: root/apps/plugins/solitaire.c
diff options
context:
space:
mode:
Diffstat (limited to 'apps/plugins/solitaire.c')
-rw-r--r--apps/plugins/solitaire.c34
1 files changed, 23 insertions, 11 deletions
diff --git a/apps/plugins/solitaire.c b/apps/plugins/solitaire.c
index 9fc0062454..066af9da73 100644
--- a/apps/plugins/solitaire.c
+++ b/apps/plugins/solitaire.c
@@ -518,8 +518,11 @@ int solitaire_menu(unsigned char when)
518 518
519 for(i = 0; i<MENU_LENGTH; i++){ 519 for(i = 0; i<MENU_LENGTH; i++){
520 rb->lcd_putsxy(1, 17+fh*i, menu[when][i]); 520 rb->lcd_putsxy(1, 17+fh*i, menu[when][i]);
521 if(cursor == i) 521 if(cursor == i) {
522 rb->lcd_invertrect(0,17+fh*i, LCD_WIDTH, fh); 522 rb->lcd_set_drawmode(DRMODE_COMPLEMENT);
523 rb->lcd_fillrect(0,17+fh*i, LCD_WIDTH, fh);
524 rb->lcd_set_drawmode(DRMODE_SOLID);
525 }
523 } 526 }
524 527
525 rb->lcd_update(); 528 rb->lcd_update();
@@ -877,12 +880,15 @@ int solitaire(void){
877 if(c==NOT_A_CARD) { 880 if(c==NOT_A_CARD) {
878 /* draw the cursor on empty columns */ 881 /* draw the cursor on empty columns */
879 if(cur_col == i){ 882 if(cur_col == i){
880 rb->lcd_invertrect(i*(LCD_WIDTH - CARD_WIDTH)/COL_NUM+2, 2, CARD_WIDTH-3, CARD_HEIGHT-1); 883 rb->lcd_set_drawmode(DRMODE_COMPLEMENT);
884 rb->lcd_fillrect(i*(LCD_WIDTH - CARD_WIDTH)/COL_NUM+2, 2, CARD_WIDTH-3, CARD_HEIGHT-1);
881 } 885 }
882 break; 886 break;
883 } 887 }
884 /* clear the card's spot */ 888 /* clear the card's spot */
885 rb->lcd_clearrect(i*(LCD_WIDTH - CARD_WIDTH)/COL_NUM, j+1, CARD_WIDTH, CARD_HEIGHT-1); 889 rb->lcd_set_drawmode(DRMODE_SOLID|DRMODE_INVERSEVID);
890 rb->lcd_fillrect(i*(LCD_WIDTH - CARD_WIDTH)/COL_NUM, j+1, CARD_WIDTH, CARD_HEIGHT-1);
891 rb->lcd_set_drawmode(DRMODE_SOLID);
886 /* known card */ 892 /* known card */
887 if(deck[c].known){ 893 if(deck[c].known){
888 rb->lcd_bitmap(numbers[deck[c].num], i*(LCD_WIDTH - CARD_WIDTH)/COL_NUM+1, j, 8, 8, true); 894 rb->lcd_bitmap(numbers[deck[c].num], i*(LCD_WIDTH - CARD_WIDTH)/COL_NUM+1, j, 8, 8, true);
@@ -896,7 +902,9 @@ int solitaire(void){
896 } 902 }
897 /* cursor (or not) */ 903 /* cursor (or not) */
898 if(c == cur_card){ 904 if(c == cur_card){
899 rb->lcd_invertrect(i*(LCD_WIDTH - CARD_WIDTH)/COL_NUM+1, j+1, CARD_WIDTH-1, CARD_HEIGHT-1); 905 rb->lcd_set_drawmode(DRMODE_COMPLEMENT);
906 rb->lcd_fillrect(i*(LCD_WIDTH - CARD_WIDTH)/COL_NUM+1, j+1, CARD_WIDTH-1, CARD_HEIGHT-1);
907 rb->lcd_set_drawmode(DRMODE_SOLID);
900 /* go to the next card */ 908 /* go to the next card */
901 c = deck[c].next; 909 c = deck[c].next;
902 if(c == NOT_A_CARD) break; 910 if(c == NOT_A_CARD) break;
@@ -941,7 +949,9 @@ int solitaire(void){
941 rb->lcd_drawline(LCD_WIDTH - CARD_WIDTH+1,(i+1)*CARD_HEIGHT,LCD_WIDTH - 1,(i+1)*CARD_HEIGHT); 949 rb->lcd_drawline(LCD_WIDTH - CARD_WIDTH+1,(i+1)*CARD_HEIGHT,LCD_WIDTH - 1,(i+1)*CARD_HEIGHT);
942 /* draw the cursor on one of the stacks */ 950 /* draw the cursor on one of the stacks */
943 if(cur_col == STACKS_COL + i){ 951 if(cur_col == STACKS_COL + i){
944 rb->lcd_invertrect(LCD_WIDTH - CARD_WIDTH+1, i*CARD_HEIGHT + 1, CARD_WIDTH-1, CARD_HEIGHT-1); 952 rb->lcd_set_drawmode(DRMODE_COMPLEMENT);
953 rb->lcd_fillrect(LCD_WIDTH - CARD_WIDTH+1, i*CARD_HEIGHT + 1, CARD_WIDTH-1, CARD_HEIGHT-1);
954 rb->lcd_set_drawmode(DRMODE_SOLID);
945 } 955 }
946 } 956 }
947 957
@@ -952,16 +962,18 @@ int solitaire(void){
952 rb->lcd_drawline(LCD_WIDTH - CARD_WIDTH+1,LCD_HEIGHT-1,LCD_WIDTH - 1,LCD_HEIGHT-1); 962 rb->lcd_drawline(LCD_WIDTH - CARD_WIDTH+1,LCD_HEIGHT-1,LCD_WIDTH - 1,LCD_HEIGHT-1);
953 if(cur_rem != NOT_A_CARD){ 963 if(cur_rem != NOT_A_CARD){
954 rb->lcd_bitmap(numbers[deck[cur_rem].num], LCD_WIDTH - CARD_WIDTH+1, LCD_HEIGHT-CARD_HEIGHT, 8, 8, true); 964 rb->lcd_bitmap(numbers[deck[cur_rem].num], LCD_WIDTH - CARD_WIDTH+1, LCD_HEIGHT-CARD_HEIGHT, 8, 8, true);
955 rb->lcd_bitmap(colors[deck[cur_rem].color], LCD_WIDTH - CARD_WIDTH+7, LCD_HEIGHT-CARD_HEIGHT, 8, 8, true); 965 rb->lcd_bitmap(colors[deck[cur_rem].color], LCD_WIDTH - CARD_WIDTH+7, LCD_HEIGHT-CARD_HEIGHT, 8, 8, true);
956 /* draw a selected card */ 966 /* draw a selected card */
957 if(sel_card == cur_rem){ 967 if(sel_card == cur_rem){
958 rb->lcd_drawrect(LCD_WIDTH - CARD_WIDTH+1, LCD_HEIGHT-CARD_HEIGHT,CARD_WIDTH-1, CARD_HEIGHT-1); 968 rb->lcd_drawrect(LCD_WIDTH - CARD_WIDTH+1, LCD_HEIGHT-CARD_HEIGHT,CARD_WIDTH-1, CARD_HEIGHT-1);
959 } 969 }
960 } 970 }
961 } 971 }
962 /* draw the cursor */ 972 /* draw the cursor */
963 if(cur_col == REM_COL){ 973 if(cur_col == REM_COL){
964 rb->lcd_invertrect(LCD_WIDTH - CARD_WIDTH+1, LCD_HEIGHT-CARD_HEIGHT,CARD_WIDTH-1, CARD_HEIGHT-1); 974 rb->lcd_set_drawmode(DRMODE_COMPLEMENT);
975 rb->lcd_fillrect(LCD_WIDTH - CARD_WIDTH+1, LCD_HEIGHT-CARD_HEIGHT,CARD_WIDTH-1, CARD_HEIGHT-1);
976 rb->lcd_set_drawmode(DRMODE_SOLID);
965 } 977 }
966 978
967 979