summaryrefslogtreecommitdiff
path: root/apps/plugins/puzzles/src/singles.c
diff options
context:
space:
mode:
Diffstat (limited to 'apps/plugins/puzzles/src/singles.c')
-rw-r--r--apps/plugins/puzzles/src/singles.c35
1 files changed, 16 insertions, 19 deletions
diff --git a/apps/plugins/puzzles/src/singles.c b/apps/plugins/puzzles/src/singles.c
index 5fe054c663..5929d82932 100644
--- a/apps/plugins/puzzles/src/singles.c
+++ b/apps/plugins/puzzles/src/singles.c
@@ -222,24 +222,20 @@ static config_item *game_configure(const game_params *params)
222 ret[0].name = "Width"; 222 ret[0].name = "Width";
223 ret[0].type = C_STRING; 223 ret[0].type = C_STRING;
224 sprintf(buf, "%d", params->w); 224 sprintf(buf, "%d", params->w);
225 ret[0].sval = dupstr(buf); 225 ret[0].u.string.sval = dupstr(buf);
226 ret[0].ival = 0;
227 226
228 ret[1].name = "Height"; 227 ret[1].name = "Height";
229 ret[1].type = C_STRING; 228 ret[1].type = C_STRING;
230 sprintf(buf, "%d", params->h); 229 sprintf(buf, "%d", params->h);
231 ret[1].sval = dupstr(buf); 230 ret[1].u.string.sval = dupstr(buf);
232 ret[1].ival = 0;
233 231
234 ret[2].name = "Difficulty"; 232 ret[2].name = "Difficulty";
235 ret[2].type = C_CHOICES; 233 ret[2].type = C_CHOICES;
236 ret[2].sval = DIFFCONFIG; 234 ret[2].u.choices.choicenames = DIFFCONFIG;
237 ret[2].ival = params->diff; 235 ret[2].u.choices.selected = params->diff;
238 236
239 ret[3].name = NULL; 237 ret[3].name = NULL;
240 ret[3].type = C_END; 238 ret[3].type = C_END;
241 ret[3].sval = NULL;
242 ret[3].ival = 0;
243 239
244 return ret; 240 return ret;
245} 241}
@@ -248,14 +244,14 @@ static game_params *custom_params(const config_item *cfg)
248{ 244{
249 game_params *ret = snew(game_params); 245 game_params *ret = snew(game_params);
250 246
251 ret->w = atoi(cfg[0].sval); 247 ret->w = atoi(cfg[0].u.string.sval);
252 ret->h = atoi(cfg[1].sval); 248 ret->h = atoi(cfg[1].u.string.sval);
253 ret->diff = cfg[2].ival; 249 ret->diff = cfg[2].u.choices.selected;
254 250
255 return ret; 251 return ret;
256} 252}
257 253
258static char *validate_params(const game_params *params, int full) 254static const char *validate_params(const game_params *params, int full)
259{ 255{
260 if (params->w < 2 || params->h < 2) 256 if (params->w < 2 || params->h < 2)
261 return "Width and neight must be at least two"; 257 return "Width and neight must be at least two";
@@ -334,10 +330,10 @@ static int c2n(char c) {
334} 330}
335 331
336static void unpick_desc(const game_params *params, const char *desc, 332static void unpick_desc(const game_params *params, const char *desc,
337 game_state **sout, char **mout) 333 game_state **sout, const char **mout)
338{ 334{
339 game_state *state = blank_game(params->w, params->h); 335 game_state *state = blank_game(params->w, params->h);
340 char *msg = NULL; 336 const char *msg = NULL;
341 int num = 0, i = 0; 337 int num = 0, i = 0;
342 338
343 if (strlen(desc) != state->n) { 339 if (strlen(desc) != state->n) {
@@ -1185,7 +1181,7 @@ static int solve_specific(game_state *state, int diff, int sneaky)
1185} 1181}
1186 1182
1187static char *solve_game(const game_state *state, const game_state *currstate, 1183static char *solve_game(const game_state *state, const game_state *currstate,
1188 const char *aux, char **error) 1184 const char *aux, const char **error)
1189{ 1185{
1190 game_state *solved = dup_game(currstate); 1186 game_state *solved = dup_game(currstate);
1191 char *move = NULL; 1187 char *move = NULL;
@@ -1414,9 +1410,9 @@ randomise:
1414 return ret; 1410 return ret;
1415} 1411}
1416 1412
1417static char *validate_desc(const game_params *params, const char *desc) 1413static const char *validate_desc(const game_params *params, const char *desc)
1418{ 1414{
1419 char *ret = NULL; 1415 const char *ret = NULL;
1420 1416
1421 unpick_desc(params, desc, NULL, &ret); 1417 unpick_desc(params, desc, NULL, &ret);
1422 return ret; 1418 return ret;
@@ -1522,7 +1518,7 @@ static char *interpret_move(const game_state *state, game_ui *ui,
1522 action = TOGGLE_CIRCLE; 1518 action = TOGGLE_CIRCLE;
1523 } 1519 }
1524 } 1520 }
1525 if (action == UI) return ""; 1521 if (action == UI) return UI_UPDATE;
1526 1522
1527 if (action == TOGGLE_BLACK || action == TOGGLE_CIRCLE) { 1523 if (action == TOGGLE_BLACK || action == TOGGLE_CIRCLE) {
1528 i = y * state->w + x; 1524 i = y * state->w + x;
@@ -1910,7 +1906,8 @@ static void start_soak(game_params *p, random_state *rs)
1910 1906
1911int main(int argc, char **argv) 1907int main(int argc, char **argv)
1912{ 1908{
1913 char *id = NULL, *desc, *desc_gen = NULL, *tgame, *err, *aux; 1909 char *id = NULL, *desc, *desc_gen = NULL, *tgame, *aux;
1910 const char *err;
1914 game_state *s = NULL; 1911 game_state *s = NULL;
1915 game_params *p = NULL; 1912 game_params *p = NULL;
1916 int soln, soak = 0, ret = 1; 1913 int soln, soak = 0, ret = 1;