diff options
author | Johannes Schwarz <ubuntuxer@rockbox.org> | 2009-07-14 17:40:48 +0000 |
---|---|---|
committer | Johannes Schwarz <ubuntuxer@rockbox.org> | 2009-07-14 17:40:48 +0000 |
commit | a6be0ae094e3e037f02997efb1388e4d13a57b2e (patch) | |
tree | 2ca3061e18644d1731e0c2ba0a7db301c970f765 /apps | |
parent | c92652ecb1ad024020435b8038d8f83c400fcddd (diff) | |
download | rockbox-a6be0ae094e3e037f02997efb1388e4d13a57b2e.tar.gz rockbox-a6be0ae094e3e037f02997efb1388e4d13a57b2e.zip |
Make the progress bar in game mode puzzle shows the level process (part of FS#10139)
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@21866 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps')
-rw-r--r-- | apps/plugins/jewels.c | 87 |
1 files changed, 50 insertions, 37 deletions
diff --git a/apps/plugins/jewels.c b/apps/plugins/jewels.c index f19c63fd24..725c036800 100644 --- a/apps/plugins/jewels.c +++ b/apps/plugins/jewels.c @@ -542,10 +542,17 @@ static void jewels_drawboard(struct game_context* bj) { int i, j; int w, h; unsigned int tempscore; + unsigned int size; char *title = "Level"; char str[10]; - tempscore = (bj->score>LEVEL_PTS ? LEVEL_PTS : bj->score); + if (bj->type == GAME_TYPE_NORMAL) { + tempscore = (bj->score>LEVEL_PTS ? LEVEL_PTS : bj->score); + size = LEVEL_PTS; + } else { + tempscore = (bj->level>NUM_PUZZLE_LEVELS ? NUM_PUZZLE_LEVELS : bj->level); + size = NUM_PUZZLE_LEVELS; + } /* clear screen */ rb->lcd_clear_display(); @@ -575,45 +582,47 @@ static void jewels_drawboard(struct game_context* bj) { /* draw separator lines */ jewels_setcolors(); rb->lcd_vline(BJ_WIDTH*TILE_WIDTH, 0, LCD_HEIGHT-1); + rb->lcd_hline(BJ_WIDTH*TILE_WIDTH, LCD_WIDTH-1, 18); rb->lcd_hline(BJ_WIDTH*TILE_WIDTH, LCD_WIDTH-1, LCD_HEIGHT-10); - + /* draw progress bar */ #ifdef HAVE_LCD_COLOR rb->lcd_set_foreground(LCD_RGBPACK(104, 63, 63)); #endif rb->lcd_fillrect(BJ_WIDTH*TILE_WIDTH+(LCD_WIDTH-BJ_WIDTH*TILE_WIDTH)/4, (LCD_HEIGHT-10)-(((LCD_HEIGHT-10)-18)* - tempscore/LEVEL_PTS), + tempscore/size), (LCD_WIDTH-BJ_WIDTH*TILE_WIDTH)/2, - ((LCD_HEIGHT-10)-18)*tempscore/LEVEL_PTS); + ((LCD_HEIGHT-10)-18)*tempscore/size); #ifdef HAVE_LCD_COLOR rb->lcd_set_foreground(LCD_RGBPACK(83, 44, 44)); rb->lcd_drawrect(BJ_WIDTH*TILE_WIDTH+(LCD_WIDTH-BJ_WIDTH*TILE_WIDTH)/4+1, (LCD_HEIGHT-10)-(((LCD_HEIGHT-10)-18)* - tempscore/LEVEL_PTS)+1, + tempscore/size)+1, (LCD_WIDTH-BJ_WIDTH*TILE_WIDTH)/2-2, - ((LCD_HEIGHT-10)-18)*tempscore/LEVEL_PTS-1); + ((LCD_HEIGHT-10)-18)*tempscore/size-1); jewels_setcolors(); rb->lcd_drawrect(BJ_WIDTH*TILE_WIDTH+(LCD_WIDTH-BJ_WIDTH*TILE_WIDTH)/4, - (LCD_HEIGHT-10)-(((LCD_HEIGHT-10)-18)* - tempscore/LEVEL_PTS), + (LCD_HEIGHT-10)-(((LCD_HEIGHT-10)-18)*tempscore/size), (LCD_WIDTH-BJ_WIDTH*TILE_WIDTH)/2, - ((LCD_HEIGHT-10)-18)*tempscore/LEVEL_PTS+1); + ((LCD_HEIGHT-10)-18)*tempscore/size+1); #endif + if (bj->type == GAME_TYPE_NORMAL) { + rb->snprintf(str, 6, "%d", (bj->level-1)*LEVEL_PTS+bj->score); + rb->lcd_getstringsize(str, &w, &h); + rb->lcd_putsxy(LCD_WIDTH-(LCD_WIDTH-BJ_WIDTH*TILE_WIDTH)/2-w/2, + LCD_HEIGHT-8, str); + } + /* print text */ rb->lcd_getstringsize(title, &w, &h); rb->lcd_putsxy(LCD_WIDTH-(LCD_WIDTH-BJ_WIDTH*TILE_WIDTH)/2-w/2, 1, title); - rb->snprintf(str, 4, "%d", bj->level); rb->lcd_getstringsize(str, &w, &h); rb->lcd_putsxy(LCD_WIDTH-(LCD_WIDTH-BJ_WIDTH*TILE_WIDTH)/2-w/2, 10, str); - rb->snprintf(str, 6, "%d", (bj->level-1)*LEVEL_PTS+bj->score); - rb->lcd_getstringsize(str, &w, &h); - rb->lcd_putsxy(LCD_WIDTH-(LCD_WIDTH-BJ_WIDTH*TILE_WIDTH)/2-w/2, - LCD_HEIGHT-8, str); #elif LCD_WIDTH < LCD_HEIGHT /* vertical layout */ @@ -622,35 +631,38 @@ static void jewels_drawboard(struct game_context* bj) { rb->lcd_hline(0, LCD_WIDTH-1, 8*TILE_HEIGHT+YOFS); rb->lcd_hline(0, LCD_WIDTH-1, LCD_HEIGHT-14); rb->lcd_vline(LCD_WIDTH/2, LCD_HEIGHT-14, LCD_HEIGHT-1); - + /* draw progress bar */ #ifdef HAVE_LCD_COLOR rb->lcd_set_foreground(LCD_RGBPACK(104, 63, 63)); #endif rb->lcd_fillrect(0, (8*TILE_HEIGHT+YOFS) - +(LCD_HEIGHT-14-(8*TILE_HEIGHT+YOFS))/4, - LCD_WIDTH*tempscore/LEVEL_PTS, + +(LCD_HEIGHT-14-(8*TILE_HEIGHT+YOFS))/4, + LCD_WIDTH*tempscore/size, (LCD_HEIGHT-14-(8*TILE_HEIGHT+YOFS))/2); #ifdef HAVE_LCD_COLOR rb->lcd_set_foreground(LCD_RGBPACK(83, 44, 44)); rb->lcd_drawrect(1, (8*TILE_HEIGHT+YOFS) - +(LCD_HEIGHT-14-(8*TILE_HEIGHT+YOFS))/4+1, - LCD_WIDTH*tempscore/LEVEL_PTS-1, + +(LCD_HEIGHT-14-(8*TILE_HEIGHT+YOFS))/4+1, + LCD_WIDTH*tempscore/size-1, (LCD_HEIGHT-14-(8*TILE_HEIGHT+YOFS))/2-2); jewels_setcolors(); rb->lcd_drawrect(0, (8*TILE_HEIGHT+YOFS) - +(LCD_HEIGHT-14-(8*TILE_HEIGHT+YOFS))/4, - LCD_WIDTH*tempscore/LEVEL_PTS+1, + +(LCD_HEIGHT-14-(8*TILE_HEIGHT+YOFS))/4, + LCD_WIDTH*tempscore/size+1, (LCD_HEIGHT-14-(8*TILE_HEIGHT+YOFS))/2); #endif - + + if (bj->type == GAME_TYPE_NORMAL) { + rb->snprintf(str, 6, "%d", (bj->level-1)*LEVEL_PTS+bj->score); + rb->lcd_getstringsize(str, &w, &h); + rb->lcd_putsxy((LCD_WIDTH-2)-w, LCD_HEIGHT-10, str); + } + /* print text */ rb->snprintf(str, 10, "%s %d", title, bj->level); rb->lcd_putsxy(1, LCD_HEIGHT-10, str); - rb->snprintf(str, 6, "%d", (bj->level-1)*LEVEL_PTS+bj->score); - rb->lcd_getstringsize(str, &w, &h); - rb->lcd_putsxy((LCD_WIDTH-2)-w, LCD_HEIGHT-10, str); #else /* square layout */ @@ -665,34 +677,35 @@ static void jewels_drawboard(struct game_context* bj) { rb->lcd_set_foreground(LCD_RGBPACK(104, 63, 63)); #endif rb->lcd_fillrect(BJ_WIDTH*TILE_WIDTH+(LCD_WIDTH-BJ_WIDTH*TILE_WIDTH)/4, - (8*TILE_HEIGHT+YOFS)-(8*TILE_HEIGHT+YOFS) - *tempscore/LEVEL_PTS, + (8*TILE_HEIGHT+YOFS)-(8*TILE_HEIGHT+YOFS)*tempscore/size, (LCD_WIDTH-BJ_WIDTH*TILE_WIDTH)/2, - (8*TILE_HEIGHT+YOFS)*tempscore/LEVEL_PTS); + (8*TILE_HEIGHT+YOFS)*tempscore/size); #ifdef HAVE_LCD_COLOR rb->lcd_set_foreground(LCD_RGBPACK(83, 44, 44)); rb->lcd_drawrect(BJ_WIDTH*TILE_WIDTH+(LCD_WIDTH-BJ_WIDTH*TILE_WIDTH)/4+1, (8*TILE_HEIGHT+YOFS)-(8*TILE_HEIGHT+YOFS) - *tempscore/LEVEL_PTS+1, + *tempscore/size+1, (LCD_WIDTH-BJ_WIDTH*TILE_WIDTH)/2-2, - (8*TILE_HEIGHT+YOFS)*tempscore/LEVEL_PTS-1); + (8*TILE_HEIGHT+YOFS)*tempscore/size-1); jewels_setcolors(); rb->lcd_drawrect(BJ_WIDTH*TILE_WIDTH+(LCD_WIDTH-BJ_WIDTH*TILE_WIDTH)/4, (8*TILE_HEIGHT+YOFS)-(8*TILE_HEIGHT+YOFS) - *tempscore/LEVEL_PTS, + *tempscore/size, (LCD_WIDTH-BJ_WIDTH*TILE_WIDTH)/2, - (8*TILE_HEIGHT+YOFS)*tempscore/LEVEL_PTS+1); + (8*TILE_HEIGHT+YOFS)*tempscore/size+1); #endif + + if (bj->type == GAME_TYPE_NORMAL) { + rb->snprintf(str, 6, "%d", (bj->level-1)*LEVEL_PTS+bj->score); + rb->lcd_getstringsize(str, &w, &h); + rb->lcd_putsxy((LCD_WIDTH-2)-w, + LCD_HEIGHT-(LCD_HEIGHT-(8*TILE_HEIGHT+YOFS))/2-3, str); + } /* print text */ rb->snprintf(str, 10, "%s %d", title, bj->level); rb->lcd_putsxy(1, LCD_HEIGHT-(LCD_HEIGHT-(8*TILE_HEIGHT+YOFS))/2-3, str); - rb->snprintf(str, 6, "%d", (bj->level-1)*LEVEL_PTS+bj->score); - rb->lcd_getstringsize(str, &w, &h); - rb->lcd_putsxy((LCD_WIDTH-2)-w, - LCD_HEIGHT-(LCD_HEIGHT-(8*TILE_HEIGHT+YOFS))/2-3, str); - #endif /* layout */ rb->lcd_update(); |