diff options
Diffstat (limited to 'apps/plugins/brickmania.c')
-rw-r--r-- | apps/plugins/brickmania.c | 204 |
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 | ||
107 | static struct plugin_api* rb; | 107 | static struct plugin_api* rb; |
108 | 108 | ||
109 | enum 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) |
111 | extern const fb_data brickmania_menu_bg[]; | 123 | extern const fb_data brickmania_menu_bg[]; |
112 | extern const fb_data brickmania_gameover[]; | 124 | extern const fb_data brickmania_gameover[]; |
113 | #endif | 125 | #endif |
126 | extern const fb_data brickmania_menu_items[]; | ||
114 | extern const fb_data brickmania_ball[]; | 127 | extern const fb_data brickmania_ball[]; |
115 | extern const fb_data brickmania_help[]; | ||
116 | extern const fb_data brickmania_no_resume[]; | ||
117 | extern const fb_data brickmania_quit[]; | ||
118 | extern const fb_data brickmania_resume[]; | ||
119 | extern const fb_data brickmania_sel_help[]; | ||
120 | extern const fb_data brickmania_sel_quit[]; | ||
121 | extern const fb_data brickmania_sel_resume[]; | ||
122 | extern const fb_data brickmania_sel_start[]; | ||
123 | extern const fb_data brickmania_start[]; | ||
124 | #ifdef HAVE_LCD_COLOR | 128 | #ifdef HAVE_LCD_COLOR |
125 | extern const fb_data brickmania_break[]; | 129 | extern 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 |
848 | int game_menu(int when) | 805 | int 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 */ |