diff options
Diffstat (limited to 'apps/plugins/wormlet.c')
-rw-r--r-- | apps/plugins/wormlet.c | 41 |
1 files changed, 27 insertions, 14 deletions
diff --git a/apps/plugins/wormlet.c b/apps/plugins/wormlet.c index 4c7d7ee950..e0e33b6801 100644 --- a/apps/plugins/wormlet.c +++ b/apps/plugins/wormlet.c | |||
@@ -535,9 +535,11 @@ static int make_food(int index) { | |||
535 | static void clear_food(int index) | 535 | static void clear_food(int index) |
536 | { | 536 | { |
537 | /* remove the old food from the screen */ | 537 | /* remove the old food from the screen */ |
538 | rb->lcd_clearrect(foodx[index] + FIELD_RECT_X, | 538 | rb->lcd_set_drawmode(DRMODE_SOLID|DRMODE_INVERSEVID); |
539 | foody[index] + FIELD_RECT_Y, | 539 | rb->lcd_fillrect(foodx[index] + FIELD_RECT_X, |
540 | FOOD_SIZE, FOOD_SIZE); | 540 | foody[index] + FIELD_RECT_Y, |
541 | FOOD_SIZE, FOOD_SIZE); | ||
542 | rb->lcd_set_drawmode(DRMODE_SOLID); | ||
541 | } | 543 | } |
542 | 544 | ||
543 | /** | 545 | /** |
@@ -550,11 +552,13 @@ static void draw_food(int index) | |||
550 | { | 552 | { |
551 | /* draw the food object */ | 553 | /* draw the food object */ |
552 | rb->lcd_fillrect(foodx[index] + FIELD_RECT_X, | 554 | rb->lcd_fillrect(foodx[index] + FIELD_RECT_X, |
553 | foody[index] + FIELD_RECT_Y, | 555 | foody[index] + FIELD_RECT_Y, |
554 | FOOD_SIZE, FOOD_SIZE); | 556 | FOOD_SIZE, FOOD_SIZE); |
555 | rb->lcd_clearrect(foodx[index] + FIELD_RECT_X + 1, | 557 | rb->lcd_set_drawmode(DRMODE_SOLID|DRMODE_INVERSEVID); |
556 | foody[index] + FIELD_RECT_Y + 1, | 558 | rb->lcd_fillrect(foodx[index] + FIELD_RECT_X + 1, |
557 | FOOD_SIZE - 2, FOOD_SIZE - 2); | 559 | foody[index] + FIELD_RECT_Y + 1, |
560 | FOOD_SIZE - 2, FOOD_SIZE - 2); | ||
561 | rb->lcd_set_drawmode(DRMODE_SOLID); | ||
558 | } | 562 | } |
559 | 563 | ||
560 | /** | 564 | /** |
@@ -742,8 +746,10 @@ static void init_wormlet(void) | |||
742 | } | 746 | } |
743 | 747 | ||
744 | /* draw the game field */ | 748 | /* draw the game field */ |
745 | rb->lcd_invertrect(0, 0, FIELD_RECT_WIDTH + 2, FIELD_RECT_HEIGHT + 2); | 749 | rb->lcd_set_drawmode(DRMODE_COMPLEMENT); |
746 | rb->lcd_invertrect(1, 1, FIELD_RECT_WIDTH, FIELD_RECT_HEIGHT); | 750 | rb->lcd_fillrect(0, 0, FIELD_RECT_WIDTH + 2, FIELD_RECT_HEIGHT + 2); |
751 | rb->lcd_fillrect(1, 1, FIELD_RECT_WIDTH, FIELD_RECT_HEIGHT); | ||
752 | rb->lcd_set_drawmode(DRMODE_SOLID); | ||
747 | 753 | ||
748 | /* make everything visible */ | 754 | /* make everything visible */ |
749 | rb->lcd_update(); | 755 | rb->lcd_update(); |
@@ -841,12 +847,15 @@ static void draw_worm(struct worm *w) | |||
841 | rb->lcd_drawpixel(x + FIELD_RECT_X, y + FIELD_RECT_Y); | 847 | rb->lcd_drawpixel(x + FIELD_RECT_X, y + FIELD_RECT_Y); |
842 | } | 848 | } |
843 | 849 | ||
850 | rb->lcd_set_drawmode(DRMODE_SOLID|DRMODE_INVERSEVID); | ||
851 | |||
844 | /* clear the space behind the worm */ | 852 | /* clear the space behind the worm */ |
845 | x = w->x[w->tail] ; | 853 | x = w->x[w->tail] ; |
846 | y = w->y[w->tail] ; | 854 | y = w->y[w->tail] ; |
847 | if (x >= 0 && x < FIELD_RECT_WIDTH && y >= 0 && y < FIELD_RECT_HEIGHT) { | 855 | if (x >= 0 && x < FIELD_RECT_WIDTH && y >= 0 && y < FIELD_RECT_HEIGHT) { |
848 | rb->lcd_clearpixel(x + FIELD_RECT_X, y + FIELD_RECT_Y); | 856 | rb->lcd_drawpixel(x + FIELD_RECT_X, y + FIELD_RECT_Y); |
849 | } | 857 | } |
858 | rb->lcd_set_drawmode(DRMODE_SOLID); | ||
850 | } | 859 | } |
851 | 860 | ||
852 | /** | 861 | /** |
@@ -1155,7 +1164,9 @@ static void score_board(void) | |||
1155 | char* buf2 = NULL; | 1164 | char* buf2 = NULL; |
1156 | int i; | 1165 | int i; |
1157 | int y = 0; | 1166 | int y = 0; |
1158 | rb->lcd_clearrect(FIELD_RECT_WIDTH + 2, 0, LCD_WIDTH - FIELD_RECT_WIDTH - 2, LCD_HEIGHT); | 1167 | rb->lcd_set_drawmode(DRMODE_SOLID|DRMODE_INVERSEVID); |
1168 | rb->lcd_fillrect(FIELD_RECT_WIDTH + 2, 0, LCD_WIDTH - FIELD_RECT_WIDTH - 2, LCD_HEIGHT); | ||
1169 | rb->lcd_set_drawmode(DRMODE_SOLID); | ||
1159 | for (i = 0; i < worm_count; i++) { | 1170 | for (i = 0; i < worm_count; i++) { |
1160 | int score = get_score(&worms[i]); | 1171 | int score = get_score(&worms[i]); |
1161 | 1172 | ||
@@ -1202,8 +1213,10 @@ static void score_board(void) | |||
1202 | rb->lcd_putsxy(FIELD_RECT_WIDTH + 3, y+8, buf2); | 1213 | rb->lcd_putsxy(FIELD_RECT_WIDTH + 3, y+8, buf2); |
1203 | 1214 | ||
1204 | if (!worms[i].alive){ | 1215 | if (!worms[i].alive){ |
1205 | rb->lcd_invertrect(FIELD_RECT_WIDTH + 2, y, | 1216 | rb->lcd_set_drawmode(DRMODE_COMPLEMENT); |
1206 | LCD_WIDTH - FIELD_RECT_WIDTH - 2, 17); | 1217 | rb->lcd_fillrect(FIELD_RECT_WIDTH + 2, y, |
1218 | LCD_WIDTH - FIELD_RECT_WIDTH - 2, 17); | ||
1219 | rb->lcd_set_drawmode(DRMODE_SOLID); | ||
1207 | } | 1220 | } |
1208 | y += 19; | 1221 | y += 19; |
1209 | } | 1222 | } |