summaryrefslogtreecommitdiff
path: root/apps/plugins
diff options
context:
space:
mode:
Diffstat (limited to 'apps/plugins')
-rw-r--r--apps/plugins/jewels.c87
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();