diff options
author | Teruaki Kawashima <teru@rockbox.org> | 2009-07-14 13:03:17 +0000 |
---|---|---|
committer | Teruaki Kawashima <teru@rockbox.org> | 2009-07-14 13:03:17 +0000 |
commit | c72b23ad2e1b3a507a36b6223c0a35be9b746f0a (patch) | |
tree | 2cf43da7cca0ff2caf8544a1f3c48ac5d961701c | |
parent | e37f9f16915a1a05059aee931723c127a53a68e0 (diff) | |
download | rockbox-c72b23ad2e1b3a507a36b6223c0a35be9b746f0a.tar.gz rockbox-c72b23ad2e1b3a507a36b6223c0a35be9b746f0a.zip |
use lib display text to display help messages (FS#10099).
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@21861 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r-- | apps/plugins/brickmania.c | 284 | ||||
-rw-r--r-- | apps/plugins/clix.c | 36 | ||||
-rw-r--r-- | apps/plugins/jewels.c | 66 | ||||
-rw-r--r-- | apps/plugins/lib/display_text.c | 5 | ||||
-rw-r--r-- | apps/plugins/pegbox.c | 176 | ||||
-rw-r--r-- | apps/plugins/robotfindskitten.c | 49 | ||||
-rw-r--r-- | apps/plugins/solitaire.c | 172 | ||||
-rw-r--r-- | apps/plugins/star.c | 314 | ||||
-rw-r--r-- | apps/plugins/superdom.c | 53 |
9 files changed, 409 insertions, 746 deletions
diff --git a/apps/plugins/brickmania.c b/apps/plugins/brickmania.c index 2f11cef24e..f0229b4f8b 100644 --- a/apps/plugins/brickmania.c +++ b/apps/plugins/brickmania.c | |||
@@ -22,6 +22,7 @@ | |||
22 | #include "plugin.h" | 22 | #include "plugin.h" |
23 | #include "lib/configfile.h" /* Part of libplugin */ | 23 | #include "lib/configfile.h" /* Part of libplugin */ |
24 | #include "lib/helper.h" | 24 | #include "lib/helper.h" |
25 | #include "lib/display_text.h" | ||
25 | 26 | ||
26 | PLUGIN_HEADER | 27 | PLUGIN_HEADER |
27 | 28 | ||
@@ -1130,154 +1131,84 @@ int game_menu(int when) | |||
1130 | } | 1131 | } |
1131 | } | 1132 | } |
1132 | 1133 | ||
1133 | int help(int when) | 1134 | int help(void) |
1134 | { | 1135 | { |
1135 | int w,h; | ||
1136 | int button; | 1136 | int button; |
1137 | int xoffset=0; | 1137 | #define WORDS (sizeof help_text / sizeof (char*)) |
1138 | int yoffset=0; | 1138 | static char* help_text[] = { |
1139 | /* set the maximum x and y in the helpscreen | 1139 | "BrickMania", "", "Aim", "", |
1140 | dont forget to update, if you change text */ | 1140 | "Destroy", "all", "the", "bricks", "by", "bouncing", |
1141 | int maxY=180; | 1141 | "the", "ball", "of", "them", "using", "the", "paddle.", "", "", |
1142 | int maxX=215; | 1142 | "Controls", "", |
1143 | 1143 | "< & >", "Move", "the", "paddle", "", | |
1144 | while(true) { | ||
1145 | #ifdef HAVE_LCD_COLOR | ||
1146 | rb->lcd_set_background(LCD_BLACK); | ||
1147 | rb->lcd_clear_display(); | ||
1148 | rb->lcd_set_background(LCD_BLACK); | ||
1149 | rb->lcd_set_foreground(LCD_WHITE); | ||
1150 | #else | ||
1151 | rb->lcd_clear_display(); | ||
1152 | #endif | ||
1153 | |||
1154 | rb->lcd_getstringsize("BrickMania", &w, &h); | ||
1155 | rb->lcd_putsxy(LCD_WIDTH/2-w/2+xoffset, 1+yoffset, "BrickMania"); | ||
1156 | |||
1157 | #ifdef HAVE_LCD_COLOR | ||
1158 | rb->lcd_set_foreground(LCD_RGBPACK(245,0,0)); | ||
1159 | rb->lcd_putsxy(1+xoffset, 1*(h+2)+yoffset,"Aim"); | ||
1160 | rb->lcd_set_foreground(LCD_WHITE); | ||
1161 | #else | ||
1162 | rb->lcd_putsxy(1+xoffset, 1*(h+2)+yoffset,"Aim"); | ||
1163 | #endif | ||
1164 | rb->lcd_putsxy(1+xoffset, 2*(h+2)+yoffset, | ||
1165 | "destroy all the bricks by bouncing"); | ||
1166 | rb->lcd_putsxy(1+xoffset, 3*(h+2)+yoffset, | ||
1167 | "the ball of them using the paddle."); | ||
1168 | #ifdef HAVE_LCD_COLOR | ||
1169 | rb->lcd_set_foreground(LCD_RGBPACK(245,0,0)); | ||
1170 | rb->lcd_putsxy(1+xoffset, 5*(h+2)+yoffset,"Controls"); | ||
1171 | rb->lcd_set_foreground(LCD_WHITE); | ||
1172 | #else | ||
1173 | rb->lcd_putsxy(1+xoffset, 5*(h+2)+yoffset,"Controls"); | ||
1174 | #endif | ||
1175 | rb->lcd_putsxy(1+xoffset, 6*(h+2)+yoffset,"< & > Move the paddle"); | ||
1176 | #if CONFIG_KEYPAD == ONDIO_PAD | 1144 | #if CONFIG_KEYPAD == ONDIO_PAD |
1177 | rb->lcd_putsxy(1+xoffset, 7*(h+2)+yoffset, | 1145 | "MENU", |
1178 | "MENU Releases the ball/Fire!"); | ||
1179 | #elif (CONFIG_KEYPAD == RECORDER_PAD) || (CONFIG_KEYPAD == IAUDIO_M3_PAD) | 1146 | #elif (CONFIG_KEYPAD == RECORDER_PAD) || (CONFIG_KEYPAD == IAUDIO_M3_PAD) |
1180 | rb->lcd_putsxy(1+xoffset, 7*(h+2)+yoffset, | 1147 | "PLAY", |
1181 | "PLAY Releases the ball/Fire!"); | ||
1182 | #elif CONFIG_KEYPAD == IRIVER_H300_PAD | 1148 | #elif CONFIG_KEYPAD == IRIVER_H300_PAD |
1183 | rb->lcd_putsxy(1+xoffset, 7*(h+2)+yoffset, | 1149 | "NAVI", |
1184 | "NAVI Releases the ball/Fire!"); | ||
1185 | #else | 1150 | #else |
1186 | rb->lcd_putsxy(1+xoffset, 7*(h+2)+yoffset, | 1151 | "SELECT", |
1187 | "SELECT Releases the ball/Fire!"); | ||
1188 | #endif | 1152 | #endif |
1153 | "Releases", "the", "ball/", "Fire!", "", | ||
1189 | #if CONFIG_KEYPAD == IAUDIO_M3_PAD | 1154 | #if CONFIG_KEYPAD == IAUDIO_M3_PAD |
1190 | rb->lcd_putsxy(1+xoffset, 8*(h+2)+yoffset, "REC Opens menu/Quit"); | 1155 | "REC", |
1156 | #elif (CONFIG_KEYPAD == GIGABEAT_S_PAD) || \ | ||
1157 | (CONFIG_KEYPAD == CREATIVEZVM_PAD) | ||
1158 | "BACK", | ||
1159 | #elif (CONFIG_KEYPAD == IPOD_4G_PAD) || \ | ||
1160 | (CONFIG_KEYPAD == IPOD_3G_PAD) || \ | ||
1161 | (CONFIG_KEYPAD == IPOD_1G2G_PAD) | ||
1162 | "MENU", | ||
1163 | #elif (CONFIG_KEYPAD == IRIVER_H100_PAD) || \ | ||
1164 | (CONFIG_KEYPAD == IRIVER_H300_PAD) || \ | ||
1165 | (CONFIG_KEYPAD == ONDIO_PAD) || \ | ||
1166 | (CONFIG_KEYPAD == RECORDER_PAD) || \ | ||
1167 | (CONFIG_KEYPAD == ARCHOS_AV300_PAD) | ||
1168 | "STOP", | ||
1191 | #else | 1169 | #else |
1192 | rb->lcd_putsxy(1+xoffset, 8*(h+2)+yoffset, "STOP Opens menu/Quit"); | 1170 | "POWER", |
1193 | #endif | 1171 | #endif |
1172 | "Opens", "menu/", "Quit", "", "", | ||
1173 | "Specials", "", | ||
1174 | "N", "Normal:", "returns", "paddle", "to", "normal", "", | ||
1175 | "D", "DIE!:", "loses", "a", "life", "", | ||
1176 | "L", "Life:", "gains", "a", "life/", "power", "up", "", | ||
1177 | "F", "Fire:", "allows", "you", "to", "shoot", "bricks", "", | ||
1178 | "G", "Glue:", "ball", "sticks", "to", "paddle", "", | ||
1179 | "B", "Ball:", "generates", "another", "ball", "", | ||
1180 | "FL", "Flip:", "flips", "left /", "right", "movement", | ||
1181 | }; | ||
1182 | static struct style_text formation[]={ | ||
1183 | { 0, TEXT_CENTER|TEXT_UNDERLINE }, | ||
1184 | { 2, C_RED }, | ||
1185 | { 19, C_RED }, | ||
1186 | { 38, C_RED }, | ||
1187 | { 40, C_BLUE }, | ||
1188 | { 47, C_RED }, | ||
1189 | { 53, C_GREEN }, | ||
1190 | { 61, C_ORANGE }, | ||
1191 | { 69, C_GREEN }, | ||
1192 | { 76, C_YELLOW }, | ||
1193 | { 82, C_RED }, | ||
1194 | { -1, 0 } | ||
1195 | }; | ||
1196 | |||
1194 | #ifdef HAVE_LCD_COLOR | 1197 | #ifdef HAVE_LCD_COLOR |
1195 | rb->lcd_set_foreground(LCD_RGBPACK(245,0,0)); | 1198 | rb->lcd_set_background(LCD_BLACK); |
1196 | rb->lcd_putsxy(1+xoffset, 10*(h+2)+yoffset, "Specials"); | 1199 | rb->lcd_set_foreground(LCD_WHITE); |
1197 | rb->lcd_set_foreground(LCD_WHITE); | ||
1198 | #else | ||
1199 | rb->lcd_putsxy(1+xoffset, 10*(h+2)+yoffset, "Specials"); | ||
1200 | #endif | 1200 | #endif |
1201 | rb->lcd_putsxy(1+xoffset, 11*(h+2)+yoffset, | ||
1202 | "N Normal:returns paddle to normal"); | ||
1203 | rb->lcd_putsxy(1+xoffset, 12*(h+2)+yoffset, "D DIE!:loses a life"); | ||
1204 | rb->lcd_putsxy(1+xoffset, 13*(h+2)+yoffset, | ||
1205 | "L Life:gains a life/power up"); | ||
1206 | rb->lcd_putsxy(1+xoffset, 14*(h+2)+yoffset, | ||
1207 | "F Fire:allows you to shoot bricks"); | ||
1208 | rb->lcd_putsxy(1+xoffset, 15*(h+2)+yoffset, | ||
1209 | "G Glue:ball sticks to paddle"); | ||
1210 | rb->lcd_putsxy(1+xoffset, 16*(h+2)+yoffset, | ||
1211 | "B Ball:generates another ball"); | ||
1212 | rb->lcd_putsxy(1+xoffset, 17*(h+2)+yoffset, | ||
1213 | "FL Flip:flips left / right movement"); | ||
1214 | rb->lcd_update(); | ||
1215 | 1201 | ||
1216 | button=rb->button_get(true); | 1202 | rb->lcd_setfont(FONT_UI); |
1217 | switch (button) { | 1203 | if (display_text(WORDS, help_text, formation, NULL)) |
1218 | #ifdef RC_QUIT | 1204 | return 1; |
1219 | case RC_QUIT: | 1205 | do { |
1220 | #endif | 1206 | button = rb->button_get(true); |
1221 | #ifdef HAVE_TOUCHSCREEN | 1207 | if ( rb->default_event_handler( button ) == SYS_USB_CONNECTED ) |
1222 | case BUTTON_TOUCHSCREEN: | 1208 | return 1; |
1223 | #endif | 1209 | } while( ( button == BUTTON_NONE ) |
1224 | case QUIT: | 1210 | || ( button & (BUTTON_REL|BUTTON_REPEAT) ) ); |
1225 | switch (game_menu(when)) { | 1211 | rb->lcd_setfont(FONT_SYSFIXED); |
1226 | case 0: | ||
1227 | cur_level=0; | ||
1228 | life=2; | ||
1229 | int_game(1); | ||
1230 | break; | ||
1231 | case 1: | ||
1232 | con_game=1; | ||
1233 | break; | ||
1234 | case 2: | ||
1235 | if (help(when)==1) | ||
1236 | return 1; | ||
1237 | break; | ||
1238 | case 3: | ||
1239 | return 1; | ||
1240 | break; | ||
1241 | } | ||
1242 | return 0; | ||
1243 | break; | ||
1244 | case LEFT: | ||
1245 | case LEFT | BUTTON_REPEAT: | ||
1246 | #ifdef ALTLEFT | ||
1247 | case ALTLEFT: | ||
1248 | case ALTLEFT | BUTTON_REPEAT: | ||
1249 | #endif | ||
1250 | if( xoffset<0) | ||
1251 | xoffset+=2; | ||
1252 | break; | ||
1253 | case RIGHT: | ||
1254 | case RIGHT | BUTTON_REPEAT: | ||
1255 | #ifdef ALTRIGHT | ||
1256 | case ALTRIGHT: | ||
1257 | case ALTRIGHT | BUTTON_REPEAT: | ||
1258 | #endif | ||
1259 | if(xoffset+maxX > LCD_WIDTH) | ||
1260 | xoffset-=2; | ||
1261 | break; | ||
1262 | case UP: | ||
1263 | case UP | BUTTON_REPEAT: | ||
1264 | if(yoffset <0) | ||
1265 | yoffset+=2; | ||
1266 | break; | ||
1267 | case DOWN: | ||
1268 | case DOWN | BUTTON_REPEAT: | ||
1269 | if(yoffset+maxY > LCD_HEIGHT) | ||
1270 | yoffset-=2; | ||
1271 | break; | ||
1272 | |||
1273 | default: | ||
1274 | if(rb->default_event_handler(button) == SYS_USB_CONNECTED) | ||
1275 | return 1; | ||
1276 | break; | ||
1277 | } | ||
1278 | |||
1279 | rb->yield(); | ||
1280 | } | ||
1281 | return 0; | 1212 | return 0; |
1282 | } | 1213 | } |
1283 | 1214 | ||
@@ -1315,10 +1246,6 @@ int game_loop(void) | |||
1315 | int sec_count=0,num_count=10; | 1246 | int sec_count=0,num_count=10; |
1316 | int end; | 1247 | int end; |
1317 | 1248 | ||
1318 | rb->srand( *rb->current_tick ); | ||
1319 | |||
1320 | configfile_load(HIGH_SCORE,config,1,0); | ||
1321 | |||
1322 | switch(game_menu(0)) { | 1249 | switch(game_menu(0)) { |
1323 | case 0: | 1250 | case 0: |
1324 | cur_level = 0; | 1251 | cur_level = 0; |
@@ -1329,7 +1256,7 @@ int game_loop(void) | |||
1329 | con_game = 1; | 1256 | con_game = 1; |
1330 | break; | 1257 | break; |
1331 | case 2: | 1258 | case 2: |
1332 | if (help(0) == 1) return 1; | 1259 | return help(); |
1333 | break; | 1260 | break; |
1334 | case 3: | 1261 | case 3: |
1335 | return 1; | 1262 | return 1; |
@@ -1885,22 +1812,7 @@ int game_loop(void) | |||
1885 | sleep(3); | 1812 | sleep(3); |
1886 | } | 1813 | } |
1887 | 1814 | ||
1888 | switch(game_menu(0)) { | 1815 | return 0; |
1889 | case 0: | ||
1890 | life=2; | ||
1891 | cur_level=0; | ||
1892 | int_game(1); | ||
1893 | break; | ||
1894 | case 1: | ||
1895 | con_game=1; | ||
1896 | break; | ||
1897 | case 2: | ||
1898 | if (help(0)==1) return 1; | ||
1899 | break; | ||
1900 | case 3: | ||
1901 | return 1; | ||
1902 | break; | ||
1903 | } | ||
1904 | } | 1816 | } |
1905 | } | 1817 | } |
1906 | 1818 | ||
@@ -2029,24 +1941,28 @@ int game_loop(void) | |||
2029 | case RC_QUIT: | 1941 | case RC_QUIT: |
2030 | #endif | 1942 | #endif |
2031 | case QUIT: | 1943 | case QUIT: |
2032 | switch(game_menu(1)) { | 1944 | while(1) { |
2033 | case 0: | 1945 | switch(game_menu(1)) { |
2034 | life=2; | 1946 | case 0: |
2035 | cur_level=0; | 1947 | life=2; |
2036 | int_game(1); | 1948 | cur_level=0; |
2037 | break; | 1949 | int_game(1); |
2038 | case 1: | 1950 | break; |
2039 | for(k=0;k<used_balls;k++) | 1951 | case 1: |
2040 | if (ball[k].x!=0 && ball[k].y !=0) | 1952 | for(k=0;k<used_balls;k++) |
2041 | con_game=1; | 1953 | if (ball[k].x!=0 && ball[k].y !=0) |
2042 | break; | 1954 | con_game=1; |
2043 | case 2: | 1955 | break; |
2044 | if (help(1)==1) | 1956 | case 2: |
1957 | if (help()==1) | ||
1958 | return 1; | ||
1959 | continue; | ||
1960 | break; | ||
1961 | case 3: | ||
2045 | return 1; | 1962 | return 1; |
2046 | break; | 1963 | break; |
2047 | case 3: | 1964 | } |
2048 | return 1; | 1965 | break; |
2049 | break; | ||
2050 | } | 1966 | } |
2051 | 1967 | ||
2052 | for(k=0;k<used_balls;k++) { | 1968 | for(k=0;k<used_balls;k++) { |
@@ -2091,23 +2007,7 @@ int game_loop(void) | |||
2091 | ball[k].y=0; | 2007 | ball[k].y=0; |
2092 | } | 2008 | } |
2093 | 2009 | ||
2094 | switch(game_menu(0)) { | 2010 | return 0; |
2095 | case 0: | ||
2096 | cur_level=0; | ||
2097 | life=2; | ||
2098 | int_game(1); | ||
2099 | break; | ||
2100 | case 1: | ||
2101 | con_game=1; | ||
2102 | break; | ||
2103 | case 2: | ||
2104 | if (help(0)==1) | ||
2105 | return 1; | ||
2106 | break; | ||
2107 | case 3: | ||
2108 | return 1; | ||
2109 | break; | ||
2110 | } | ||
2111 | } | 2011 | } |
2112 | if (end > *rb->current_tick) | 2012 | if (end > *rb->current_tick) |
2113 | rb->sleep(end-*rb->current_tick); | 2013 | rb->sleep(end-*rb->current_tick); |
@@ -2128,6 +2028,10 @@ enum plugin_status plugin_start(const void* parameter) | |||
2128 | /* Turn off backlight timeout */ | 2028 | /* Turn off backlight timeout */ |
2129 | backlight_force_on(); /* backlight control in lib/helper.c */ | 2029 | backlight_force_on(); /* backlight control in lib/helper.c */ |
2130 | 2030 | ||
2031 | rb->srand( *rb->current_tick ); | ||
2032 | |||
2033 | configfile_load(HIGH_SCORE,config,1,0); | ||
2034 | |||
2131 | /* now go ahead and have fun! */ | 2035 | /* now go ahead and have fun! */ |
2132 | while (game_loop()!=1); | 2036 | while (game_loop()!=1); |
2133 | 2037 | ||
diff --git a/apps/plugins/clix.c b/apps/plugins/clix.c index a6a3bdd626..78bfdb8fdf 100644 --- a/apps/plugins/clix.c +++ b/apps/plugins/clix.c | |||
@@ -592,34 +592,34 @@ static int clix_clear_selected(struct clix_game_state_t* state) | |||
592 | return state->status; | 592 | return state->status; |
593 | } | 593 | } |
594 | 594 | ||
595 | static int clix_help(void) | 595 | static bool clix_help(void) |
596 | { | 596 | { |
597 | rb->lcd_setfont(FONT_UI); | ||
598 | rb->lcd_set_foreground(LCD_WHITE); | ||
599 | #define WORDS (sizeof help_text / sizeof (char*)) | 597 | #define WORDS (sizeof help_text / sizeof (char*)) |
600 | static char *help_text[] = { | 598 | static char *help_text[] = { |
601 | "Clix", "", "Aim", "", "Remove", "all", "blocks", "from", "the", | 599 | "Clix", "", "Aim", "", |
602 | "board", "to", "achieve", "the", "next", "level.", "You", "can", | 600 | "Remove", "all", "blocks", "from", "the", "board", "to", "achieve", |
603 | "only", "remove", "blocks,", "if", "at", "least", "two", "blocks", | 601 | "the", "next", "level.", "You", "can", "only", "remove", "blocks,", |
604 | "with", "the", "same", "color", "have", "a", "direct", "connection.", | 602 | "if", "at", "least", "two", "blocks", "with", "the", "same", "color", |
605 | "The", "more", "blocks", "you", "remove", "per", "turn,", "the", | 603 | "have", "a", "direct", "connection.", "The", "more", "blocks", "you", |
606 | "more", "points", "you", "get." | 604 | "remove", "per", "turn,", "the", "more", "points", "you", "get." |
607 | }; | 605 | }; |
608 | static struct style_text formation[]={ | 606 | static struct style_text formation[]={ |
609 | { 0, TEXT_CENTER|TEXT_UNDERLINE }, | 607 | { 0, TEXT_CENTER|TEXT_UNDERLINE }, |
610 | { 2, C_RED } | 608 | { 2, C_RED }, |
609 | { -1, 0 } | ||
611 | }; | 610 | }; |
612 | |||
613 | if (display_text(WORDS, help_text, formation, NULL)==PLUGIN_USB_CONNECTED) | ||
614 | return PLUGIN_USB_CONNECTED; | ||
615 | int button; | 611 | int button; |
612 | |||
613 | rb->lcd_setfont(FONT_UI); | ||
614 | rb->lcd_set_foreground(LCD_WHITE); | ||
615 | if (display_text(WORDS, help_text, formation, NULL)) | ||
616 | return true; | ||
616 | do { | 617 | do { |
617 | button = rb->button_get(true); | 618 | button = rb->button_get(true); |
618 | if (button == SYS_USB_CONNECTED) { | 619 | if ( rb->default_event_handler( button ) == SYS_USB_CONNECTED ) |
619 | return PLUGIN_USB_CONNECTED; | 620 | return true; |
620 | } | ||
621 | } while( ( button == BUTTON_NONE ) | 621 | } while( ( button == BUTTON_NONE ) |
622 | || ( button & (BUTTON_REL|BUTTON_REPEAT) ) ); | 622 | || ( button & (BUTTON_REL|BUTTON_REPEAT) ) ); |
623 | rb->lcd_setfont(FONT_SYSFIXED); | 623 | rb->lcd_setfont(FONT_SYSFIXED); |
624 | return 0; | 624 | return 0; |
625 | } | 625 | } |
@@ -656,7 +656,7 @@ static int clix_menu(struct clix_game_state_t* state, bool ingame) | |||
656 | clix_init(state); | 656 | clix_init(state); |
657 | return 0; | 657 | return 0; |
658 | case 2: | 658 | case 2: |
659 | if (clix_help()==PLUGIN_USB_CONNECTED) | 659 | if (clix_help()) |
660 | return 1; | 660 | return 1; |
661 | break; | 661 | break; |
662 | case 3: | 662 | case 3: |
diff --git a/apps/plugins/jewels.c b/apps/plugins/jewels.c index 08051c8e9e..f19c63fd24 100644 --- a/apps/plugins/jewels.c +++ b/apps/plugins/jewels.c | |||
@@ -38,6 +38,8 @@ PLUGIN_HEADER | |||
38 | #define JEWELS_RIGHT BUTTON_RIGHT | 38 | #define JEWELS_RIGHT BUTTON_RIGHT |
39 | #define JEWELS_SELECT BUTTON_PLAY | 39 | #define JEWELS_SELECT BUTTON_PLAY |
40 | #define JEWELS_CANCEL BUTTON_OFF | 40 | #define JEWELS_CANCEL BUTTON_OFF |
41 | #define HK_SELECT "PLAY" | ||
42 | #define HK_CANCEL "OFF" | ||
41 | 43 | ||
42 | #elif CONFIG_KEYPAD == ARCHOS_AV300_PAD | 44 | #elif CONFIG_KEYPAD == ARCHOS_AV300_PAD |
43 | #define JEWELS_UP BUTTON_UP | 45 | #define JEWELS_UP BUTTON_UP |
@@ -46,6 +48,8 @@ PLUGIN_HEADER | |||
46 | #define JEWELS_RIGHT BUTTON_RIGHT | 48 | #define JEWELS_RIGHT BUTTON_RIGHT |
47 | #define JEWELS_SELECT BUTTON_SELECT | 49 | #define JEWELS_SELECT BUTTON_SELECT |
48 | #define JEWELS_CANCEL BUTTON_OFF | 50 | #define JEWELS_CANCEL BUTTON_OFF |
51 | #define HK_SELECT "SELECT" | ||
52 | #define HK_CANCEL "OFF" | ||
49 | 53 | ||
50 | #elif CONFIG_KEYPAD == ONDIO_PAD | 54 | #elif CONFIG_KEYPAD == ONDIO_PAD |
51 | #define JEWELS_UP BUTTON_UP | 55 | #define JEWELS_UP BUTTON_UP |
@@ -54,6 +58,8 @@ PLUGIN_HEADER | |||
54 | #define JEWELS_RIGHT BUTTON_RIGHT | 58 | #define JEWELS_RIGHT BUTTON_RIGHT |
55 | #define JEWELS_SELECT BUTTON_MENU | 59 | #define JEWELS_SELECT BUTTON_MENU |
56 | #define JEWELS_CANCEL BUTTON_OFF | 60 | #define JEWELS_CANCEL BUTTON_OFF |
61 | #define HK_SELECT "MENU" | ||
62 | #define HK_CANCEL "OFF" | ||
57 | 63 | ||
58 | #elif (CONFIG_KEYPAD == IRIVER_H100_PAD) || (CONFIG_KEYPAD == IRIVER_H300_PAD) | 64 | #elif (CONFIG_KEYPAD == IRIVER_H100_PAD) || (CONFIG_KEYPAD == IRIVER_H300_PAD) |
59 | #define JEWELS_UP BUTTON_UP | 65 | #define JEWELS_UP BUTTON_UP |
@@ -63,6 +69,8 @@ PLUGIN_HEADER | |||
63 | #define JEWELS_SELECT BUTTON_SELECT | 69 | #define JEWELS_SELECT BUTTON_SELECT |
64 | #define JEWELS_CANCEL BUTTON_OFF | 70 | #define JEWELS_CANCEL BUTTON_OFF |
65 | #define JEWELS_RC_CANCEL BUTTON_RC_STOP | 71 | #define JEWELS_RC_CANCEL BUTTON_RC_STOP |
72 | #define HK_SELECT "SELECT" | ||
73 | #define HK_CANCEL "OFF" | ||
66 | 74 | ||
67 | #elif (CONFIG_KEYPAD == IPOD_4G_PAD) || \ | 75 | #elif (CONFIG_KEYPAD == IPOD_4G_PAD) || \ |
68 | (CONFIG_KEYPAD == IPOD_1G2G_PAD) | 76 | (CONFIG_KEYPAD == IPOD_1G2G_PAD) |
@@ -75,6 +83,8 @@ PLUGIN_HEADER | |||
75 | #define JEWELS_NEXT BUTTON_SCROLL_FWD | 83 | #define JEWELS_NEXT BUTTON_SCROLL_FWD |
76 | #define JEWELS_SELECT BUTTON_SELECT | 84 | #define JEWELS_SELECT BUTTON_SELECT |
77 | #define JEWELS_CANCEL (BUTTON_SELECT | BUTTON_MENU) | 85 | #define JEWELS_CANCEL (BUTTON_SELECT | BUTTON_MENU) |
86 | #define HK_SELECT "SELECT" | ||
87 | #define HK_CANCEL "SEL + MENU" | ||
78 | 88 | ||
79 | #elif (CONFIG_KEYPAD == IPOD_3G_PAD) | 89 | #elif (CONFIG_KEYPAD == IPOD_3G_PAD) |
80 | #define JEWELS_LEFT BUTTON_LEFT | 90 | #define JEWELS_LEFT BUTTON_LEFT |
@@ -83,6 +93,8 @@ PLUGIN_HEADER | |||
83 | #define JEWELS_DOWN BUTTON_SCROLL_FWD | 93 | #define JEWELS_DOWN BUTTON_SCROLL_FWD |
84 | #define JEWELS_SELECT BUTTON_SELECT | 94 | #define JEWELS_SELECT BUTTON_SELECT |
85 | #define JEWELS_CANCEL BUTTON_MENU | 95 | #define JEWELS_CANCEL BUTTON_MENU |
96 | #define HK_SELECT "SELECT" | ||
97 | #define HK_CANCEL "MENU" | ||
86 | 98 | ||
87 | #elif CONFIG_KEYPAD == IRIVER_IFP7XX_PAD | 99 | #elif CONFIG_KEYPAD == IRIVER_IFP7XX_PAD |
88 | #define JEWELS_UP BUTTON_UP | 100 | #define JEWELS_UP BUTTON_UP |
@@ -91,6 +103,8 @@ PLUGIN_HEADER | |||
91 | #define JEWELS_RIGHT BUTTON_RIGHT | 103 | #define JEWELS_RIGHT BUTTON_RIGHT |
92 | #define JEWELS_SELECT BUTTON_SELECT | 104 | #define JEWELS_SELECT BUTTON_SELECT |
93 | #define JEWELS_CANCEL BUTTON_PLAY | 105 | #define JEWELS_CANCEL BUTTON_PLAY |
106 | #define HK_SELECT "SELECT" | ||
107 | #define HK_CANCEL "PLAY" | ||
94 | 108 | ||
95 | #elif CONFIG_KEYPAD == IAUDIO_X5M5_PAD | 109 | #elif CONFIG_KEYPAD == IAUDIO_X5M5_PAD |
96 | #define JEWELS_UP BUTTON_UP | 110 | #define JEWELS_UP BUTTON_UP |
@@ -99,6 +113,8 @@ PLUGIN_HEADER | |||
99 | #define JEWELS_RIGHT BUTTON_RIGHT | 113 | #define JEWELS_RIGHT BUTTON_RIGHT |
100 | #define JEWELS_SELECT BUTTON_SELECT | 114 | #define JEWELS_SELECT BUTTON_SELECT |
101 | #define JEWELS_CANCEL BUTTON_POWER | 115 | #define JEWELS_CANCEL BUTTON_POWER |
116 | #define HK_SELECT "SELECT" | ||
117 | #define HK_CANCEL "POWER" | ||
102 | 118 | ||
103 | #elif CONFIG_KEYPAD == GIGABEAT_PAD | 119 | #elif CONFIG_KEYPAD == GIGABEAT_PAD |
104 | #define JEWELS_UP BUTTON_UP | 120 | #define JEWELS_UP BUTTON_UP |
@@ -107,6 +123,8 @@ PLUGIN_HEADER | |||
107 | #define JEWELS_RIGHT BUTTON_RIGHT | 123 | #define JEWELS_RIGHT BUTTON_RIGHT |
108 | #define JEWELS_SELECT BUTTON_SELECT | 124 | #define JEWELS_SELECT BUTTON_SELECT |
109 | #define JEWELS_CANCEL BUTTON_POWER | 125 | #define JEWELS_CANCEL BUTTON_POWER |
126 | #define HK_SELECT "SELECT" | ||
127 | #define HK_CANCEL "POWER" | ||
110 | 128 | ||
111 | #elif CONFIG_KEYPAD == SANSA_E200_PAD | 129 | #elif CONFIG_KEYPAD == SANSA_E200_PAD |
112 | #define JEWELS_SCROLLWHEEL | 130 | #define JEWELS_SCROLLWHEEL |
@@ -118,6 +136,8 @@ PLUGIN_HEADER | |||
118 | #define JEWELS_NEXT BUTTON_SCROLL_FWD | 136 | #define JEWELS_NEXT BUTTON_SCROLL_FWD |
119 | #define JEWELS_SELECT BUTTON_SELECT | 137 | #define JEWELS_SELECT BUTTON_SELECT |
120 | #define JEWELS_CANCEL BUTTON_POWER | 138 | #define JEWELS_CANCEL BUTTON_POWER |
139 | #define HK_SELECT "SELECT" | ||
140 | #define HK_CANCEL "POWER" | ||
121 | 141 | ||
122 | #elif (CONFIG_KEYPAD == SANSA_FUZE_PAD) | 142 | #elif (CONFIG_KEYPAD == SANSA_FUZE_PAD) |
123 | #define JEWELS_SCROLLWHEEL | 143 | #define JEWELS_SCROLLWHEEL |
@@ -129,6 +149,8 @@ PLUGIN_HEADER | |||
129 | #define JEWELS_NEXT BUTTON_SCROLL_FWD | 149 | #define JEWELS_NEXT BUTTON_SCROLL_FWD |
130 | #define JEWELS_SELECT BUTTON_SELECT | 150 | #define JEWELS_SELECT BUTTON_SELECT |
131 | #define JEWELS_CANCEL (BUTTON_HOME|BUTTON_REPEAT) | 151 | #define JEWELS_CANCEL (BUTTON_HOME|BUTTON_REPEAT) |
152 | #define HK_SELECT "SELECT" | ||
153 | #define HK_CANCEL "HOME" | ||
132 | 154 | ||
133 | #elif CONFIG_KEYPAD == SANSA_C200_PAD || \ | 155 | #elif CONFIG_KEYPAD == SANSA_C200_PAD || \ |
134 | CONFIG_KEYPAD == SANSA_CLIP_PAD || \ | 156 | CONFIG_KEYPAD == SANSA_CLIP_PAD || \ |
@@ -139,6 +161,8 @@ CONFIG_KEYPAD == SANSA_M200_PAD | |||
139 | #define JEWELS_RIGHT BUTTON_RIGHT | 161 | #define JEWELS_RIGHT BUTTON_RIGHT |
140 | #define JEWELS_SELECT BUTTON_SELECT | 162 | #define JEWELS_SELECT BUTTON_SELECT |
141 | #define JEWELS_CANCEL BUTTON_POWER | 163 | #define JEWELS_CANCEL BUTTON_POWER |
164 | #define HK_SELECT "SELECT" | ||
165 | #define HK_CANCEL "POWER" | ||
142 | 166 | ||
143 | #elif CONFIG_KEYPAD == IRIVER_H10_PAD | 167 | #elif CONFIG_KEYPAD == IRIVER_H10_PAD |
144 | #define JEWELS_UP BUTTON_SCROLL_UP | 168 | #define JEWELS_UP BUTTON_SCROLL_UP |
@@ -147,6 +171,8 @@ CONFIG_KEYPAD == SANSA_M200_PAD | |||
147 | #define JEWELS_RIGHT BUTTON_RIGHT | 171 | #define JEWELS_RIGHT BUTTON_RIGHT |
148 | #define JEWELS_SELECT BUTTON_PLAY | 172 | #define JEWELS_SELECT BUTTON_PLAY |
149 | #define JEWELS_CANCEL BUTTON_POWER | 173 | #define JEWELS_CANCEL BUTTON_POWER |
174 | #define HK_SELECT "PLAY" | ||
175 | #define HK_CANCEL "POWER" | ||
150 | 176 | ||
151 | #elif CONFIG_KEYPAD == GIGABEAT_S_PAD | 177 | #elif CONFIG_KEYPAD == GIGABEAT_S_PAD |
152 | #define JEWELS_UP BUTTON_UP | 178 | #define JEWELS_UP BUTTON_UP |
@@ -155,6 +181,8 @@ CONFIG_KEYPAD == SANSA_M200_PAD | |||
155 | #define JEWELS_RIGHT BUTTON_RIGHT | 181 | #define JEWELS_RIGHT BUTTON_RIGHT |
156 | #define JEWELS_SELECT BUTTON_SELECT | 182 | #define JEWELS_SELECT BUTTON_SELECT |
157 | #define JEWELS_CANCEL BUTTON_BACK | 183 | #define JEWELS_CANCEL BUTTON_BACK |
184 | #define HK_SELECT "SELECT" | ||
185 | #define HK_CANCEL "BACK" | ||
158 | 186 | ||
159 | #elif CONFIG_KEYPAD == MROBE100_PAD | 187 | #elif CONFIG_KEYPAD == MROBE100_PAD |
160 | #define JEWELS_UP BUTTON_UP | 188 | #define JEWELS_UP BUTTON_UP |
@@ -163,6 +191,8 @@ CONFIG_KEYPAD == SANSA_M200_PAD | |||
163 | #define JEWELS_RIGHT BUTTON_RIGHT | 191 | #define JEWELS_RIGHT BUTTON_RIGHT |
164 | #define JEWELS_SELECT BUTTON_SELECT | 192 | #define JEWELS_SELECT BUTTON_SELECT |
165 | #define JEWELS_CANCEL BUTTON_POWER | 193 | #define JEWELS_CANCEL BUTTON_POWER |
194 | #define HK_SELECT "SELECT" | ||
195 | #define HK_CANCEL "POWER" | ||
166 | 196 | ||
167 | #elif CONFIG_KEYPAD == IAUDIO_M3_PAD | 197 | #elif CONFIG_KEYPAD == IAUDIO_M3_PAD |
168 | #define JEWELS_UP BUTTON_RC_VOL_UP | 198 | #define JEWELS_UP BUTTON_RC_VOL_UP |
@@ -171,10 +201,14 @@ CONFIG_KEYPAD == SANSA_M200_PAD | |||
171 | #define JEWELS_RIGHT BUTTON_RC_FF | 201 | #define JEWELS_RIGHT BUTTON_RC_FF |
172 | #define JEWELS_SELECT BUTTON_RC_PLAY | 202 | #define JEWELS_SELECT BUTTON_RC_PLAY |
173 | #define JEWELS_CANCEL BUTTON_RC_REC | 203 | #define JEWELS_CANCEL BUTTON_RC_REC |
204 | #define HK_SELECT "PLAY" | ||
205 | #define HK_CANCEL "REC" | ||
206 | |||
174 | #define JEWELS_RC_CANCEL BUTTON_REC | 207 | #define JEWELS_RC_CANCEL BUTTON_REC |
175 | 208 | ||
176 | #elif CONFIG_KEYPAD == COWOND2_PAD | 209 | #elif CONFIG_KEYPAD == COWOND2_PAD |
177 | #define JEWELS_CANCEL BUTTON_POWER | 210 | #define JEWELS_CANCEL BUTTON_POWER |
211 | #define HK_CANCEL "POWER" | ||
178 | 212 | ||
179 | #elif CONFIG_KEYPAD == IAUDIO67_PAD | 213 | #elif CONFIG_KEYPAD == IAUDIO67_PAD |
180 | #define JEWELS_UP BUTTON_STOP | 214 | #define JEWELS_UP BUTTON_STOP |
@@ -183,6 +217,8 @@ CONFIG_KEYPAD == SANSA_M200_PAD | |||
183 | #define JEWELS_RIGHT BUTTON_RIGHT | 217 | #define JEWELS_RIGHT BUTTON_RIGHT |
184 | #define JEWELS_SELECT BUTTON_MENU | 218 | #define JEWELS_SELECT BUTTON_MENU |
185 | #define JEWELS_CANCEL BUTTON_POWER | 219 | #define JEWELS_CANCEL BUTTON_POWER |
220 | #define HK_SELECT "MENU" | ||
221 | #define HK_CANCEL "POWER" | ||
186 | 222 | ||
187 | #elif CONFIG_KEYPAD == CREATIVEZVM_PAD | 223 | #elif CONFIG_KEYPAD == CREATIVEZVM_PAD |
188 | #define JEWELS_UP BUTTON_UP | 224 | #define JEWELS_UP BUTTON_UP |
@@ -191,6 +227,8 @@ CONFIG_KEYPAD == SANSA_M200_PAD | |||
191 | #define JEWELS_RIGHT BUTTON_RIGHT | 227 | #define JEWELS_RIGHT BUTTON_RIGHT |
192 | #define JEWELS_SELECT BUTTON_SELECT | 228 | #define JEWELS_SELECT BUTTON_SELECT |
193 | #define JEWELS_CANCEL BUTTON_BACK | 229 | #define JEWELS_CANCEL BUTTON_BACK |
230 | #define HK_SELECT "MIDDLE" | ||
231 | #define HK_CANCEL "BACK" | ||
194 | 232 | ||
195 | #elif CONFIG_KEYPAD == PHILIPS_HDD1630_PAD | 233 | #elif CONFIG_KEYPAD == PHILIPS_HDD1630_PAD |
196 | #define JEWELS_UP BUTTON_UP | 234 | #define JEWELS_UP BUTTON_UP |
@@ -199,10 +237,13 @@ CONFIG_KEYPAD == SANSA_M200_PAD | |||
199 | #define JEWELS_RIGHT BUTTON_RIGHT | 237 | #define JEWELS_RIGHT BUTTON_RIGHT |
200 | #define JEWELS_SELECT BUTTON_SELECT | 238 | #define JEWELS_SELECT BUTTON_SELECT |
201 | #define JEWELS_CANCEL BUTTON_POWER | 239 | #define JEWELS_CANCEL BUTTON_POWER |
240 | #define HK_SELECT "SELECT" | ||
241 | #define HK_CANCEL "POWER" | ||
202 | 242 | ||
203 | #elif CONFIG_KEYPAD == ONDAVX747_PAD || \ | 243 | #elif CONFIG_KEYPAD == ONDAVX747_PAD || \ |
204 | CONFIG_KEYPAD == MROBE500_PAD | 244 | CONFIG_KEYPAD == MROBE500_PAD |
205 | #define JEWELS_CANCEL BUTTON_POWER | 245 | #define JEWELS_CANCEL BUTTON_POWER |
246 | #define HK_CANCEL "POWER" | ||
206 | 247 | ||
207 | #else | 248 | #else |
208 | #error No keymap defined! | 249 | #error No keymap defined! |
@@ -223,9 +264,11 @@ CONFIG_KEYPAD == MROBE500_PAD | |||
223 | #endif | 264 | #endif |
224 | #ifndef JEWELS_SELECT | 265 | #ifndef JEWELS_SELECT |
225 | #define JEWELS_SELECT BUTTON_CENTER | 266 | #define JEWELS_SELECT BUTTON_CENTER |
267 | #define HK_SELECT "CENTER" | ||
226 | #endif | 268 | #endif |
227 | #ifndef JEWELS_CANCEL | 269 | #ifndef JEWELS_CANCEL |
228 | #define JEWELS_CANCEL BUTTON_TOPLEFT | 270 | #define JEWELS_CANCEL BUTTON_TOPLEFT |
271 | #define HK_CANCEL "TOPLEFT" | ||
229 | #endif | 272 | #endif |
230 | #endif | 273 | #endif |
231 | 274 | ||
@@ -1312,15 +1355,26 @@ static int jewels_help(void) | |||
1312 | rb->lcd_setfont(FONT_UI); | 1355 | rb->lcd_setfont(FONT_UI); |
1313 | #define WORDS (sizeof help_text / sizeof (char*)) | 1356 | #define WORDS (sizeof help_text / sizeof (char*)) |
1314 | static char *help_text[] = { | 1357 | static char *help_text[] = { |
1315 | "Jewels", "", "Aim", "", "Swap", "pairs", "of", "jewels", "to", | 1358 | "Jewels", "", "Aim", "", |
1316 | "form", "connected", "segments", "of", "three", "or", "more", "of", | 1359 | "Swap", "pairs", "of", "jewels", "to", "form", "connected", |
1317 | "the", "same", "type.", "", "The", "goal", "of", "the", "game", | 1360 | "segments", "of", "three", "or", "more", "of", "the", "same", |
1318 | "is", "to", "score", "as", "many", "points", "as", "possible", | 1361 | "type.", "", |
1319 | "before", "running", "out", "of", "available", "moves." | 1362 | "The", "goal", "of", "the", "game", "is", "to", "score", "as", "many", |
1363 | "points", "as", "possible", "before", "running", "out", "of", | ||
1364 | "available", "moves.", "", "", | ||
1365 | "Controls", "", | ||
1366 | "Directions", | ||
1367 | #ifdef JEWELS_SCROLLWHEEL | ||
1368 | "or", "scroll", | ||
1369 | #endif | ||
1370 | "to", "move", "", | ||
1371 | HK_SELECT, "to", "select", "", | ||
1372 | HK_CANCEL, "to", "go", "to", "menu" | ||
1320 | }; | 1373 | }; |
1321 | static struct style_text formation[]={ | 1374 | static struct style_text formation[]={ |
1322 | { 0, TEXT_CENTER|TEXT_UNDERLINE }, | 1375 | { 0, TEXT_CENTER|TEXT_UNDERLINE }, |
1323 | { 2, C_RED } | 1376 | { 2, C_RED }, |
1377 | { -1, 0 } | ||
1324 | }; | 1378 | }; |
1325 | 1379 | ||
1326 | #ifdef HAVE_LCD_COLOR | 1380 | #ifdef HAVE_LCD_COLOR |
diff --git a/apps/plugins/lib/display_text.c b/apps/plugins/lib/display_text.c index 67c78ec242..c6b5710644 100644 --- a/apps/plugins/lib/display_text.c +++ b/apps/plugins/lib/display_text.c | |||
@@ -135,10 +135,5 @@ bool display_text(short words, char** text, struct style_text* style, | |||
135 | #ifdef HAVE_LCD_BITMAP | 135 | #ifdef HAVE_LCD_BITMAP |
136 | rb->lcd_set_drawmode(prev_drawmode); | 136 | rb->lcd_set_drawmode(prev_drawmode); |
137 | #endif | 137 | #endif |
138 | #ifdef HAVE_LCD_COLOR | ||
139 | if (style!=NULL) { | ||
140 | rb->lcd_set_foreground(standard_fgcolor); | ||
141 | } | ||
142 | #endif | ||
143 | return false; | 138 | return false; |
144 | } | 139 | } |
diff --git a/apps/plugins/pegbox.c b/apps/plugins/pegbox.c index d6f87cd46b..eb53eca8b5 100644 --- a/apps/plugins/pegbox.c +++ b/apps/plugins/pegbox.c | |||
@@ -19,6 +19,7 @@ | |||
19 | * | 19 | * |
20 | ****************************************************************************/ | 20 | ****************************************************************************/ |
21 | #include "plugin.h" | 21 | #include "plugin.h" |
22 | #include "lib/display_text.h" | ||
22 | 23 | ||
23 | #include "pluginbitmaps/pegbox_header.h" | 24 | #include "pluginbitmaps/pegbox_header.h" |
24 | #include "pluginbitmaps/pegbox_pieces.h" | 25 | #include "pluginbitmaps/pegbox_pieces.h" |
@@ -720,111 +721,6 @@ char levels[NUM_LEVELS][ROWS][COLS] = { | |||
720 | 721 | ||
721 | 722 | ||
722 | /***************************************************************************** | 723 | /***************************************************************************** |
723 | * display_text() formats and outputs text. | ||
724 | ******************************************************************************/ | ||
725 | static void display_text(char *str, bool waitkey) | ||
726 | { | ||
727 | int chars_by_line; | ||
728 | int lines_by_screen; | ||
729 | int chars_for_line; | ||
730 | int current_line = 0; | ||
731 | int char_width, char_height; | ||
732 | int first_char_index = 0; | ||
733 | char *ptr_char; | ||
734 | char *ptr_line; | ||
735 | int i; | ||
736 | char line[255]; | ||
737 | int key; | ||
738 | bool go_on; | ||
739 | |||
740 | rb->lcd_clear_display(); | ||
741 | |||
742 | rb->lcd_getstringsize("a", &char_width, &char_height); | ||
743 | |||
744 | chars_by_line = LCD_WIDTH / char_width; | ||
745 | lines_by_screen = LCD_HEIGHT / char_height; | ||
746 | |||
747 | do | ||
748 | { | ||
749 | ptr_char = str + first_char_index; | ||
750 | chars_for_line = 0; | ||
751 | i = 0; | ||
752 | ptr_line = line; | ||
753 | while (i < chars_by_line) | ||
754 | { | ||
755 | switch (*ptr_char) | ||
756 | { | ||
757 | case '\t': | ||
758 | case ' ': | ||
759 | *(ptr_line++) = ' '; | ||
760 | case '\n': | ||
761 | case '\0': | ||
762 | chars_for_line = i; | ||
763 | break; | ||
764 | |||
765 | default: | ||
766 | *(ptr_line++) = *ptr_char; | ||
767 | } | ||
768 | if (*ptr_char == '\n' || *ptr_char == '\0') | ||
769 | break; | ||
770 | ptr_char++; | ||
771 | i++; | ||
772 | } | ||
773 | |||
774 | if (chars_for_line == 0) | ||
775 | chars_for_line = i; | ||
776 | |||
777 | line[chars_for_line] = '\0'; | ||
778 | |||
779 | /* test if we have cut a word. If it is the case we don't have to */ | ||
780 | /* skip the space */ | ||
781 | if (i == chars_by_line && chars_for_line == chars_by_line) | ||
782 | first_char_index += chars_for_line; | ||
783 | else | ||
784 | first_char_index += chars_for_line + 1; | ||
785 | |||
786 | /* print the line on the screen */ | ||
787 | rb->lcd_putsxy(0, current_line * char_height, line); | ||
788 | |||
789 | /* if the number of line showed on the screen is equals to the */ | ||
790 | /* maximum number of line we can show, we wait for a key pressed to */ | ||
791 | /* clear and show the remaining text. */ | ||
792 | current_line++; | ||
793 | if (current_line == lines_by_screen || *ptr_char == '\0') | ||
794 | { | ||
795 | current_line = 0; | ||
796 | rb->lcd_update(); | ||
797 | go_on = false; | ||
798 | while (waitkey && !go_on) | ||
799 | { | ||
800 | key = rb->button_get(true); | ||
801 | switch (key) | ||
802 | { | ||
803 | #ifdef HAVE_TOUCHSCREEN | ||
804 | case BUTTON_TOUCHSCREEN: | ||
805 | #endif | ||
806 | case PEGBOX_QUIT: | ||
807 | case PEGBOX_LEFT: | ||
808 | case PEGBOX_DOWN: | ||
809 | go_on = true; | ||
810 | break; | ||
811 | |||
812 | default: | ||
813 | /*if (rb->default_event_handler(key) == SYS_USB_CONNECTED) | ||
814 | { | ||
815 | usb_detected = true; | ||
816 | go_on = true; | ||
817 | break; | ||
818 | }*/ | ||
819 | break; | ||
820 | } | ||
821 | } | ||
822 | rb->lcd_clear_display(); | ||
823 | } | ||
824 | } while (*ptr_char != '\0'); | ||
825 | } | ||
826 | |||
827 | /***************************************************************************** | ||
828 | * draw_board() draws the game's current level. | 724 | * draw_board() draws the game's current level. |
829 | ******************************************************************************/ | 725 | ******************************************************************************/ |
830 | static void draw_board(struct game_context* pb) { | 726 | static void draw_board(struct game_context* pb) { |
@@ -1127,6 +1023,48 @@ static void pegbox_callback(void* param) { | |||
1127 | pegbox_savedata(pb); | 1023 | pegbox_savedata(pb); |
1128 | } | 1024 | } |
1129 | 1025 | ||
1026 | /*********************************************************************** | ||
1027 | * pegbox_help() display help text | ||
1028 | ************************************************************************/ | ||
1029 | static bool pegbox_help(void) | ||
1030 | { | ||
1031 | int button; | ||
1032 | #define WORDS (sizeof help_text / sizeof (char*)) | ||
1033 | static char* help_text[] = { | ||
1034 | "Pegbox", "", "Aim", "", | ||
1035 | "To", "beat", "each", "level,", "you", "must", "destroy", "all", "of", | ||
1036 | "the", "pegs.", "If", "two", "like", "pegs", "are", "pushed", "into", | ||
1037 | "each", "other,", "they", "disappear", "except", "for", "triangles", | ||
1038 | "which", "form", "a", "solid", "block", "and", "crosses", "which", | ||
1039 | "allow", "you", "to", "choose", "a", "replacement", "block.", "", "", | ||
1040 | "Controls", "", | ||
1041 | RESTART_TEXT, "to", "restart", "level", "", | ||
1042 | LVL_UP_TEXT, "to", "go", "up", "a", "level", "", | ||
1043 | LVL_DOWN_TEXT, "to", "go", "down", "a", "level", "", | ||
1044 | SAVE_TEXT, "to", "select/save", "", | ||
1045 | QUIT_TEXT, "to", "quit" | ||
1046 | }; | ||
1047 | static struct style_text formation[]={ | ||
1048 | { 0, TEXT_CENTER|TEXT_UNDERLINE }, | ||
1049 | { 2, C_RED }, | ||
1050 | { 46, C_RED }, | ||
1051 | { -1, 0 } | ||
1052 | }; | ||
1053 | |||
1054 | rb->lcd_setfont(FONT_UI); | ||
1055 | |||
1056 | if (display_text(WORDS, help_text, formation, NULL)) | ||
1057 | return true; | ||
1058 | do { | ||
1059 | button = rb->button_get(true); | ||
1060 | if ( rb->default_event_handler( button ) == SYS_USB_CONNECTED ) | ||
1061 | return true; | ||
1062 | } while( ( button == BUTTON_NONE ) | ||
1063 | || ( button & (BUTTON_REL|BUTTON_REPEAT) ) ); | ||
1064 | rb->lcd_setfont(FONT_SYSFIXED); | ||
1065 | return false; | ||
1066 | } | ||
1067 | |||
1130 | /***************************************************************************** | 1068 | /***************************************************************************** |
1131 | * pegbox_menu() is the initial menu at the start of the game. | 1069 | * pegbox_menu() is the initial menu at the start of the game. |
1132 | ******************************************************************************/ | 1070 | ******************************************************************************/ |
@@ -1251,28 +1189,12 @@ static unsigned int pegbox_menu(struct game_context* pb) { | |||
1251 | pb->save_exist = false; | 1189 | pb->save_exist = false; |
1252 | } | 1190 | } |
1253 | breakout = true; | 1191 | breakout = true; |
1254 | } | 1192 | } |
1255 | else if (loc == 2) | 1193 | else if (loc == 2) |
1256 | display_text("How to Play\nTo beat each level, you must " | 1194 | { |
1257 | "destroy all of the pegs. If two like pegs are " | 1195 | if(pegbox_help()) |
1258 | "pushed into each other they disappear except " | 1196 | return PB_USB; |
1259 | "for triangles which form a solid block and " | 1197 | } |
1260 | "crosses which allow you to choose a " | ||
1261 | "replacement block.\n\n" | ||
1262 | "Controls\n" | ||
1263 | #if LCD_HEIGHT > 64 | ||
1264 | RESTART_TEXT " to restart level\n" | ||
1265 | LVL_UP_TEXT " to go up a level\n" | ||
1266 | LVL_DOWN_TEXT " to go down a level\n" | ||
1267 | SAVE_TEXT " to select/save\n" | ||
1268 | QUIT_TEXT " to quit\n",true); | ||
1269 | #else | ||
1270 | RESTART_TEXT ": restart\n" | ||
1271 | LVL_UP_TEXT ": level up\n" | ||
1272 | LVL_DOWN_TEXT " level down\n" | ||
1273 | SAVE_TEXT " select/save\n" | ||
1274 | QUIT_TEXT " quit\n",true); | ||
1275 | #endif | ||
1276 | else if (loc == 3) | 1198 | else if (loc == 3) |
1277 | return PB_QUIT; | 1199 | return PB_QUIT; |
1278 | break; | 1200 | break; |
@@ -1462,7 +1384,7 @@ enum plugin_status plugin_start(const void* parameter) { | |||
1462 | rb->lcd_setfont(FONT_SYSFIXED); | 1384 | rb->lcd_setfont(FONT_SYSFIXED); |
1463 | #if LCD_DEPTH > 1 | 1385 | #if LCD_DEPTH > 1 |
1464 | rb->lcd_set_backdrop(NULL); | 1386 | rb->lcd_set_backdrop(NULL); |
1465 | #endif | 1387 | #endif |
1466 | #ifdef HAVE_LCD_COLOR | 1388 | #ifdef HAVE_LCD_COLOR |
1467 | rb->lcd_set_foreground(LCD_WHITE); | 1389 | rb->lcd_set_foreground(LCD_WHITE); |
1468 | rb->lcd_set_background(BG_COLOR); | 1390 | rb->lcd_set_background(BG_COLOR); |
diff --git a/apps/plugins/robotfindskitten.c b/apps/plugins/robotfindskitten.c index 1010531951..ed3cda2fc7 100644 --- a/apps/plugins/robotfindskitten.c +++ b/apps/plugins/robotfindskitten.c | |||
@@ -30,6 +30,7 @@ | |||
30 | 30 | ||
31 | #include "plugin.h" | 31 | #include "plugin.h" |
32 | #include "lib/pluginlib_actions.h" | 32 | #include "lib/pluginlib_actions.h" |
33 | #include "lib/display_text.h" | ||
33 | 34 | ||
34 | /* This macros must always be included. Should be placed at the top by | 35 | /* This macros must always be included. Should be placed at the top by |
35 | convention, although the actual position doesn't matter */ | 36 | convention, although the actual position doesn't matter */ |
@@ -692,7 +693,7 @@ static void play_game() | |||
692 | #else | 693 | #else |
693 | input = rb->button_get(true); | 694 | input = rb->button_get(true); |
694 | #endif | 695 | #endif |
695 | } | 696 | } |
696 | message("Bye!"); | 697 | message("Bye!"); |
697 | refresh(); | 698 | refresh(); |
698 | } | 699 | } |
@@ -794,7 +795,7 @@ static int validchar(char a) | |||
794 | switch(a) | 795 | switch(a) |
795 | { | 796 | { |
796 | case '#': | 797 | case '#': |
797 | case ' ': | 798 | case ' ': |
798 | case 127: | 799 | case 127: |
799 | return 0; | 800 | return 0; |
800 | } | 801 | } |
@@ -850,45 +851,23 @@ static void play_animation(int input) | |||
850 | 851 | ||
851 | static void instructions() | 852 | static void instructions() |
852 | { | 853 | { |
853 | #define MARGIN 2 | 854 | #define WORDS (sizeof help_text / sizeof (char*)) |
854 | int y = MARGIN, space_w, width, height; | 855 | static char* help_text[] = { |
855 | unsigned short x = MARGIN, i = 0; | ||
856 | #define WORDS (sizeof instructions / sizeof (char*)) | ||
857 | static char* instructions[] = { | ||
858 | #if 0 | 856 | #if 0 |
859 | /* Not sure if we want to include this? */ | 857 | /* Not sure if we want to include this? */ |
860 | "robotfindskitten", RFK_VERSION, "", "", | 858 | "robotfindskitten", RFK_VERSION, "", "", |
861 | "By", "the", "illustrious", "Leonard", "Richardson", "(C)", "1997,", "2000", "", | 859 | "By", "the", "illustrious", "Leonard", "Richardson", "(C)", "1997,", "2000", "", |
862 | "Written", "originally", "for", "the", "Nerth", "Pork", "robotfindskitten", "contest", "", "", | 860 | "Written", "originally", "for", "the", "Nerth", "Pork", "robotfindskitten", "contest", "", "", |
863 | #endif | 861 | #endif |
864 | "In", "this", "game", "you", "are", "robot", "(#).", "Your", "job", "is", "to", "find", "kitten.", "This", "task", "is", "complicated", "by", "the", "existence", "of", "various", "things", "which", "are", "not", "kitten.", "Robot", "must", "touch", "items", "to", "determine", "if", "they", "are", "kitten", "or", "not.", "", | 862 | "In", "this", "game", "you", "are", "robot", "(#).", "Your", "job", "is", |
863 | "to", "find", "kitten.", "This", "task", "is", "complicated", "by", "the", | ||
864 | "existence", "of", "various", "things", "which", "are", "not", "kitten.", | ||
865 | "Robot", "must", "touch", "items", "to", "determine", "if", "they", "are", | ||
866 | "kitten", "or", "not.", "", | ||
865 | "The", "game", "ends", "when", "robotfindskitten.", "", "", | 867 | "The", "game", "ends", "when", "robotfindskitten.", "", "", |
866 | "Press", "any", "key", "to", "start", | 868 | "Press", "any", "key", "to", "start", |
867 | }; | 869 | }; |
868 | rb->lcd_clear_display(); | 870 | display_text(WORDS, help_text, NULL, NULL); |
869 | rb->lcd_getstringsize(" ", &space_w, &height); | ||
870 | for (i = 0; i < WORDS; i++) { | ||
871 | rb->lcd_getstringsize(instructions[i], &width, NULL); | ||
872 | /* Skip to next line if the current one can't fit the word */ | ||
873 | if (x + width > LCD_WIDTH - MARGIN) { | ||
874 | x = MARGIN; | ||
875 | y += height; | ||
876 | } | ||
877 | /* .. or if the word is the empty string */ | ||
878 | if (rb->strcmp(instructions[i], "") == 0) { | ||
879 | x = MARGIN; | ||
880 | y += height; | ||
881 | continue; | ||
882 | } | ||
883 | /* We filled the screen */ | ||
884 | if (y + height > LCD_HEIGHT - MARGIN) { | ||
885 | y = MARGIN; | ||
886 | pause(); | ||
887 | rb->lcd_clear_display(); | ||
888 | } | ||
889 | rb->lcd_putsxy(x, y, instructions[i]); | ||
890 | x += width + space_w; | ||
891 | } | ||
892 | pause(); | 871 | pause(); |
893 | } | 872 | } |
894 | 873 | ||
@@ -953,7 +932,7 @@ static void initialize_kitten() | |||
953 | /*Assign the kitten a character and a color.*/ | 932 | /*Assign the kitten a character and a color.*/ |
954 | do { | 933 | do { |
955 | kitten.character = randchar(); | 934 | kitten.character = randchar(); |
956 | } while (!(validchar(kitten.character))); | 935 | } while (!(validchar(kitten.character))); |
957 | screen[kitten.x][kitten.y] = KITTEN; | 936 | screen[kitten.x][kitten.y] = KITTEN; |
958 | 937 | ||
959 | kitten.color = colors[randcolor()]; | 938 | kitten.color = colors[randcolor()]; |
@@ -973,7 +952,7 @@ static void initialize_bogus() | |||
973 | /*Give it a character.*/ | 952 | /*Give it a character.*/ |
974 | do { | 953 | do { |
975 | bogus[counter].character = randchar(); | 954 | bogus[counter].character = randchar(); |
976 | } while (!(validchar(bogus[counter].character))); | 955 | } while (!(validchar(bogus[counter].character))); |
977 | 956 | ||
978 | /*Give it a position.*/ | 957 | /*Give it a position.*/ |
979 | do { | 958 | do { |
@@ -1059,7 +1038,7 @@ enum plugin_status plugin_start(const void* parameter) | |||
1059 | /* | 1038 | /* |
1060 | * Run the game | 1039 | * Run the game |
1061 | */ | 1040 | */ |
1062 | instructions(); | 1041 | instructions(); |
1063 | 1042 | ||
1064 | initialize_screen(); | 1043 | initialize_screen(); |
1065 | 1044 | ||
diff --git a/apps/plugins/solitaire.c b/apps/plugins/solitaire.c index 47b1b25fa0..668f0d5f96 100644 --- a/apps/plugins/solitaire.c +++ b/apps/plugins/solitaire.c | |||
@@ -22,6 +22,7 @@ | |||
22 | #include "plugin.h" | 22 | #include "plugin.h" |
23 | #include "lib/playback_control.h" | 23 | #include "lib/playback_control.h" |
24 | #include "lib/configfile.h" | 24 | #include "lib/configfile.h" |
25 | #include "lib/display_text.h" | ||
25 | #include "button.h" | 26 | #include "button.h" |
26 | #include "lcd.h" | 27 | #include "lcd.h" |
27 | 28 | ||
@@ -448,26 +449,6 @@ PLUGIN_HEADER | |||
448 | #endif | 449 | #endif |
449 | 450 | ||
450 | /** | 451 | /** |
451 | * Help strings | ||
452 | */ | ||
453 | |||
454 | static int helplines; | ||
455 | static int displaylines; | ||
456 | |||
457 | static char helptext[] = | ||
458 | /* Use single spaces only! Close each line with one \0. */ | ||
459 | "-- Navigation --\0" | ||
460 | HK_LR ": Move the cursor to the previous/ next column.\0" | ||
461 | HK_UD ": Move the cursor up/ down in the column.\0" | ||
462 | HK_MOVE ": Select cards, move cards, reveal hidden cards...\0" | ||
463 | HK_DRAW ": Deselect a card if it was selected. Else draw new card(s) from the remains stack.\0" | ||
464 | "-- Shortcuts --\0" | ||
465 | HK_REM2CUR ": Put the card on top of the remains stack on top of the cursor.\0" | ||
466 | HK_CUR2STACK ": Put the card under the cursor on one of the 4 final stacks.\0" | ||
467 | HK_REM2STACK ": Put the card on top of the remains stack on one of the 4 final stacks.\0" | ||
468 | ; | ||
469 | |||
470 | /** | ||
471 | * Misc constants, graphics and other defines | 452 | * Misc constants, graphics and other defines |
472 | */ | 453 | */ |
473 | 454 | ||
@@ -634,122 +615,41 @@ static void draw_empty_stack( int s, int x, int y, bool cursor ) | |||
634 | draw_card_ext( x, y, false, cursor ); | 615 | draw_card_ext( x, y, false, cursor ); |
635 | } | 616 | } |
636 | 617 | ||
637 | /** | 618 | /* Help */ |
638 | * Help | 619 | static bool solitaire_help( void ) |
639 | */ | ||
640 | |||
641 | static void init_help(void) | ||
642 | { | ||
643 | int lines = 0; | ||
644 | int w_space, w, h; | ||
645 | int para_len; | ||
646 | char *para = helptext; | ||
647 | |||
648 | rb->lcd_getstringsize(" ", &w_space, &h); | ||
649 | displaylines = LCD_HEIGHT / h; | ||
650 | para_len = rb->strlen(para); | ||
651 | |||
652 | while (para_len) | ||
653 | { | ||
654 | bool first = true; | ||
655 | int x = 0; | ||
656 | char *next, *store; | ||
657 | |||
658 | next = rb->strtok_r(para, " ", &store); | ||
659 | while (next) | ||
660 | { | ||
661 | rb->lcd_getstringsize(next, &w, NULL); | ||
662 | if (!first) | ||
663 | { | ||
664 | if (x + w > LCD_WIDTH) | ||
665 | { | ||
666 | lines++; | ||
667 | x = 0; | ||
668 | } | ||
669 | else | ||
670 | next[-1] = ' '; /* re-concatenate string */ | ||
671 | } | ||
672 | else | ||
673 | first = false; | ||
674 | |||
675 | x += w + w_space; | ||
676 | next = rb->strtok_r(NULL, " ", &store); | ||
677 | } | ||
678 | |||
679 | lines++; | ||
680 | para += para_len + 1; | ||
681 | para_len = rb->strlen(para); | ||
682 | } | ||
683 | helplines = lines; | ||
684 | } | ||
685 | |||
686 | enum help { HELP_QUIT, HELP_USB }; | ||
687 | |||
688 | /* help for the not so intuitive interface */ | ||
689 | enum help solitaire_help( void ) | ||
690 | { | 620 | { |
691 | int start = 0; | ||
692 | int button; | 621 | int button; |
693 | int lastbutton = BUTTON_NONE; | 622 | #define WORDS (sizeof help_text / sizeof (char*)) |
694 | bool fixed = (displaylines >= helplines); | 623 | static char* help_text[] = { |
695 | 624 | "Solitaire", "", "Controlls", "", | |
696 | while( true ) | 625 | HK_LR ":", "Move", "the", "cursor", "to", "the", |
697 | { | 626 | "previous/", "next", "column.", "", |
698 | char *text = helptext; | 627 | HK_UD ":", "Move", "the", "cursor", "up/", "down", "in", "the", |
699 | int line = fixed ? (displaylines - helplines) / 2 : 0; | 628 | "column.", "", |
700 | int i; | 629 | HK_MOVE ":", "Select", "cards,", "move", "cards...", "", |
701 | 630 | HK_DRAW ":", "Deselect", "a", "card", "if", "it", "was", "selected.", | |
702 | rb->lcd_clear_display(); | 631 | "Else", "draw", "new", "card(s)", "from", "the", "remains", |
703 | 632 | "stack.", "", "", | |
704 | for (i = 0; i < start + displaylines; i++) | 633 | "Shortcuts", "", |
705 | { | 634 | HK_REM2CUR ":", "Put", "the", "card", "on", "top", "of", "the", |
706 | if (i >= start) | 635 | "remains", "stack", "on", "top", "of", "the", "cursor.", "", |
707 | rb->lcd_puts(0, line++, text); | 636 | HK_CUR2STACK ":", "Put", "the", "card", "under", "the", "cursor", |
708 | text += rb->strlen(text) + 1; | 637 | "on", "one", "of", "the", "4", "final", "stacks.", "", |
709 | } | 638 | HK_REM2STACK ":", "Put", "the", "card", "on", "top", "of", "the", |
710 | rb->lcd_update(); | 639 | "remains", "stack", "on", "one", "of", "the", "4", "final", |
711 | 640 | "stacks." | |
712 | button = rb->button_get( true ); | 641 | }; |
713 | switch( button ) | 642 | |
714 | { | 643 | if (display_text(WORDS, help_text, NULL, NULL)) |
715 | case SOL_UP: | 644 | return true; |
716 | #ifdef SOL_UP_PRE | 645 | do { |
717 | if( lastbutton != SOL_UP_PRE ) | 646 | button = rb->button_get(true); |
718 | break; | 647 | if ( rb->default_event_handler( button ) == SYS_USB_CONNECTED ) |
719 | #else | 648 | return true; |
720 | case SOL_UP|BUTTON_REPEAT: | 649 | } while( ( button == BUTTON_NONE ) |
721 | #endif | 650 | || ( button & (BUTTON_REL|BUTTON_REPEAT) ) ); |
722 | if (!fixed && start > 0) | 651 | |
723 | start--; | 652 | return false; |
724 | break; | ||
725 | |||
726 | case SOL_DOWN: | ||
727 | #ifdef SOL_DOWN_PRE | ||
728 | if( lastbutton != SOL_DOWN_PRE ) | ||
729 | break; | ||
730 | #else | ||
731 | case SOL_DOWN|BUTTON_REPEAT: | ||
732 | #endif | ||
733 | if (!fixed && start < helplines - displaylines) | ||
734 | start++; | ||
735 | break; | ||
736 | |||
737 | #ifdef SOL_RC_QUIT | ||
738 | case SOL_RC_QUIT: | ||
739 | #endif | ||
740 | case SOL_QUIT: | ||
741 | return HELP_QUIT; | ||
742 | |||
743 | default: | ||
744 | if( rb->default_event_handler( button ) == SYS_USB_CONNECTED ) | ||
745 | return HELP_USB; | ||
746 | break; | ||
747 | } | ||
748 | if( button != BUTTON_NONE ) | ||
749 | lastbutton = button; | ||
750 | |||
751 | rb->yield(); | ||
752 | } | ||
753 | } | 653 | } |
754 | 654 | ||
755 | /** | 655 | /** |
@@ -831,7 +731,7 @@ int solitaire_menu(bool in_game) | |||
831 | break; | 731 | break; |
832 | 732 | ||
833 | case 3: | 733 | case 3: |
834 | if (solitaire_help() == HELP_USB) | 734 | if (solitaire_help()) |
835 | result = MENU_USB; | 735 | result = MENU_USB; |
836 | break; | 736 | break; |
837 | 737 | ||
@@ -1929,8 +1829,6 @@ enum plugin_status plugin_start(const void* parameter ) | |||
1929 | else | 1829 | else |
1930 | result = SOLITAIRE_WIN; | 1830 | result = SOLITAIRE_WIN; |
1931 | 1831 | ||
1932 | init_help(); | ||
1933 | |||
1934 | /* play the game :) | 1832 | /* play the game :) |
1935 | * Keep playing if a game was won (that means display the menu after | 1833 | * Keep playing if a game was won (that means display the menu after |
1936 | * winning instead of quiting) */ | 1834 | * winning instead of quiting) */ |
diff --git a/apps/plugins/star.c b/apps/plugins/star.c index 4bb3afcbd5..0ab6dce17b 100644 --- a/apps/plugins/star.c +++ b/apps/plugins/star.c | |||
@@ -20,6 +20,7 @@ | |||
20 | ****************************************************************************/ | 20 | ****************************************************************************/ |
21 | #include "plugin.h" | 21 | #include "plugin.h" |
22 | #ifdef HAVE_LCD_BITMAP | 22 | #ifdef HAVE_LCD_BITMAP |
23 | #include "lib/display_text.h" | ||
23 | 24 | ||
24 | PLUGIN_HEADER | 25 | PLUGIN_HEADER |
25 | 26 | ||
@@ -66,6 +67,11 @@ PLUGIN_HEADER | |||
66 | #define STAR_LEVEL_UP BUTTON_F3 | 67 | #define STAR_LEVEL_UP BUTTON_F3 |
67 | #define STAR_LEVEL_DOWN BUTTON_F1 | 68 | #define STAR_LEVEL_DOWN BUTTON_F1 |
68 | #define STAR_LEVEL_REPEAT BUTTON_F2 | 69 | #define STAR_LEVEL_REPEAT BUTTON_F2 |
70 | #define STAR_TOGGLE_CONTROL_NAME "ON" | ||
71 | #define STAR_QUIT_NAME "OFF" | ||
72 | #define STAR_LEVEL_UP_NAME "F3" | ||
73 | #define STAR_LEVEL_DOWN_NAME "F1" | ||
74 | #define STAR_LEVEL_REPEAT_NAME "F2" | ||
69 | 75 | ||
70 | #elif CONFIG_KEYPAD == ARCHOS_AV300_PAD | 76 | #elif CONFIG_KEYPAD == ARCHOS_AV300_PAD |
71 | #define STAR_QUIT BUTTON_OFF | 77 | #define STAR_QUIT BUTTON_OFF |
@@ -78,6 +84,11 @@ PLUGIN_HEADER | |||
78 | #define STAR_LEVEL_UP BUTTON_F3 | 84 | #define STAR_LEVEL_UP BUTTON_F3 |
79 | #define STAR_LEVEL_DOWN BUTTON_F1 | 85 | #define STAR_LEVEL_DOWN BUTTON_F1 |
80 | #define STAR_LEVEL_REPEAT BUTTON_F2 | 86 | #define STAR_LEVEL_REPEAT BUTTON_F2 |
87 | #define STAR_TOGGLE_CONTROL_NAME "ON/SELECT" | ||
88 | #define STAR_QUIT_NAME "OFF" | ||
89 | #define STAR_LEVEL_UP_NAME "F3" | ||
90 | #define STAR_LEVEL_DOWN_NAME "F1" | ||
91 | #define STAR_LEVEL_REPEAT_NAME "F2" | ||
81 | 92 | ||
82 | #elif CONFIG_KEYPAD == ONDIO_PAD | 93 | #elif CONFIG_KEYPAD == ONDIO_PAD |
83 | #define STAR_QUIT BUTTON_OFF | 94 | #define STAR_QUIT BUTTON_OFF |
@@ -90,6 +101,11 @@ PLUGIN_HEADER | |||
90 | #define STAR_LEVEL_UP (BUTTON_MENU | BUTTON_RIGHT) | 101 | #define STAR_LEVEL_UP (BUTTON_MENU | BUTTON_RIGHT) |
91 | #define STAR_LEVEL_DOWN (BUTTON_MENU | BUTTON_LEFT) | 102 | #define STAR_LEVEL_DOWN (BUTTON_MENU | BUTTON_LEFT) |
92 | #define STAR_LEVEL_REPEAT (BUTTON_MENU | BUTTON_UP) | 103 | #define STAR_LEVEL_REPEAT (BUTTON_MENU | BUTTON_UP) |
104 | #define STAR_TOGGLE_CONTROL_NAME "MODE" | ||
105 | #define STAR_QUIT_NAME "OFF" | ||
106 | #define STAR_LEVEL_UP_NAME "M >" | ||
107 | #define STAR_LEVEL_DOWN_NAME "M <" | ||
108 | #define STAR_LEVEL_REPEAT_NAME "M ^" | ||
93 | 109 | ||
94 | #elif (CONFIG_KEYPAD == IRIVER_H100_PAD) || \ | 110 | #elif (CONFIG_KEYPAD == IRIVER_H100_PAD) || \ |
95 | (CONFIG_KEYPAD == IRIVER_H300_PAD) | 111 | (CONFIG_KEYPAD == IRIVER_H300_PAD) |
@@ -103,6 +119,11 @@ PLUGIN_HEADER | |||
103 | #define STAR_LEVEL_UP (BUTTON_ON | BUTTON_RIGHT) | 119 | #define STAR_LEVEL_UP (BUTTON_ON | BUTTON_RIGHT) |
104 | #define STAR_LEVEL_DOWN (BUTTON_ON | BUTTON_LEFT) | 120 | #define STAR_LEVEL_DOWN (BUTTON_ON | BUTTON_LEFT) |
105 | #define STAR_LEVEL_REPEAT (BUTTON_ON | BUTTON_SELECT) | 121 | #define STAR_LEVEL_REPEAT (BUTTON_ON | BUTTON_SELECT) |
122 | #define STAR_TOGGLE_CONTROL_NAME "MODE/SELECT" | ||
123 | #define STAR_QUIT_NAME "OFF" | ||
124 | #define STAR_LEVEL_UP_NAME "ON + RIGHT" | ||
125 | #define STAR_LEVEL_DOWN_NAME "ON + LEFT" | ||
126 | #define STAR_LEVEL_REPEAT_NAME "ON + NAVI" | ||
106 | 127 | ||
107 | #define STAR_RC_QUIT BUTTON_RC_STOP | 128 | #define STAR_RC_QUIT BUTTON_RC_STOP |
108 | #elif (CONFIG_KEYPAD == IPOD_4G_PAD) || \ | 129 | #elif (CONFIG_KEYPAD == IPOD_4G_PAD) || \ |
@@ -119,6 +140,11 @@ PLUGIN_HEADER | |||
119 | #define STAR_LEVEL_UP (BUTTON_SELECT | BUTTON_RIGHT) | 140 | #define STAR_LEVEL_UP (BUTTON_SELECT | BUTTON_RIGHT) |
120 | #define STAR_LEVEL_DOWN (BUTTON_SELECT | BUTTON_LEFT) | 141 | #define STAR_LEVEL_DOWN (BUTTON_SELECT | BUTTON_LEFT) |
121 | #define STAR_LEVEL_REPEAT (BUTTON_SELECT | BUTTON_PLAY) | 142 | #define STAR_LEVEL_REPEAT (BUTTON_SELECT | BUTTON_PLAY) |
143 | #define STAR_TOGGLE_CONTROL_NAME "SELECT" | ||
144 | #define STAR_QUIT_NAME "S + MENU" | ||
145 | #define STAR_LEVEL_UP_NAME "S >" | ||
146 | #define STAR_LEVEL_DOWN_NAME "S <" | ||
147 | #define STAR_LEVEL_REPEAT_NAME "S + PLAY" | ||
122 | 148 | ||
123 | #elif (CONFIG_KEYPAD == IAUDIO_X5M5_PAD) | 149 | #elif (CONFIG_KEYPAD == IAUDIO_X5M5_PAD) |
124 | 150 | ||
@@ -133,6 +159,11 @@ PLUGIN_HEADER | |||
133 | #define STAR_LEVEL_DOWN_PRE BUTTON_REC | 159 | #define STAR_LEVEL_DOWN_PRE BUTTON_REC |
134 | #define STAR_LEVEL_DOWN (BUTTON_REC|BUTTON_REPEAT) | 160 | #define STAR_LEVEL_DOWN (BUTTON_REC|BUTTON_REPEAT) |
135 | #define STAR_LEVEL_REPEAT BUTTON_PLAY | 161 | #define STAR_LEVEL_REPEAT BUTTON_PLAY |
162 | #define STAR_TOGGLE_CONTROL_NAME "SELECT" | ||
163 | #define STAR_QUIT_NAME "POWER" | ||
164 | #define STAR_LEVEL_UP_NAME "REC" | ||
165 | #define STAR_LEVEL_DOWN_NAME "REC.." | ||
166 | #define STAR_LEVEL_REPEAT_NAME "PLAY" | ||
136 | 167 | ||
137 | #elif (CONFIG_KEYPAD == GIGABEAT_PAD) | 168 | #elif (CONFIG_KEYPAD == GIGABEAT_PAD) |
138 | 169 | ||
@@ -145,13 +176,18 @@ PLUGIN_HEADER | |||
145 | #define STAR_LEVEL_UP BUTTON_VOL_UP | 176 | #define STAR_LEVEL_UP BUTTON_VOL_UP |
146 | #define STAR_LEVEL_DOWN BUTTON_VOL_DOWN | 177 | #define STAR_LEVEL_DOWN BUTTON_VOL_DOWN |
147 | #define STAR_LEVEL_REPEAT BUTTON_A | 178 | #define STAR_LEVEL_REPEAT BUTTON_A |
179 | #define STAR_TOGGLE_CONTROL_NAME "SELECT" | ||
180 | #define STAR_QUIT_NAME "POWER" | ||
181 | #define STAR_LEVEL_UP_NAME "VOL UP" | ||
182 | #define STAR_LEVEL_DOWN_NAME "VOL DOWN" | ||
183 | #define STAR_LEVEL_REPEAT_NAME "A" | ||
148 | 184 | ||
149 | #elif (CONFIG_KEYPAD == SANSA_E200_PAD) || \ | 185 | #elif (CONFIG_KEYPAD == SANSA_E200_PAD) || \ |
150 | (CONFIG_KEYPAD == SANSA_C200_PAD) || \ | 186 | (CONFIG_KEYPAD == SANSA_C200_PAD) || \ |
151 | (CONFIG_KEYPAD == SANSA_CLIP_PAD) || \ | 187 | (CONFIG_KEYPAD == SANSA_CLIP_PAD) || \ |
152 | (CONFIG_KEYPAD == SANSA_M200_PAD) | 188 | (CONFIG_KEYPAD == SANSA_M200_PAD) |
153 | 189 | ||
154 | #define STAR_QUIT BUTTON_POWER | 190 | #define STAR_QUIT BUTTON_POWER |
155 | #define STAR_LEFT BUTTON_LEFT | 191 | #define STAR_LEFT BUTTON_LEFT |
156 | #define STAR_RIGHT BUTTON_RIGHT | 192 | #define STAR_RIGHT BUTTON_RIGHT |
157 | #define STAR_UP BUTTON_UP | 193 | #define STAR_UP BUTTON_UP |
@@ -160,11 +196,15 @@ PLUGIN_HEADER | |||
160 | #define STAR_LEVEL_UP (BUTTON_SELECT | BUTTON_RIGHT) | 196 | #define STAR_LEVEL_UP (BUTTON_SELECT | BUTTON_RIGHT) |
161 | #define STAR_LEVEL_DOWN (BUTTON_SELECT | BUTTON_LEFT) | 197 | #define STAR_LEVEL_DOWN (BUTTON_SELECT | BUTTON_LEFT) |
162 | #define STAR_LEVEL_REPEAT (BUTTON_SELECT | BUTTON_DOWN) | 198 | #define STAR_LEVEL_REPEAT (BUTTON_SELECT | BUTTON_DOWN) |
163 | 199 | #define STAR_TOGGLE_CONTROL_NAME "SELECT" | |
200 | #define STAR_QUIT_NAME "POWER" | ||
201 | #define STAR_LEVEL_UP_NAME "SELECT + RIGHT" | ||
202 | #define STAR_LEVEL_DOWN_NAME "SELECT + LEFT" | ||
203 | #define STAR_LEVEL_REPEAT_NAME "SELECT + DOWN" | ||
164 | 204 | ||
165 | #elif (CONFIG_KEYPAD == SANSA_FUZE_PAD) | 205 | #elif (CONFIG_KEYPAD == SANSA_FUZE_PAD) |
166 | 206 | ||
167 | #define STAR_QUIT (BUTTON_HOME|BUTTON_REPEAT) | 207 | #define STAR_QUIT (BUTTON_HOME|BUTTON_REPEAT) |
168 | #define STAR_LEFT BUTTON_LEFT | 208 | #define STAR_LEFT BUTTON_LEFT |
169 | #define STAR_RIGHT BUTTON_RIGHT | 209 | #define STAR_RIGHT BUTTON_RIGHT |
170 | #define STAR_UP BUTTON_UP | 210 | #define STAR_UP BUTTON_UP |
@@ -173,6 +213,11 @@ PLUGIN_HEADER | |||
173 | #define STAR_LEVEL_UP (BUTTON_SELECT | BUTTON_RIGHT) | 213 | #define STAR_LEVEL_UP (BUTTON_SELECT | BUTTON_RIGHT) |
174 | #define STAR_LEVEL_DOWN (BUTTON_SELECT | BUTTON_LEFT) | 214 | #define STAR_LEVEL_DOWN (BUTTON_SELECT | BUTTON_LEFT) |
175 | #define STAR_LEVEL_REPEAT (BUTTON_SELECT | BUTTON_DOWN) | 215 | #define STAR_LEVEL_REPEAT (BUTTON_SELECT | BUTTON_DOWN) |
216 | #define STAR_TOGGLE_CONTROL_NAME "SELECT" | ||
217 | #define STAR_QUIT_NAME "HOME" | ||
218 | #define STAR_LEVEL_UP_NAME "SELECT + RIGHT" | ||
219 | #define STAR_LEVEL_DOWN_NAME "SELECT + LEFT" | ||
220 | #define STAR_LEVEL_REPEAT_NAME "SELECT + DOWN" | ||
176 | 221 | ||
177 | #elif (CONFIG_KEYPAD == IRIVER_H10_PAD) | 222 | #elif (CONFIG_KEYPAD == IRIVER_H10_PAD) |
178 | 223 | ||
@@ -185,6 +230,11 @@ PLUGIN_HEADER | |||
185 | #define STAR_LEVEL_UP (BUTTON_PLAY | BUTTON_SCROLL_UP) | 230 | #define STAR_LEVEL_UP (BUTTON_PLAY | BUTTON_SCROLL_UP) |
186 | #define STAR_LEVEL_DOWN (BUTTON_PLAY | BUTTON_SCROLL_DOWN) | 231 | #define STAR_LEVEL_DOWN (BUTTON_PLAY | BUTTON_SCROLL_DOWN) |
187 | #define STAR_LEVEL_REPEAT (BUTTON_PLAY | BUTTON_RIGHT) | 232 | #define STAR_LEVEL_REPEAT (BUTTON_PLAY | BUTTON_RIGHT) |
233 | #define STAR_TOGGLE_CONTROL_NAME "REW" | ||
234 | #define STAR_QUIT_NAME "POWER" | ||
235 | #define STAR_LEVEL_UP_NAME "PLAY+UP" | ||
236 | #define STAR_LEVEL_DOWN_NAME "PLAY+DOWN" | ||
237 | #define STAR_LEVEL_REPEAT_NAME "PLAY+RIGHT" | ||
188 | 238 | ||
189 | #elif (CONFIG_KEYPAD == GIGABEAT_S_PAD) | 239 | #elif (CONFIG_KEYPAD == GIGABEAT_S_PAD) |
190 | 240 | ||
@@ -197,6 +247,11 @@ PLUGIN_HEADER | |||
197 | #define STAR_LEVEL_UP BUTTON_VOL_UP | 247 | #define STAR_LEVEL_UP BUTTON_VOL_UP |
198 | #define STAR_LEVEL_DOWN BUTTON_VOL_DOWN | 248 | #define STAR_LEVEL_DOWN BUTTON_VOL_DOWN |
199 | #define STAR_LEVEL_REPEAT BUTTON_MENU | 249 | #define STAR_LEVEL_REPEAT BUTTON_MENU |
250 | #define STAR_TOGGLE_CONTROL_NAME "SELECT" | ||
251 | #define STAR_QUIT_NAME "BACK" | ||
252 | #define STAR_LEVEL_UP_NAME "VOL UP" | ||
253 | #define STAR_LEVEL_DOWN_NAME "VOL DOWN" | ||
254 | #define STAR_LEVEL_REPEAT_NAME "MENU" | ||
200 | 255 | ||
201 | #elif (CONFIG_KEYPAD == MROBE100_PAD) | 256 | #elif (CONFIG_KEYPAD == MROBE100_PAD) |
202 | 257 | ||
@@ -209,6 +264,11 @@ PLUGIN_HEADER | |||
209 | #define STAR_LEVEL_UP BUTTON_PLAY | 264 | #define STAR_LEVEL_UP BUTTON_PLAY |
210 | #define STAR_LEVEL_DOWN BUTTON_MENU | 265 | #define STAR_LEVEL_DOWN BUTTON_MENU |
211 | #define STAR_LEVEL_REPEAT BUTTON_DISPLAY | 266 | #define STAR_LEVEL_REPEAT BUTTON_DISPLAY |
267 | #define STAR_TOGGLE_CONTROL_NAME "SELECT" | ||
268 | #define STAR_QUIT_NAME "POWER" | ||
269 | #define STAR_LEVEL_UP_NAME "PLAY" | ||
270 | #define STAR_LEVEL_DOWN_NAME "MENU" | ||
271 | #define STAR_LEVEL_REPEAT_NAME "DISPLAY" | ||
212 | 272 | ||
213 | #elif CONFIG_KEYPAD == IAUDIO_M3_PAD | 273 | #elif CONFIG_KEYPAD == IAUDIO_M3_PAD |
214 | 274 | ||
@@ -221,11 +281,16 @@ PLUGIN_HEADER | |||
221 | #define STAR_LEVEL_UP (BUTTON_RC_PLAY|BUTTON_RC_VOL_UP) | 281 | #define STAR_LEVEL_UP (BUTTON_RC_PLAY|BUTTON_RC_VOL_UP) |
222 | #define STAR_LEVEL_DOWN (BUTTON_RC_PLAY|BUTTON_RC_VOL_DOWN) | 282 | #define STAR_LEVEL_DOWN (BUTTON_RC_PLAY|BUTTON_RC_VOL_DOWN) |
223 | #define STAR_LEVEL_REPEAT (BUTTON_RC_PLAY|BUTTON_RC_MENU) | 283 | #define STAR_LEVEL_REPEAT (BUTTON_RC_PLAY|BUTTON_RC_MENU) |
284 | #define STAR_TOGGLE_CONTROL_NAME "MODE" | ||
285 | #define STAR_QUIT_NAME "REC" | ||
286 | #define STAR_LEVEL_UP_NAME "PLAY+VOL+" | ||
287 | #define STAR_LEVEL_DOWN_NAME "PLAY+VOL-" | ||
288 | #define STAR_LEVEL_REPEAT_NAME "PLAY+MENU" | ||
224 | 289 | ||
225 | #elif (CONFIG_KEYPAD == COWOND2_PAD) | 290 | #elif (CONFIG_KEYPAD == COWOND2_PAD) |
226 | 291 | ||
227 | #define STAR_QUIT BUTTON_POWER | 292 | #define STAR_QUIT BUTTON_POWER |
228 | #define STAR_QUIT_NAME "[POWER]" | 293 | #define STAR_QUIT_NAME "POWER" |
229 | 294 | ||
230 | #elif CONFIG_KEYPAD == CREATIVEZVM_PAD | 295 | #elif CONFIG_KEYPAD == CREATIVEZVM_PAD |
231 | 296 | ||
@@ -238,6 +303,11 @@ PLUGIN_HEADER | |||
238 | #define STAR_LEVEL_UP (BUTTON_CUSTOM | BUTTON_UP) | 303 | #define STAR_LEVEL_UP (BUTTON_CUSTOM | BUTTON_UP) |
239 | #define STAR_LEVEL_DOWN (BUTTON_CUSTOM | BUTTON_DOWN) | 304 | #define STAR_LEVEL_DOWN (BUTTON_CUSTOM | BUTTON_DOWN) |
240 | #define STAR_LEVEL_REPEAT (BUTTON_CUSTOM | BUTTON_RIGHT) | 305 | #define STAR_LEVEL_REPEAT (BUTTON_CUSTOM | BUTTON_RIGHT) |
306 | #define STAR_TOGGLE_CONTROL_NAME "PLAY" | ||
307 | #define STAR_QUIT_NAME "BACK" | ||
308 | #define STAR_LEVEL_UP_NAME "CUSTOM+UP" | ||
309 | #define STAR_LEVEL_DOWN_NAME "CUSTOM+DOWN" | ||
310 | #define STAR_LEVEL_REPEAT_NAME "CUSTOM+RIGHT" | ||
241 | 311 | ||
242 | #elif CONFIG_KEYPAD == PHILIPS_HDD1630_PAD | 312 | #elif CONFIG_KEYPAD == PHILIPS_HDD1630_PAD |
243 | 313 | ||
@@ -250,15 +320,20 @@ PLUGIN_HEADER | |||
250 | #define STAR_LEVEL_UP BUTTON_VOL_UP | 320 | #define STAR_LEVEL_UP BUTTON_VOL_UP |
251 | #define STAR_LEVEL_DOWN BUTTON_VOL_DOWN | 321 | #define STAR_LEVEL_DOWN BUTTON_VOL_DOWN |
252 | #define STAR_LEVEL_REPEAT BUTTON_VIEW | 322 | #define STAR_LEVEL_REPEAT BUTTON_VIEW |
323 | #define STAR_TOGGLE_CONTROL_NAME "SELECT" | ||
324 | #define STAR_QUIT_NAME "POWER" | ||
325 | #define STAR_LEVEL_UP_NAME "VOL UP" | ||
326 | #define STAR_LEVEL_DOWN_NAME "VOL DOWN" | ||
327 | #define STAR_LEVEL_REPEAT_NAME "VIEW" | ||
253 | 328 | ||
254 | #elif (CONFIG_KEYPAD == ONDAVX747_PAD) | 329 | #elif (CONFIG_KEYPAD == ONDAVX747_PAD) |
255 | 330 | ||
256 | #define STAR_QUIT BUTTON_POWER | 331 | #define STAR_QUIT BUTTON_POWER |
257 | #define STAR_QUIT_NAME "[POWER]" | 332 | #define STAR_QUIT_NAME "POWER" |
258 | 333 | ||
259 | #elif CONFIG_KEYPAD == MROBE500_PAD | 334 | #elif CONFIG_KEYPAD == MROBE500_PAD |
260 | #define STAR_QUIT BUTTON_POWER | 335 | #define STAR_QUIT BUTTON_POWER |
261 | #define STAR_QUIT_NAME "[POWER]" | 336 | #define STAR_QUIT_NAME "POWER" |
262 | 337 | ||
263 | #else | 338 | #else |
264 | #error No keymap defined! | 339 | #error No keymap defined! |
@@ -267,7 +342,7 @@ PLUGIN_HEADER | |||
267 | #ifdef HAVE_TOUCHSCREEN | 342 | #ifdef HAVE_TOUCHSCREEN |
268 | //#ifndef STAR_QUIT | 343 | //#ifndef STAR_QUIT |
269 | //#define STAR_QUIT BUTTON_TOPLEFT | 344 | //#define STAR_QUIT BUTTON_TOPLEFT |
270 | //#define STAR_QUIT_NAME "[TOPLEFT]" | 345 | //#define STAR_QUIT_NAME "TOPLEFT" |
271 | //#endif | 346 | //#endif |
272 | #ifndef STAR_LEFT | 347 | #ifndef STAR_LEFT |
273 | #define STAR_LEFT BUTTON_MIDLEFT | 348 | #define STAR_LEFT BUTTON_MIDLEFT |
@@ -283,19 +358,19 @@ PLUGIN_HEADER | |||
283 | #endif | 358 | #endif |
284 | #ifndef STAR_TOGGLE_CONTROL | 359 | #ifndef STAR_TOGGLE_CONTROL |
285 | #define STAR_TOGGLE_CONTROL BUTTON_CENTER | 360 | #define STAR_TOGGLE_CONTROL BUTTON_CENTER |
286 | #define STAR_TOGGLE_CONTROL_NAME "[CENTER]" | 361 | #define STAR_TOGGLE_CONTROL_NAME "CENTER" |
287 | #endif | 362 | #endif |
288 | #ifndef STAR_LEVEL_UP | 363 | #ifndef STAR_LEVEL_UP |
289 | #define STAR_LEVEL_UP BUTTON_TOPLEFT | 364 | #define STAR_LEVEL_UP BUTTON_TOPLEFT |
290 | #define STAR_LEVEL_UP_NAME "[TOPLEFT]" | 365 | #define STAR_LEVEL_UP_NAME "TOPLEFT" |
291 | #endif | 366 | #endif |
292 | #ifndef STAR_LEVEL_DOWN | 367 | #ifndef STAR_LEVEL_DOWN |
293 | #define STAR_LEVEL_DOWN BUTTON_BOTTOMLEFT | 368 | #define STAR_LEVEL_DOWN BUTTON_BOTTOMLEFT |
294 | #define STAR_LEVEL_DOWN_NAME "[BOTTOMLEFT]" | 369 | #define STAR_LEVEL_DOWN_NAME "BOTTOMLEFT" |
295 | #endif | 370 | #endif |
296 | #ifndef STAR_LEVEL_REPEAT | 371 | #ifndef STAR_LEVEL_REPEAT |
297 | #define STAR_LEVEL_REPEAT BUTTON_BOTTOMRIGHT | 372 | #define STAR_LEVEL_REPEAT BUTTON_BOTTOMRIGHT |
298 | #define STAR_LEVEL_REPEAT_NAME "[BOTTOMRIGHT]" | 373 | #define STAR_LEVEL_REPEAT_NAME "BOTTOMRIGHT" |
299 | #endif | 374 | #endif |
300 | #endif | 375 | #endif |
301 | 376 | ||
@@ -539,104 +614,6 @@ static unsigned char* levels = | |||
539 | "****************"; | 614 | "****************"; |
540 | 615 | ||
541 | /** | 616 | /** |
542 | * Display text. | ||
543 | */ | ||
544 | void star_display_text(char *str, bool waitkey) | ||
545 | { | ||
546 | int chars_by_line; | ||
547 | int lines_by_screen; | ||
548 | int chars_for_line; | ||
549 | int current_line = 0; | ||
550 | int first_char_index = 0; | ||
551 | char *ptr_char; | ||
552 | char *ptr_line; | ||
553 | int i; | ||
554 | char line[255]; | ||
555 | int key; | ||
556 | bool go_on; | ||
557 | |||
558 | rb->lcd_clear_display(); | ||
559 | |||
560 | chars_by_line = LCD_WIDTH / char_width; | ||
561 | lines_by_screen = LCD_HEIGHT / char_height; | ||
562 | |||
563 | do | ||
564 | { | ||
565 | ptr_char = str + first_char_index; | ||
566 | chars_for_line = 0; | ||
567 | i = 0; | ||
568 | ptr_line = line; | ||
569 | while (i < chars_by_line) | ||
570 | { | ||
571 | switch (*ptr_char) | ||
572 | { | ||
573 | case '\t': | ||
574 | case ' ': | ||
575 | *(ptr_line++) = ' '; | ||
576 | case '\n': | ||
577 | case '\0': | ||
578 | chars_for_line = i; | ||
579 | break; | ||
580 | |||
581 | default: | ||
582 | *(ptr_line++) = *ptr_char; | ||
583 | } | ||
584 | if (*ptr_char == '\n' || *ptr_char == '\0') | ||
585 | break; | ||
586 | ptr_char++; | ||
587 | i++; | ||
588 | } | ||
589 | |||
590 | if (chars_for_line == 0) | ||
591 | chars_for_line = i; | ||
592 | |||
593 | line[chars_for_line] = '\0'; | ||
594 | |||
595 | /* test if we have cut a word. If it is the case we don't have to */ | ||
596 | /* skip the space */ | ||
597 | if (i == chars_by_line && chars_for_line == chars_by_line) | ||
598 | first_char_index += chars_for_line; | ||
599 | else | ||
600 | first_char_index += chars_for_line + 1; | ||
601 | |||
602 | /* print the line on the screen */ | ||
603 | rb->lcd_putsxy(0, current_line * char_height, line); | ||
604 | |||
605 | /* if the number of line showed on the screen is equals to the */ | ||
606 | /* maximum number of line we can show, we wait for a key pressed to */ | ||
607 | /* clear and show the remaining text. */ | ||
608 | current_line++; | ||
609 | if (current_line == lines_by_screen || *ptr_char == '\0') | ||
610 | { | ||
611 | current_line = 0; | ||
612 | rb->lcd_update(); | ||
613 | go_on = false; | ||
614 | while (waitkey && !go_on) | ||
615 | { | ||
616 | key = rb->button_get(true); | ||
617 | switch (key) | ||
618 | { | ||
619 | case STAR_QUIT: | ||
620 | case STAR_LEFT: | ||
621 | case STAR_DOWN: | ||
622 | go_on = true; | ||
623 | break; | ||
624 | |||
625 | default: | ||
626 | if (rb->default_event_handler(key) == SYS_USB_CONNECTED) | ||
627 | { | ||
628 | usb_detected = true; | ||
629 | go_on = true; | ||
630 | break; | ||
631 | } | ||
632 | } | ||
633 | } | ||
634 | rb->lcd_clear_display(); | ||
635 | } | ||
636 | } while (*ptr_char != '\0'); | ||
637 | } | ||
638 | |||
639 | /** | ||
640 | * Do a pretty transition from one level to another. | 617 | * Do a pretty transition from one level to another. |
641 | */ | 618 | */ |
642 | static void star_transition_update(void) | 619 | static void star_transition_update(void) |
@@ -986,7 +963,7 @@ static int star_run_game(int current_level) | |||
986 | if (current_level == STAR_LEVEL_COUNT) | 963 | if (current_level == STAR_LEVEL_COUNT) |
987 | { | 964 | { |
988 | rb->lcd_clear_display(); | 965 | rb->lcd_clear_display(); |
989 | star_display_text("Congratulations!", true); | 966 | rb->splash(HZ*2, "Congratulations!"); |
990 | rb->lcd_update(); | 967 | rb->lcd_update(); |
991 | 968 | ||
992 | /* There is no such level as STAR_LEVEL_COUNT so it can't be the | 969 | /* There is no such level as STAR_LEVEL_COUNT so it can't be the |
@@ -1000,6 +977,45 @@ static int star_run_game(int current_level) | |||
1000 | } | 977 | } |
1001 | 978 | ||
1002 | /** | 979 | /** |
980 | * Display help text. | ||
981 | */ | ||
982 | static bool star_help(void) | ||
983 | { | ||
984 | int button; | ||
985 | #define WORDS (sizeof help_text / sizeof (char*)) | ||
986 | static char* help_text[] = { | ||
987 | "Star", "", "Aim", "", | ||
988 | "Take", "all", "the", "stars", "to", "go", "to", "the", "next", "level.", | ||
989 | "You", "can", "toggle", "control", "with", "the", "block", "to", "use", | ||
990 | "it", "as", "a", "mobile", "wall.", "The", "block", "cannot", "take", | ||
991 | "stars.", "", "", | ||
992 | "Controls", "", | ||
993 | STAR_TOGGLE_CONTROL_NAME":", "Toggle", "Control", "", | ||
994 | STAR_QUIT_NAME":", "", "Exit", "", | ||
995 | STAR_LEVEL_DOWN_NAME":", "Prev.", "level", "", | ||
996 | STAR_LEVEL_REPEAT_NAME":", "Reset", "level", "", | ||
997 | STAR_LEVEL_UP_NAME":", "Next", "level" | ||
998 | }; | ||
999 | static struct style_text formation[]={ | ||
1000 | { 0, TEXT_CENTER|TEXT_UNDERLINE }, | ||
1001 | { 2, C_RED }, | ||
1002 | { 35, C_RED }, | ||
1003 | { -1, 0 } | ||
1004 | }; | ||
1005 | |||
1006 | if (display_text(WORDS, help_text, formation, NULL)) | ||
1007 | return true; | ||
1008 | do { | ||
1009 | button = rb->button_get(true); | ||
1010 | if ( rb->default_event_handler( button ) == SYS_USB_CONNECTED ) | ||
1011 | return true; | ||
1012 | } while( ( button == BUTTON_NONE ) | ||
1013 | || ( button & (BUTTON_REL|BUTTON_REPEAT) ) ); | ||
1014 | |||
1015 | return false; | ||
1016 | } | ||
1017 | |||
1018 | /** | ||
1003 | * Display the choice menu. | 1019 | * Display the choice menu. |
1004 | */ | 1020 | */ |
1005 | static int star_menu(void) | 1021 | static int star_menu(void) |
@@ -1010,7 +1026,7 @@ static int star_menu(void) | |||
1010 | rb->lcd_getstringsize("a", &char_width, &char_height); | 1026 | rb->lcd_getstringsize("a", &char_width, &char_height); |
1011 | 1027 | ||
1012 | MENUITEM_STRINGLIST(menu,"Star Menu",NULL,"Play","Choose Level", | 1028 | MENUITEM_STRINGLIST(menu,"Star Menu",NULL,"Play","Choose Level", |
1013 | "Information","Keys","Quit"); | 1029 | "Help", "Quit"); |
1014 | 1030 | ||
1015 | while(!menu_quit) | 1031 | while(!menu_quit) |
1016 | { | 1032 | { |
@@ -1024,80 +1040,8 @@ static int star_menu(void) | |||
1024 | NULL, 1, 1, STAR_LEVEL_COUNT, NULL ); | 1040 | NULL, 1, 1, STAR_LEVEL_COUNT, NULL ); |
1025 | break; | 1041 | break; |
1026 | case 2: | 1042 | case 2: |
1027 | star_display_text( | 1043 | if(star_help()) |
1028 | "INFO\n\n" | 1044 | usb_detected = true; |
1029 | "Take all the stars to go to the next level. " | ||
1030 | "You can toggle control with the block to " | ||
1031 | "use it as a mobile wall. The block cannot " | ||
1032 | "take stars.", true); | ||
1033 | break; | ||
1034 | case 3: | ||
1035 | #if CONFIG_KEYPAD == RECORDER_PAD | ||
1036 | star_display_text("KEYS\n\n" | ||
1037 | "[ON] Toggle Ctl.\n" | ||
1038 | "[OFF] Exit\n" | ||
1039 | "[F1] Prev. level\n" | ||
1040 | "[F2] Reset level\n" | ||
1041 | "[F3] Next level", true); | ||
1042 | #elif CONFIG_KEYPAD == ONDIO_PAD | ||
1043 | star_display_text("KEYS\n\n" | ||
1044 | "[MODE] Toggle Ctl\n" | ||
1045 | "[OFF] Exit\n" | ||
1046 | "[M <] Prev. level\n" | ||
1047 | "[M ^] Reset level\n" | ||
1048 | "[M >] Next level", true); | ||
1049 | #elif (CONFIG_KEYPAD == IRIVER_H100_PAD) || (CONFIG_KEYPAD == IRIVER_H300_PAD) | ||
1050 | star_display_text("KEYS\n\n" | ||
1051 | "[MODE/NAVI] Toggle Ctrl\n" | ||
1052 | "[OFF] Exit\n" | ||
1053 | "[ON + LEFT] Prev. level\n" | ||
1054 | "[ON + NAVI] Reset level\n" | ||
1055 | "[ON + RIGHT] Next level", true); | ||
1056 | #elif (CONFIG_KEYPAD == IPOD_4G_PAD) || (CONFIG_KEYPAD == IPOD_3G_PAD) || \ | ||
1057 | (CONFIG_KEYPAD == IPOD_1G2G_PAD) | ||
1058 | star_display_text("KEYS\n\n" | ||
1059 | "[SELECT] Toggle Ctl\n" | ||
1060 | "[S + MENU] Exit\n" | ||
1061 | "[S <] Prev. level\n" | ||
1062 | "[S + PLAY] Reset level\n" | ||
1063 | "[S >] Next level", true); | ||
1064 | #elif CONFIG_KEYPAD == IAUDIO_X5M5_PAD | ||
1065 | star_display_text("KEYS\n\n" | ||
1066 | "[SELECT] Toggle Ctl\n" | ||
1067 | "[POWER] Exit\n" | ||
1068 | "[REC..] Prev. level\n" | ||
1069 | "[PLAY] Reset level\n" | ||
1070 | "[REC] Next level", true); | ||
1071 | #elif CONFIG_KEYPAD == GIGABEAT_PAD | ||
1072 | star_display_text("KEYS\n\n" | ||
1073 | "[SELECT] Toggle Control\n" | ||
1074 | "[POWER] Exit\n" | ||
1075 | "[VOL DOWN] Prev. level\n" | ||
1076 | "[A] Reset level\n" | ||
1077 | "[VOL UP] Next level", true); | ||
1078 | #elif CONFIG_KEYPAD == IRIVER_H10_PAD | ||
1079 | star_display_text("KEYS\n\n" | ||
1080 | "[REW] Toggle Ctl\n" | ||
1081 | "[POWER] Exit\n" | ||
1082 | "[PLAY+DOWN] Prev. level\n" | ||
1083 | "[PLAY+RIGHT] Reset level\n" | ||
1084 | "[PLAY+UP] Next level", true); | ||
1085 | #elif CONFIG_KEYPAD == GIGABEAT_S_PAD | ||
1086 | star_display_text("KEYS\n\n" | ||
1087 | "[SELECT] Toggle Control\n" | ||
1088 | "[BACK] Exit\n" | ||
1089 | "[VOL DOWN] Prev. level\n" | ||
1090 | "[MENU] Reset level\n" | ||
1091 | "[VOL UP] Next level", true); | ||
1092 | #endif | ||
1093 | #ifdef HAVE_TOUCHSCREEN | ||
1094 | star_display_text("KEYS\n\n" | ||
1095 | STAR_TOGGLE_CONTROL_NAME " Toggle Control\n" | ||
1096 | STAR_QUIT_NAME " Exit\n" | ||
1097 | STAR_LEVEL_DOWN_NAME " Prev. level\n" | ||
1098 | STAR_LEVEL_REPEAT_NAME " Reset level\n" | ||
1099 | STAR_LEVEL_UP_NAME " Next level", true); | ||
1100 | #endif | ||
1101 | break; | 1045 | break; |
1102 | default: | 1046 | default: |
1103 | menu_quit = true; | 1047 | menu_quit = true; |
diff --git a/apps/plugins/superdom.c b/apps/plugins/superdom.c index 80dd4f518b..1a44bad518 100644 --- a/apps/plugins/superdom.c +++ b/apps/plugins/superdom.c | |||
@@ -20,6 +20,7 @@ | |||
20 | ****************************************************************************/ | 20 | ****************************************************************************/ |
21 | #include "plugin.h" | 21 | #include "plugin.h" |
22 | #include "lib/playback_control.h" | 22 | #include "lib/playback_control.h" |
23 | #include "lib/display_text.h" | ||
23 | PLUGIN_HEADER | 24 | PLUGIN_HEADER |
24 | 25 | ||
25 | extern const fb_data superdom_boarditems[]; | 26 | extern const fb_data superdom_boarditems[]; |
@@ -557,11 +558,9 @@ int settings_menu_function(void) { | |||
557 | 558 | ||
558 | static int do_help(void) { | 559 | static int do_help(void) { |
559 | int button; | 560 | int button; |
560 | int y = MARGIN, space_w, width, height; | 561 | #define WORDS (sizeof help_text / sizeof (char*)) |
561 | unsigned short x = MARGIN, i = 0; | 562 | static char* help_text[] = { |
562 | #define WORDS (sizeof instructions / sizeof (char*)) | 563 | "Super", "domination", "is", "a", "turn", "based", "strategy", "game,", |
563 | static char* instructions[] = { | ||
564 | "Super", "domination", "is", "a", "turn", "based", "strategy", "game,", | ||
565 | "where", "the", "aim", "is", "to", "overpower", "the", "computer", | 564 | "where", "the", "aim", "is", "to", "overpower", "the", "computer", |
566 | "player", "by", "taking", "their", "territory.", "", | 565 | "player", "by", "taking", "their", "territory.", "", |
567 | "Each", "year", "you", "are", "allocated", "an", "amount", "of", "cash", | 566 | "Each", "year", "you", "are", "allocated", "an", "amount", "of", "cash", |
@@ -572,49 +571,17 @@ static int do_help(void) { | |||
572 | "the", "ownership", "of", "adjacent", "tiles,", "and", "the", "type", | 571 | "the", "ownership", "of", "adjacent", "tiles,", "and", "the", "type", |
573 | "and", "number", "of", "troops", "on", "them.", | 572 | "and", "number", "of", "troops", "on", "them.", |
574 | }; | 573 | }; |
575 | rb->lcd_clear_display(); | ||
576 | rb->lcd_getstringsize(" ", &space_w, &height); | ||
577 | for (i = 0; i < WORDS; i++) { | ||
578 | rb->lcd_getstringsize(instructions[i], &width, NULL); | ||
579 | /* Skip to next line if the current one can't fit the word */ | ||
580 | if (x + width > LCD_WIDTH - MARGIN) { | ||
581 | x = MARGIN; | ||
582 | y += height; | ||
583 | } | ||
584 | /* .. or if the word is the empty string */ | ||
585 | if (rb->strcmp(instructions[i], "") == 0) { | ||
586 | x = MARGIN; | ||
587 | y += height; | ||
588 | continue; | ||
589 | } | ||
590 | /* We filled the screen */ | ||
591 | if (y + height > LCD_HEIGHT - MARGIN) { | ||
592 | y = MARGIN; | ||
593 | rb->lcd_update(); | ||
594 | do { | ||
595 | button = rb->button_get(true); | ||
596 | if (button == SYS_USB_CONNECTED) { | ||
597 | return PLUGIN_USB_CONNECTED; | ||
598 | } | ||
599 | } while( ( button == BUTTON_NONE ) | ||
600 | || ( button & (BUTTON_REL|BUTTON_REPEAT) ) ); | ||
601 | |||
602 | 574 | ||
603 | rb->lcd_clear_display(); | 575 | if (display_text(WORDS, help_text, NULL, NULL)) |
604 | } | 576 | return PLUGIN_USB_CONNECTED; |
605 | rb->lcd_putsxy(x, y, instructions[i]); | ||
606 | x += width + space_w; | ||
607 | } | ||
608 | rb->lcd_update(); | ||
609 | do { | 577 | do { |
610 | button = rb->button_get(true); | 578 | button = rb->button_get(true); |
611 | if (button == SYS_USB_CONNECTED) { | 579 | if ( rb->default_event_handler( button ) == SYS_USB_CONNECTED ) |
612 | return PLUGIN_USB_CONNECTED; | 580 | return PLUGIN_USB_CONNECTED; |
613 | } | ||
614 | } while( ( button == BUTTON_NONE ) | 581 | } while( ( button == BUTTON_NONE ) |
615 | || ( button & (BUTTON_REL|BUTTON_REPEAT) ) ); | 582 | || ( button & (BUTTON_REL|BUTTON_REPEAT) ) ); |
616 | 583 | ||
617 | return 0; | 584 | return PLUGIN_OK; |
618 | } | 585 | } |
619 | 586 | ||
620 | int menu(void) { | 587 | int menu(void) { |
@@ -661,7 +628,7 @@ int save_game(void) { | |||
661 | if(fd < 0) { | 628 | if(fd < 0) { |
662 | DEBUGF("Couldn't create/open file\n"); | 629 | DEBUGF("Couldn't create/open file\n"); |
663 | return -1; | 630 | return -1; |
664 | } | 631 | } |
665 | 632 | ||
666 | rb->write(fd, "SSGv3", 5); | 633 | rb->write(fd, "SSGv3", 5); |
667 | rb->write(fd, &gamestate, sizeof(gamestate)); | 634 | rb->write(fd, &gamestate, sizeof(gamestate)); |
@@ -1599,7 +1566,7 @@ int killmen(int colour) { | |||
1599 | } | 1566 | } |
1600 | } | 1567 | } |
1601 | } | 1568 | } |
1602 | 1569 | ||
1603 | if(human) | 1570 | if(human) |
1604 | humanres.men -= menkilled; | 1571 | humanres.men -= menkilled; |
1605 | else | 1572 | else |