summaryrefslogtreecommitdiff
path: root/apps/plugins/puzzles/rockbox.c
diff options
context:
space:
mode:
Diffstat (limited to 'apps/plugins/puzzles/rockbox.c')
-rw-r--r--apps/plugins/puzzles/rockbox.c93
1 files changed, 17 insertions, 76 deletions
diff --git a/apps/plugins/puzzles/rockbox.c b/apps/plugins/puzzles/rockbox.c
index eee85b72d0..45e0df7edb 100644
--- a/apps/plugins/puzzles/rockbox.c
+++ b/apps/plugins/puzzles/rockbox.c
@@ -23,6 +23,7 @@
23 23
24#include "plugin.h" 24#include "plugin.h"
25 25
26#include "help.h"
26#include "keymaps.h" 27#include "keymaps.h"
27#include "src/puzzles.h" 28#include "src/puzzles.h"
28 29
@@ -34,6 +35,9 @@
34 35
35/* how many ticks between timer callbacks */ 36/* how many ticks between timer callbacks */
36#define TIMER_INTERVAL (HZ / 50) 37#define TIMER_INTERVAL (HZ / 50)
38
39#define DEBUG_MENU
40
37#define BG_R .9f /* very light gray */ 41#define BG_R .9f /* very light gray */
38#define BG_G .9f 42#define BG_G .9f
39#define BG_B .9f 43#define BG_B .9f
@@ -61,7 +65,7 @@ static unsigned *colors = NULL;
61static int ncolors = 0; 65static int ncolors = 0;
62static long last_keystate = 0; 66static long last_keystate = 0;
63 67
64#ifdef FOR_REAL 68#if defined(FOR_REAL) && defined(DEBUG_MENU)
65/* the "debug menu" is hidden by default in order to avoid the 69/* the "debug menu" is hidden by default in order to avoid the
66 * naturally ensuing complaints from users */ 70 * naturally ensuing complaints from users */
67static bool debug_mode = false; 71static bool debug_mode = false;
@@ -743,7 +747,7 @@ void fatal(char *fmt, ...)
743{ 747{
744 va_list ap; 748 va_list ap;
745 749
746 rb->splash(HZ, "FATAL ERROR"); 750 rb->splash(HZ, "FATAL");
747 751
748 va_start(ap, fmt); 752 va_start(ap, fmt);
749 char buf[80]; 753 char buf[80];
@@ -1034,53 +1038,9 @@ static bool presets_menu(void)
1034 return do_preset_menu(midend_get_presets(me, NULL), NULL, sel) >= 0; 1038 return do_preset_menu(midend_get_presets(me, NULL), NULL, sel) >= 0;
1035} 1039}
1036 1040
1037static const struct {
1038 const char *game, *help;
1039} quick_help_text[] = {
1040 { "Black Box", "Find the hidden balls in the box by bouncing laser beams off them." },
1041 { "Bridges", "Connect all the islands with a network of bridges." },
1042 { "Cube", "Pick up all the blue squares by rolling the cube over them." },
1043 { "Dominosa", "Tile the rectangle with a full set of dominoes." },
1044 { "Fifteen", "Slide the tiles around to arrange them into order." },
1045 { "Filling", "Mark every square with the area of its containing region." },
1046 { "Flip", "Flip groups of squares to light them all up at once." },
1047 { "Flood", "Turn the grid the same colour in as few flood fills as possible." },
1048 { "Galaxies", "Divide the grid into rotationally symmetric regions each centred on a dot." },
1049 { "Guess", "Guess the hidden combination of colours." },
1050 { "Inertia", "Collect all the gems without running into any of the mines." },
1051 { "Keen", "Complete the latin square in accordance with the arithmetic clues." },
1052 { "Light Up", "Place bulbs to light up all the squares." },
1053 { "Loopy", "Draw a single closed loop, given clues about number of adjacent edges." },
1054 { "Magnets", "Place magnets to satisfy the clues and avoid like poles touching." },
1055 { "Map", "Colour the map so that adjacent regions are never the same colour." },
1056 { "Mines", "Find all the mines without treading on any of them." },
1057 { "Net", "Rotate each tile to reassemble the network." },
1058 { "Netslide", "Slide a row at a time to reassemble the network." },
1059 { "Palisade", "Divide the grid into equal-sized areas in accordance with the clues." },
1060 { "Pattern", "Fill in the pattern in the grid, given only the lengths of runs of black squares." },
1061 { "Pearl", "Draw a single closed loop, given clues about corner and straight squares." },
1062 { "Pegs", "Jump pegs over each other to remove all but one." },
1063 { "Range", "Place black squares to limit the visible distance from each numbered cell." },
1064 { "Rectangles", "Divide the grid into rectangles with areas equal to the numbers." },
1065 { "Same Game", "Clear the grid by removing touching groups of the same colour squares." },
1066 { "Signpost", "Connect the squares into a path following the arrows." },
1067 { "Singles", "Black out the right set of duplicate numbers." },
1068 { "Sixteen", "Slide a row at a time to arrange the tiles into order." },
1069 { "Slant", "Draw a maze of slanting lines that matches the clues." },
1070 { "Solo", "Fill in the grid so that each row, column and square block contains one of every digit." },
1071 { "Tents", "Place a tent next to each tree." },
1072 { "Towers", "Complete the latin square of towers in accordance with the clues." },
1073 { "Tracks", "Fill in the railway track according to the clues." },
1074 { "Twiddle", "Rotate the tiles around themselves to arrange them into order." },
1075 { "Undead", "Place ghosts, vampires and zombies so that the right numbers of them can be seen in mirrors." },
1076 { "Unequal", "Complete the latin square in accordance with the > signs." },
1077 { "Unruly", "Fill in the black and white grid to avoid runs of three." },
1078 { "Untangle", "Reposition the points so that the lines do not cross." },
1079};
1080
1081static void quick_help(void) 1041static void quick_help(void)
1082{ 1042{
1083#ifdef FOR_REAL 1043#if defined(FOR_REAL) && defined(DEBUG_MENU)
1084 if(++help_times >= 5) 1044 if(++help_times >= 5)
1085 { 1045 {
1086 rb->splash(HZ, "You are now a developer!"); 1046 rb->splash(HZ, "You are now a developer!");
@@ -1088,25 +1048,10 @@ static void quick_help(void)
1088 } 1048 }
1089#endif 1049#endif
1090 1050
1091 for(int i = 0; i < ARRAYLEN(quick_help_text); ++i) 1051 rb->splash(0, quick_help_text);
1092 { 1052 rb->button_get(true);
1093 if(!strcmp(midend_which_game(me)->name, quick_help_text[i].game)) 1053 return;
1094 {
1095 rb->splash(0, quick_help_text[i].help);
1096 rb->button_get(true);
1097 return;
1098 }
1099 }
1100}
1101
1102#if PLUGIN_BUFFER_SIZE <= 0x14000
1103/* no full help available due to memory constraints, so we provide a
1104 * dummy function here */
1105void full_help(const char *str)
1106{
1107 (void) str;
1108} 1054}
1109#endif
1110 1055
1111static void init_default_settings(void) 1056static void init_default_settings(void)
1112{ 1057{
@@ -1118,6 +1063,7 @@ static void init_default_settings(void)
1118 settings.no_aa = false; 1063 settings.no_aa = false;
1119} 1064}
1120 1065
1066#ifdef DEBUG_MENU
1121static void bench_aa(void) 1067static void bench_aa(void)
1122{ 1068{
1123 rb->sleep(0); 1069 rb->sleep(0);
@@ -1202,6 +1148,7 @@ static void debug_menu(void)
1202 } 1148 }
1203 } 1149 }
1204} 1150}
1151#endif
1205 1152
1206static int pausemenu_cb(int action, const struct menu_item_ex *this_item) 1153static int pausemenu_cb(int action, const struct menu_item_ex *this_item)
1207{ 1154{
@@ -1223,11 +1170,7 @@ static int pausemenu_cb(int action, const struct menu_item_ex *this_item)
1223 return ACTION_EXIT_MENUITEM; 1170 return ACTION_EXIT_MENUITEM;
1224 break; 1171 break;
1225 case 7: 1172 case 7:
1226#if PLUGIN_BUFFER_SIZE <= 0x14000
1227 return ACTION_EXIT_MENUITEM;
1228#else
1229 break; 1173 break;
1230#endif
1231 case 8: 1174 case 8:
1232#ifdef COMBINED 1175#ifdef COMBINED
1233 /* audio buf is used, so no playback */ 1176 /* audio buf is used, so no playback */
@@ -1245,7 +1188,7 @@ static int pausemenu_cb(int action, const struct menu_item_ex *this_item)
1245 return ACTION_EXIT_MENUITEM; 1188 return ACTION_EXIT_MENUITEM;
1246 break; 1189 break;
1247 case 10: 1190 case 10:
1248#ifdef FOR_REAL 1191#if defined(FOR_REAL) && defined(DEBUG_MENU)
1249 if(debug_mode) 1192 if(debug_mode)
1250 break; 1193 break;
1251 return ACTION_EXIT_MENUITEM; 1194 return ACTION_EXIT_MENUITEM;
@@ -1309,7 +1252,7 @@ static int pause_menu(void)
1309 rb->snprintf(title, sizeof(title), "%s Menu", midend_which_game(me)->name); 1252 rb->snprintf(title, sizeof(title), "%s Menu", midend_which_game(me)->name);
1310 menu__.desc = title; 1253 menu__.desc = title;
1311 1254
1312#ifdef FOR_REAL 1255#if defined(FOR_REAL) && defined(DEBUG_MENU)
1313 help_times = 0; 1256 help_times = 0;
1314#endif 1257#endif
1315 1258
@@ -1374,7 +1317,9 @@ static int pause_menu(void)
1374 } 1317 }
1375 break; 1318 break;
1376 case 10: 1319 case 10:
1320#ifdef DEBUG_MENU
1377 debug_menu(); 1321 debug_menu();
1322#endif
1378 break; 1323 break;
1379 case 11: 1324 case 11:
1380 if(config_menu()) 1325 if(config_menu())
@@ -1819,11 +1764,7 @@ static int mainmenu_cb(int action, const struct menu_item_ex *this_item)
1819 return ACTION_EXIT_MENUITEM; 1764 return ACTION_EXIT_MENUITEM;
1820 break; 1765 break;
1821 case 3: 1766 case 3:
1822#if PLUGIN_BUFFER_SIZE <= 0x14000
1823 return ACTION_EXIT_MENUITEM;
1824#else
1825 break; 1767 break;
1826#endif
1827 case 4: 1768 case 4:
1828#ifdef COMBINED 1769#ifdef COMBINED
1829 /* audio buf is used, so no playback */ 1770 /* audio buf is used, so no playback */
@@ -1892,7 +1833,7 @@ enum plugin_status plugin_start(const void *param)
1892 rb->cpu_boost(false); 1833 rb->cpu_boost(false);
1893#endif 1834#endif
1894 1835
1895#ifdef FOR_REAL 1836#if defined(FOR_REAL) && defined(DEBUG_MENU)
1896 help_times = 0; 1837 help_times = 0;
1897#endif 1838#endif
1898 1839