diff options
Diffstat (limited to 'apps/plugins/solitaire.c')
-rw-r--r-- | apps/plugins/solitaire.c | 34 |
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 | ||