diff options
Diffstat (limited to 'apps/plugins/jewels.c')
-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) { | |||
542 | int i, j; | 542 | int i, j; |
543 | int w, h; | 543 | int w, h; |
544 | unsigned int tempscore; | 544 | unsigned int tempscore; |
545 | unsigned int size; | ||
545 | char *title = "Level"; | 546 | char *title = "Level"; |
546 | char str[10]; | 547 | char str[10]; |
547 | 548 | ||
548 | tempscore = (bj->score>LEVEL_PTS ? LEVEL_PTS : bj->score); | 549 | if (bj->type == GAME_TYPE_NORMAL) { |
550 | tempscore = (bj->score>LEVEL_PTS ? LEVEL_PTS : bj->score); | ||
551 | size = LEVEL_PTS; | ||
552 | } else { | ||
553 | tempscore = (bj->level>NUM_PUZZLE_LEVELS ? NUM_PUZZLE_LEVELS : bj->level); | ||
554 | size = NUM_PUZZLE_LEVELS; | ||
555 | } | ||
549 | 556 | ||
550 | /* clear screen */ | 557 | /* clear screen */ |
551 | rb->lcd_clear_display(); | 558 | rb->lcd_clear_display(); |
@@ -575,45 +582,47 @@ static void jewels_drawboard(struct game_context* bj) { | |||
575 | /* draw separator lines */ | 582 | /* draw separator lines */ |
576 | jewels_setcolors(); | 583 | jewels_setcolors(); |
577 | rb->lcd_vline(BJ_WIDTH*TILE_WIDTH, 0, LCD_HEIGHT-1); | 584 | rb->lcd_vline(BJ_WIDTH*TILE_WIDTH, 0, LCD_HEIGHT-1); |
585 | |||
578 | rb->lcd_hline(BJ_WIDTH*TILE_WIDTH, LCD_WIDTH-1, 18); | 586 | rb->lcd_hline(BJ_WIDTH*TILE_WIDTH, LCD_WIDTH-1, 18); |
579 | rb->lcd_hline(BJ_WIDTH*TILE_WIDTH, LCD_WIDTH-1, LCD_HEIGHT-10); | 587 | rb->lcd_hline(BJ_WIDTH*TILE_WIDTH, LCD_WIDTH-1, LCD_HEIGHT-10); |
580 | 588 | ||
581 | /* draw progress bar */ | 589 | /* draw progress bar */ |
582 | #ifdef HAVE_LCD_COLOR | 590 | #ifdef HAVE_LCD_COLOR |
583 | rb->lcd_set_foreground(LCD_RGBPACK(104, 63, 63)); | 591 | rb->lcd_set_foreground(LCD_RGBPACK(104, 63, 63)); |
584 | #endif | 592 | #endif |
585 | rb->lcd_fillrect(BJ_WIDTH*TILE_WIDTH+(LCD_WIDTH-BJ_WIDTH*TILE_WIDTH)/4, | 593 | rb->lcd_fillrect(BJ_WIDTH*TILE_WIDTH+(LCD_WIDTH-BJ_WIDTH*TILE_WIDTH)/4, |
586 | (LCD_HEIGHT-10)-(((LCD_HEIGHT-10)-18)* | 594 | (LCD_HEIGHT-10)-(((LCD_HEIGHT-10)-18)* |
587 | tempscore/LEVEL_PTS), | 595 | tempscore/size), |
588 | (LCD_WIDTH-BJ_WIDTH*TILE_WIDTH)/2, | 596 | (LCD_WIDTH-BJ_WIDTH*TILE_WIDTH)/2, |
589 | ((LCD_HEIGHT-10)-18)*tempscore/LEVEL_PTS); | 597 | ((LCD_HEIGHT-10)-18)*tempscore/size); |
590 | #ifdef HAVE_LCD_COLOR | 598 | #ifdef HAVE_LCD_COLOR |
591 | rb->lcd_set_foreground(LCD_RGBPACK(83, 44, 44)); | 599 | rb->lcd_set_foreground(LCD_RGBPACK(83, 44, 44)); |
592 | rb->lcd_drawrect(BJ_WIDTH*TILE_WIDTH+(LCD_WIDTH-BJ_WIDTH*TILE_WIDTH)/4+1, | 600 | rb->lcd_drawrect(BJ_WIDTH*TILE_WIDTH+(LCD_WIDTH-BJ_WIDTH*TILE_WIDTH)/4+1, |
593 | (LCD_HEIGHT-10)-(((LCD_HEIGHT-10)-18)* | 601 | (LCD_HEIGHT-10)-(((LCD_HEIGHT-10)-18)* |
594 | tempscore/LEVEL_PTS)+1, | 602 | tempscore/size)+1, |
595 | (LCD_WIDTH-BJ_WIDTH*TILE_WIDTH)/2-2, | 603 | (LCD_WIDTH-BJ_WIDTH*TILE_WIDTH)/2-2, |
596 | ((LCD_HEIGHT-10)-18)*tempscore/LEVEL_PTS-1); | 604 | ((LCD_HEIGHT-10)-18)*tempscore/size-1); |
597 | jewels_setcolors(); | 605 | jewels_setcolors(); |
598 | rb->lcd_drawrect(BJ_WIDTH*TILE_WIDTH+(LCD_WIDTH-BJ_WIDTH*TILE_WIDTH)/4, | 606 | rb->lcd_drawrect(BJ_WIDTH*TILE_WIDTH+(LCD_WIDTH-BJ_WIDTH*TILE_WIDTH)/4, |
599 | (LCD_HEIGHT-10)-(((LCD_HEIGHT-10)-18)* | 607 | (LCD_HEIGHT-10)-(((LCD_HEIGHT-10)-18)*tempscore/size), |
600 | tempscore/LEVEL_PTS), | ||
601 | (LCD_WIDTH-BJ_WIDTH*TILE_WIDTH)/2, | 608 | (LCD_WIDTH-BJ_WIDTH*TILE_WIDTH)/2, |
602 | ((LCD_HEIGHT-10)-18)*tempscore/LEVEL_PTS+1); | 609 | ((LCD_HEIGHT-10)-18)*tempscore/size+1); |
603 | #endif | 610 | #endif |
604 | 611 | ||
612 | if (bj->type == GAME_TYPE_NORMAL) { | ||
613 | rb->snprintf(str, 6, "%d", (bj->level-1)*LEVEL_PTS+bj->score); | ||
614 | rb->lcd_getstringsize(str, &w, &h); | ||
615 | rb->lcd_putsxy(LCD_WIDTH-(LCD_WIDTH-BJ_WIDTH*TILE_WIDTH)/2-w/2, | ||
616 | LCD_HEIGHT-8, str); | ||
617 | } | ||
618 | |||
605 | /* print text */ | 619 | /* print text */ |
606 | rb->lcd_getstringsize(title, &w, &h); | 620 | rb->lcd_getstringsize(title, &w, &h); |
607 | rb->lcd_putsxy(LCD_WIDTH-(LCD_WIDTH-BJ_WIDTH*TILE_WIDTH)/2-w/2, 1, title); | 621 | rb->lcd_putsxy(LCD_WIDTH-(LCD_WIDTH-BJ_WIDTH*TILE_WIDTH)/2-w/2, 1, title); |
608 | |||
609 | rb->snprintf(str, 4, "%d", bj->level); | 622 | rb->snprintf(str, 4, "%d", bj->level); |
610 | rb->lcd_getstringsize(str, &w, &h); | 623 | rb->lcd_getstringsize(str, &w, &h); |
611 | rb->lcd_putsxy(LCD_WIDTH-(LCD_WIDTH-BJ_WIDTH*TILE_WIDTH)/2-w/2, 10, str); | 624 | rb->lcd_putsxy(LCD_WIDTH-(LCD_WIDTH-BJ_WIDTH*TILE_WIDTH)/2-w/2, 10, str); |
612 | 625 | ||
613 | rb->snprintf(str, 6, "%d", (bj->level-1)*LEVEL_PTS+bj->score); | ||
614 | rb->lcd_getstringsize(str, &w, &h); | ||
615 | rb->lcd_putsxy(LCD_WIDTH-(LCD_WIDTH-BJ_WIDTH*TILE_WIDTH)/2-w/2, | ||
616 | LCD_HEIGHT-8, str); | ||
617 | 626 | ||
618 | #elif LCD_WIDTH < LCD_HEIGHT /* vertical layout */ | 627 | #elif LCD_WIDTH < LCD_HEIGHT /* vertical layout */ |
619 | 628 | ||
@@ -622,35 +631,38 @@ static void jewels_drawboard(struct game_context* bj) { | |||
622 | rb->lcd_hline(0, LCD_WIDTH-1, 8*TILE_HEIGHT+YOFS); | 631 | rb->lcd_hline(0, LCD_WIDTH-1, 8*TILE_HEIGHT+YOFS); |
623 | rb->lcd_hline(0, LCD_WIDTH-1, LCD_HEIGHT-14); | 632 | rb->lcd_hline(0, LCD_WIDTH-1, LCD_HEIGHT-14); |
624 | rb->lcd_vline(LCD_WIDTH/2, LCD_HEIGHT-14, LCD_HEIGHT-1); | 633 | rb->lcd_vline(LCD_WIDTH/2, LCD_HEIGHT-14, LCD_HEIGHT-1); |
625 | 634 | ||
626 | /* draw progress bar */ | 635 | /* draw progress bar */ |
627 | #ifdef HAVE_LCD_COLOR | 636 | #ifdef HAVE_LCD_COLOR |
628 | rb->lcd_set_foreground(LCD_RGBPACK(104, 63, 63)); | 637 | rb->lcd_set_foreground(LCD_RGBPACK(104, 63, 63)); |
629 | #endif | 638 | #endif |
630 | rb->lcd_fillrect(0, (8*TILE_HEIGHT+YOFS) | 639 | rb->lcd_fillrect(0, (8*TILE_HEIGHT+YOFS) |
631 | +(LCD_HEIGHT-14-(8*TILE_HEIGHT+YOFS))/4, | 640 | +(LCD_HEIGHT-14-(8*TILE_HEIGHT+YOFS))/4, |
632 | LCD_WIDTH*tempscore/LEVEL_PTS, | 641 | LCD_WIDTH*tempscore/size, |
633 | (LCD_HEIGHT-14-(8*TILE_HEIGHT+YOFS))/2); | 642 | (LCD_HEIGHT-14-(8*TILE_HEIGHT+YOFS))/2); |
634 | #ifdef HAVE_LCD_COLOR | 643 | #ifdef HAVE_LCD_COLOR |
635 | rb->lcd_set_foreground(LCD_RGBPACK(83, 44, 44)); | 644 | rb->lcd_set_foreground(LCD_RGBPACK(83, 44, 44)); |
636 | rb->lcd_drawrect(1, (8*TILE_HEIGHT+YOFS) | 645 | rb->lcd_drawrect(1, (8*TILE_HEIGHT+YOFS) |
637 | +(LCD_HEIGHT-14-(8*TILE_HEIGHT+YOFS))/4+1, | 646 | +(LCD_HEIGHT-14-(8*TILE_HEIGHT+YOFS))/4+1, |
638 | LCD_WIDTH*tempscore/LEVEL_PTS-1, | 647 | LCD_WIDTH*tempscore/size-1, |
639 | (LCD_HEIGHT-14-(8*TILE_HEIGHT+YOFS))/2-2); | 648 | (LCD_HEIGHT-14-(8*TILE_HEIGHT+YOFS))/2-2); |
640 | jewels_setcolors(); | 649 | jewels_setcolors(); |
641 | rb->lcd_drawrect(0, (8*TILE_HEIGHT+YOFS) | 650 | rb->lcd_drawrect(0, (8*TILE_HEIGHT+YOFS) |
642 | +(LCD_HEIGHT-14-(8*TILE_HEIGHT+YOFS))/4, | 651 | +(LCD_HEIGHT-14-(8*TILE_HEIGHT+YOFS))/4, |
643 | LCD_WIDTH*tempscore/LEVEL_PTS+1, | 652 | LCD_WIDTH*tempscore/size+1, |
644 | (LCD_HEIGHT-14-(8*TILE_HEIGHT+YOFS))/2); | 653 | (LCD_HEIGHT-14-(8*TILE_HEIGHT+YOFS))/2); |
645 | #endif | 654 | #endif |
646 | 655 | ||
656 | if (bj->type == GAME_TYPE_NORMAL) { | ||
657 | rb->snprintf(str, 6, "%d", (bj->level-1)*LEVEL_PTS+bj->score); | ||
658 | rb->lcd_getstringsize(str, &w, &h); | ||
659 | rb->lcd_putsxy((LCD_WIDTH-2)-w, LCD_HEIGHT-10, str); | ||
660 | } | ||
661 | |||
647 | /* print text */ | 662 | /* print text */ |
648 | rb->snprintf(str, 10, "%s %d", title, bj->level); | 663 | rb->snprintf(str, 10, "%s %d", title, bj->level); |
649 | rb->lcd_putsxy(1, LCD_HEIGHT-10, str); | 664 | rb->lcd_putsxy(1, LCD_HEIGHT-10, str); |
650 | 665 | ||
651 | rb->snprintf(str, 6, "%d", (bj->level-1)*LEVEL_PTS+bj->score); | ||
652 | rb->lcd_getstringsize(str, &w, &h); | ||
653 | rb->lcd_putsxy((LCD_WIDTH-2)-w, LCD_HEIGHT-10, str); | ||
654 | 666 | ||
655 | #else /* square layout */ | 667 | #else /* square layout */ |
656 | 668 | ||
@@ -665,34 +677,35 @@ static void jewels_drawboard(struct game_context* bj) { | |||
665 | rb->lcd_set_foreground(LCD_RGBPACK(104, 63, 63)); | 677 | rb->lcd_set_foreground(LCD_RGBPACK(104, 63, 63)); |
666 | #endif | 678 | #endif |
667 | rb->lcd_fillrect(BJ_WIDTH*TILE_WIDTH+(LCD_WIDTH-BJ_WIDTH*TILE_WIDTH)/4, | 679 | rb->lcd_fillrect(BJ_WIDTH*TILE_WIDTH+(LCD_WIDTH-BJ_WIDTH*TILE_WIDTH)/4, |
668 | (8*TILE_HEIGHT+YOFS)-(8*TILE_HEIGHT+YOFS) | 680 | (8*TILE_HEIGHT+YOFS)-(8*TILE_HEIGHT+YOFS)*tempscore/size, |
669 | *tempscore/LEVEL_PTS, | ||
670 | (LCD_WIDTH-BJ_WIDTH*TILE_WIDTH)/2, | 681 | (LCD_WIDTH-BJ_WIDTH*TILE_WIDTH)/2, |
671 | (8*TILE_HEIGHT+YOFS)*tempscore/LEVEL_PTS); | 682 | (8*TILE_HEIGHT+YOFS)*tempscore/size); |
672 | #ifdef HAVE_LCD_COLOR | 683 | #ifdef HAVE_LCD_COLOR |
673 | rb->lcd_set_foreground(LCD_RGBPACK(83, 44, 44)); | 684 | rb->lcd_set_foreground(LCD_RGBPACK(83, 44, 44)); |
674 | rb->lcd_drawrect(BJ_WIDTH*TILE_WIDTH+(LCD_WIDTH-BJ_WIDTH*TILE_WIDTH)/4+1, | 685 | rb->lcd_drawrect(BJ_WIDTH*TILE_WIDTH+(LCD_WIDTH-BJ_WIDTH*TILE_WIDTH)/4+1, |
675 | (8*TILE_HEIGHT+YOFS)-(8*TILE_HEIGHT+YOFS) | 686 | (8*TILE_HEIGHT+YOFS)-(8*TILE_HEIGHT+YOFS) |
676 | *tempscore/LEVEL_PTS+1, | 687 | *tempscore/size+1, |
677 | (LCD_WIDTH-BJ_WIDTH*TILE_WIDTH)/2-2, | 688 | (LCD_WIDTH-BJ_WIDTH*TILE_WIDTH)/2-2, |
678 | (8*TILE_HEIGHT+YOFS)*tempscore/LEVEL_PTS-1); | 689 | (8*TILE_HEIGHT+YOFS)*tempscore/size-1); |
679 | jewels_setcolors(); | 690 | jewels_setcolors(); |
680 | rb->lcd_drawrect(BJ_WIDTH*TILE_WIDTH+(LCD_WIDTH-BJ_WIDTH*TILE_WIDTH)/4, | 691 | rb->lcd_drawrect(BJ_WIDTH*TILE_WIDTH+(LCD_WIDTH-BJ_WIDTH*TILE_WIDTH)/4, |
681 | (8*TILE_HEIGHT+YOFS)-(8*TILE_HEIGHT+YOFS) | 692 | (8*TILE_HEIGHT+YOFS)-(8*TILE_HEIGHT+YOFS) |
682 | *tempscore/LEVEL_PTS, | 693 | *tempscore/size, |
683 | (LCD_WIDTH-BJ_WIDTH*TILE_WIDTH)/2, | 694 | (LCD_WIDTH-BJ_WIDTH*TILE_WIDTH)/2, |
684 | (8*TILE_HEIGHT+YOFS)*tempscore/LEVEL_PTS+1); | 695 | (8*TILE_HEIGHT+YOFS)*tempscore/size+1); |
685 | #endif | 696 | #endif |
697 | |||
698 | if (bj->type == GAME_TYPE_NORMAL) { | ||
699 | rb->snprintf(str, 6, "%d", (bj->level-1)*LEVEL_PTS+bj->score); | ||
700 | rb->lcd_getstringsize(str, &w, &h); | ||
701 | rb->lcd_putsxy((LCD_WIDTH-2)-w, | ||
702 | LCD_HEIGHT-(LCD_HEIGHT-(8*TILE_HEIGHT+YOFS))/2-3, str); | ||
703 | } | ||
686 | 704 | ||
687 | /* print text */ | 705 | /* print text */ |
688 | rb->snprintf(str, 10, "%s %d", title, bj->level); | 706 | rb->snprintf(str, 10, "%s %d", title, bj->level); |
689 | rb->lcd_putsxy(1, LCD_HEIGHT-(LCD_HEIGHT-(8*TILE_HEIGHT+YOFS))/2-3, str); | 707 | rb->lcd_putsxy(1, LCD_HEIGHT-(LCD_HEIGHT-(8*TILE_HEIGHT+YOFS))/2-3, str); |
690 | 708 | ||
691 | rb->snprintf(str, 6, "%d", (bj->level-1)*LEVEL_PTS+bj->score); | ||
692 | rb->lcd_getstringsize(str, &w, &h); | ||
693 | rb->lcd_putsxy((LCD_WIDTH-2)-w, | ||
694 | LCD_HEIGHT-(LCD_HEIGHT-(8*TILE_HEIGHT+YOFS))/2-3, str); | ||
695 | |||
696 | #endif /* layout */ | 709 | #endif /* layout */ |
697 | 710 | ||
698 | rb->lcd_update(); | 711 | rb->lcd_update(); |