summaryrefslogtreecommitdiff
path: root/apps/plugins/brickmania.c
diff options
context:
space:
mode:
Diffstat (limited to 'apps/plugins/brickmania.c')
-rw-r--r--apps/plugins/brickmania.c204
1 files changed, 115 insertions, 89 deletions
diff --git a/apps/plugins/brickmania.c b/apps/plugins/brickmania.c
index 7c9a2433c7..b5d0e47445 100644
--- a/apps/plugins/brickmania.c
+++ b/apps/plugins/brickmania.c
@@ -106,21 +106,25 @@ PLUGIN_HEADER
106 106
107static struct plugin_api* rb; 107static struct plugin_api* rb;
108 108
109enum menu_items {
110 BM_START,
111 BM_SEL_START,
112 BM_RESUME,
113 BM_SEL_RESUME,
114 BM_NO_RESUME,
115 BM_HELP,
116 BM_SEL_HELP,
117 BM_QUIT,
118 BM_SEL_QUIT,
119};
120
109/* External bitmaps */ 121/* External bitmaps */
110#if (LCD_WIDTH != 112) && (LCD_HEIGHT != 64) 122#if (LCD_WIDTH != 112) && (LCD_HEIGHT != 64)
111extern const fb_data brickmania_menu_bg[]; 123extern const fb_data brickmania_menu_bg[];
112extern const fb_data brickmania_gameover[]; 124extern const fb_data brickmania_gameover[];
113#endif 125#endif
126extern const fb_data brickmania_menu_items[];
114extern const fb_data brickmania_ball[]; 127extern const fb_data brickmania_ball[];
115extern const fb_data brickmania_help[];
116extern const fb_data brickmania_no_resume[];
117extern const fb_data brickmania_quit[];
118extern const fb_data brickmania_resume[];
119extern const fb_data brickmania_sel_help[];
120extern const fb_data brickmania_sel_quit[];
121extern const fb_data brickmania_sel_resume[];
122extern const fb_data brickmania_sel_start[];
123extern const fb_data brickmania_start[];
124#ifdef HAVE_LCD_COLOR 128#ifdef HAVE_LCD_COLOR
125extern const fb_data brickmania_break[]; 129extern const fb_data brickmania_break[];
126#endif 130#endif
@@ -159,17 +163,8 @@ extern const fb_data brickmania_bricks[];
159#define LEFTMARGIN 5 163#define LEFTMARGIN 5
160#define TOPMARGIN 30 164#define TOPMARGIN 30
161 165
162#define BMPHEIGHT_start 20 166#define MENU_BMPHEIGHT 20
163#define BMPWIDTH_start 112 167#define MENU_BMPWIDTH 112
164
165#define BMPHEIGHT_resume 17
166#define BMPWIDTH_resume 96
167
168#define BMPHEIGHT_help 19
169#define BMPWIDTH_help 37
170
171#define BMPHEIGHT_quit 19
172#define BMPWIDTH_quit 33
173 168
174#define BMPHEIGHT_powerup 6 169#define BMPHEIGHT_powerup 6
175#define BMPWIDTH_powerup 10 170#define BMPWIDTH_powerup 10
@@ -210,17 +205,8 @@ extern const fb_data brickmania_bricks[];
210#define LEFTMARGIN 5 205#define LEFTMARGIN 5
211#define TOPMARGIN 21 206#define TOPMARGIN 21
212 207
213#define BMPHEIGHT_start 16 208#define MENU_BMPHEIGHT 17
214#define BMPWIDTH_start 88 209#define MENU_BMPWIDTH 88
215
216#define BMPHEIGHT_resume 14
217#define BMPWIDTH_resume 78
218
219#define BMPHEIGHT_help 15
220#define BMPWIDTH_help 30
221
222#define BMPHEIGHT_quit 17
223#define BMPWIDTH_quit 30
224 210
225#define BMPHEIGHT_powerup 6 211#define BMPHEIGHT_powerup 6
226#define BMPWIDTH_powerup 10 212#define BMPWIDTH_powerup 10
@@ -277,17 +263,8 @@ extern const fb_data brickmania_bricks[];
277#define LEFTMARGIN 4 263#define LEFTMARGIN 4
278#define TOPMARGIN 10 264#define TOPMARGIN 10
279 265
280#define BMPHEIGHT_start 16 266#define MENU_BMPHEIGHT 17
281#define BMPWIDTH_start 88 267#define MENU_BMPWIDTH 88
282
283#define BMPHEIGHT_resume 14
284#define BMPWIDTH_resume 78
285
286#define BMPHEIGHT_help 15
287#define BMPWIDTH_help 30
288
289#define BMPHEIGHT_quit 17
290#define BMPWIDTH_quit 30
291 268
292#define BMPHEIGHT_powerup 6 269#define BMPHEIGHT_powerup 6
293#define BMPWIDTH_powerup 10 270#define BMPWIDTH_powerup 10
@@ -329,18 +306,8 @@ extern const fb_data brickmania_bricks[];
329#define LEFTMARGIN 1 306#define LEFTMARGIN 1
330#define TOPMARGIN 10 307#define TOPMARGIN 10
331 308
332#define BMPHEIGHT_start 9 309#define MENU_BMPHEIGHT 9
333#define BMPWIDTH_start 80 310#define MENU_BMPWIDTH 80
334
335#define BMPHEIGHT_resume 7
336#define BMPWIDTH_resume 71
337
338#define BMPHEIGHT_help 9
339#define BMPWIDTH_help 26
340
341#define BMPHEIGHT_quit 9
342#define BMPWIDTH_quit 25
343
344 311
345#define BMPHEIGHT_powerup 6 312#define BMPHEIGHT_powerup 6
346#define BMPWIDTH_powerup 7 313#define BMPWIDTH_powerup 7
@@ -378,17 +345,8 @@ extern const fb_data brickmania_bricks[];
378#define LEFTMARGIN 3 345#define LEFTMARGIN 3
379#define TOPMARGIN 21 346#define TOPMARGIN 21
380 347
381#define BMPHEIGHT_start 16 348#define MENU_BMPHEIGHT 16
382#define BMPWIDTH_start 89 349#define MENU_BMPWIDTH 89
383
384#define BMPHEIGHT_resume 13
385#define BMPWIDTH_resume 76
386
387#define BMPHEIGHT_help 14
388#define BMPWIDTH_help 28
389
390#define BMPHEIGHT_quit 14
391#define BMPWIDTH_quit 25
392 350
393#define BMPHEIGHT_powerup 6 351#define BMPHEIGHT_powerup 6
394#define BMPWIDTH_powerup 10 352#define BMPWIDTH_powerup 10
@@ -842,7 +800,6 @@ void sleep (int secs)
842 800
843} 801}
844 802
845
846#define HIGH_SCORE "brickmania.score" 803#define HIGH_SCORE "brickmania.score"
847#define MENU_LENGTH 4 804#define MENU_LENGTH 4
848int game_menu(int when) 805int game_menu(int when)
@@ -851,48 +808,117 @@ int game_menu(int when)
851 char str[10]; 808 char str[10];
852 rb->lcd_clear_display(); 809 rb->lcd_clear_display();
853#if (LCD_WIDTH != 112) && (LCD_HEIGHT != 64) 810#if (LCD_WIDTH != 112) && (LCD_HEIGHT != 64)
854 rb->lcd_bitmap(brickmania_menu_bg,0,0,BMPWIDTH_menu,BMPHEIGHT_menu); 811 rb->lcd_bitmap(brickmania_menu_bg, 0, 0, BMPWIDTH_menu, BMPHEIGHT_menu);
855#endif 812#endif
856 while (true) { 813 while (true) {
857 for(i=0;i<MENU_LENGTH;i++) { 814 for(i=0;i<MENU_LENGTH;i++) {
815#ifdef HAVE_LCD_COLOR
858 if (cur==0) 816 if (cur==0)
859 rb->lcd_bitmap(brickmania_sel_start, 817 rb->lcd_bitmap_transparent_part(brickmania_menu_items, 0,
860 BMPXOFS_start,BMPYOFS_start, 818 MENU_BMPHEIGHT * BM_SEL_START, MENU_BMPWIDTH,
861 BMPWIDTH_start,BMPHEIGHT_start); 819 BMPXOFS_start, BMPYOFS_start, MENU_BMPWIDTH,
820 MENU_BMPHEIGHT);
862 else 821 else
863 rb->lcd_bitmap(brickmania_start,BMPXOFS_start,BMPYOFS_start, 822 rb->lcd_bitmap_transparent_part(brickmania_menu_items, 0,
864 BMPWIDTH_start,BMPHEIGHT_start); 823 MENU_BMPHEIGHT * BM_START, MENU_BMPWIDTH,
824 BMPXOFS_start, BMPYOFS_start, MENU_BMPWIDTH,
825 MENU_BMPHEIGHT);
865 826
866 if (when==1) { 827 if (when==1) {
867 if (cur==1) 828 if (cur==1)
868 rb->lcd_bitmap(brickmania_sel_resume, 829 rb->lcd_bitmap_transparent_part(brickmania_menu_items, 0,
869 BMPXOFS_resume,BMPYOFS_resume, 830 MENU_BMPHEIGHT * BM_SEL_RESUME, MENU_BMPWIDTH,
870 BMPWIDTH_resume,BMPHEIGHT_resume); 831 BMPXOFS_resume, BMPYOFS_resume, MENU_BMPWIDTH,
832 MENU_BMPHEIGHT);
871 else 833 else
872 rb->lcd_bitmap(brickmania_resume, 834 rb->lcd_bitmap_transparent_part(brickmania_menu_items, 0,
873 BMPXOFS_resume,BMPYOFS_resume, 835 MENU_BMPHEIGHT * BM_RESUME, MENU_BMPWIDTH,
874 BMPWIDTH_resume,BMPHEIGHT_resume); 836 BMPXOFS_resume, BMPYOFS_resume, MENU_BMPWIDTH,
837 MENU_BMPHEIGHT);
875 838
876 } else { 839 } else {
877 rb->lcd_bitmap(brickmania_no_resume, 840 rb->lcd_bitmap_transparent_part(brickmania_menu_items, 0,
878 BMPXOFS_resume,BMPYOFS_resume, 841 MENU_BMPHEIGHT * BM_NO_RESUME, MENU_BMPWIDTH,
879 BMPWIDTH_resume,BMPHEIGHT_resume); 842 BMPXOFS_resume, BMPYOFS_resume, MENU_BMPWIDTH,
843 MENU_BMPHEIGHT);
880 } 844 }
881 845
882 846
883 if (cur==2) 847 if (cur==2)
884 rb->lcd_bitmap(brickmania_sel_help,BMPXOFS_help,BMPYOFS_help, 848 rb->lcd_bitmap_transparent_part(brickmania_menu_items, 0,
885 BMPWIDTH_help,BMPHEIGHT_help); 849 MENU_BMPHEIGHT * BM_SEL_HELP, MENU_BMPWIDTH,
850 BMPXOFS_help, BMPYOFS_help, MENU_BMPWIDTH,
851 MENU_BMPHEIGHT);
886 else 852 else
887 rb->lcd_bitmap(brickmania_help,BMPXOFS_help,BMPYOFS_help, 853 rb->lcd_bitmap_transparent_part(brickmania_menu_items, 0,
888 BMPWIDTH_help,BMPHEIGHT_help); 854 MENU_BMPHEIGHT * BM_HELP, MENU_BMPWIDTH,
855 BMPXOFS_help, BMPYOFS_help, MENU_BMPWIDTH,
856 MENU_BMPHEIGHT);
889 857
890 if (cur==3) 858 if (cur==3)
891 rb->lcd_bitmap(brickmania_sel_quit,BMPXOFS_quit,BMPYOFS_quit, 859 rb->lcd_bitmap_transparent_part(brickmania_menu_items, 0,
892 BMPWIDTH_quit,BMPHEIGHT_quit); 860 MENU_BMPHEIGHT * BM_SEL_QUIT, MENU_BMPWIDTH,
861 BMPXOFS_quit, BMPYOFS_quit, MENU_BMPWIDTH,
862 MENU_BMPHEIGHT);
893 else 863 else
894 rb->lcd_bitmap(brickmania_quit,BMPXOFS_quit,BMPYOFS_quit, 864 rb->lcd_bitmap_transparent_part(brickmania_menu_items, 0,
895 BMPWIDTH_quit,BMPHEIGHT_quit); 865 MENU_BMPHEIGHT * BM_QUIT, MENU_BMPWIDTH,
866 BMPXOFS_quit, BMPYOFS_quit, MENU_BMPWIDTH,
867 MENU_BMPHEIGHT);
868#else
869 if (cur==0)
870 rb->lcd_bitmap_part(brickmania_menu_items, 0,
871 MENU_BMPHEIGHT * BM_SEL_START, MENU_BMPWIDTH,
872 BMPXOFS_start, BMPYOFS_start, MENU_BMPWIDTH,
873 MENU_BMPHEIGHT);
874 else
875 rb->lcd_bitmap_part(brickmania_menu_items, 0,
876 MENU_BMPHEIGHT * BM_START, MENU_BMPWIDTH,
877 BMPXOFS_start, BMPYOFS_start, MENU_BMPWIDTH,
878 MENU_BMPHEIGHT);
879
880 if (when==1) {
881 if (cur==1)
882 rb->lcd_bitmap_part(brickmania_menu_items, 0,
883 MENU_BMPHEIGHT * BM_SEL_RESUME, MENU_BMPWIDTH,
884 BMPXOFS_resume, BMPYOFS_resume, MENU_BMPWIDTH,
885 MENU_BMPHEIGHT);
886 else
887 rb->lcd_bitmap_part(brickmania_menu_items, 0,
888 MENU_BMPHEIGHT * BM_RESUME, MENU_BMPWIDTH,
889 BMPXOFS_resume, BMPYOFS_resume, MENU_BMPWIDTH,
890 MENU_BMPHEIGHT);
891
892 } else {
893 rb->lcd_bitmap_part(brickmania_menu_items, 0,
894 MENU_BMPHEIGHT * BM_NO_RESUME, MENU_BMPWIDTH,
895 BMPXOFS_resume, BMPYOFS_resume, MENU_BMPWIDTH,
896 MENU_BMPHEIGHT);
897 }
898
899
900 if (cur==2)
901 rb->lcd_bitmap_part(brickmania_menu_items, 0,
902 MENU_BMPHEIGHT * BM_SEL_HELP, MENU_BMPWIDTH,
903 BMPXOFS_help, BMPYOFS_help, MENU_BMPWIDTH,
904 MENU_BMPHEIGHT);
905 else
906 rb->lcd_bitmap_part(brickmania_menu_items, 0,
907 MENU_BMPHEIGHT * BM_HELP, MENU_BMPWIDTH,
908 BMPXOFS_help, BMPYOFS_help, MENU_BMPWIDTH,
909 MENU_BMPHEIGHT);
910
911 if (cur==3)
912 rb->lcd_bitmap_part(brickmania_menu_items, 0,
913 MENU_BMPHEIGHT * BM_SEL_QUIT, MENU_BMPWIDTH,
914 BMPXOFS_quit, BMPYOFS_quit, MENU_BMPWIDTH,
915 MENU_BMPHEIGHT);
916 else
917 rb->lcd_bitmap_part(brickmania_menu_items, 0,
918 MENU_BMPHEIGHT * BM_QUIT, MENU_BMPWIDTH,
919 BMPXOFS_quit, BMPYOFS_quit, MENU_BMPWIDTH,
920 MENU_BMPHEIGHT);
921#endif
896 } 922 }
897 rb->lcd_set_drawmode(DRMODE_FG); 923 rb->lcd_set_drawmode(DRMODE_FG);
898 /* high score */ 924 /* high score */