summaryrefslogtreecommitdiff
path: root/apps/plugins/wormlet.c
diff options
context:
space:
mode:
Diffstat (limited to 'apps/plugins/wormlet.c')
-rw-r--r--apps/plugins/wormlet.c41
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) {
535static void clear_food(int index) 535static 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 }