~mdw
/
sgt
/
puzzles
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Forgot to set 'has_incentre' on triangular grids, which don't use
[sgt/puzzles]
/
signpost.c
diff --git
a/signpost.c
b/signpost.c
index
05d4eaf
..
a9c38f5
100644
(file)
--- a/
signpost.c
+++ b/
signpost.c
@@
-423,6
+423,8
@@
static char *validate_params(game_params *params, int full)
{
if (params->w < 2 || params->h < 2)
return "Width and height must both be at least two";
{
if (params->w < 2 || params->h < 2)
return "Width and height must both be at least two";
+ if (params->w == 2 && params->h == 2) /* leads to generation hang */
+ return "Width and height cannot both be two";
return NULL;
}
return NULL;
}
@@
-511,7
+513,7
@@
static void unpick_desc(game_params *params, char *desc,
}
c = *desc;
}
c = *desc;
- if (isdigit(c)) {
+ if (isdigit(
(unsigned char)
c)) {
num = (num*10) + (int)(c-'0');
if (num > state->n) {
msg = "Number too large";
num = (num*10) + (int)(c-'0');
if (num > state->n) {
msg = "Number too large";
@@
-750,6
+752,7
@@
static int new_game_strip(game_state *state, random_state *rs)
copy->flags[j] |= FLAG_IMMUTABLE;
state->flags[j] |= FLAG_IMMUTABLE;
debug_state("Copy of state: ", copy);
copy->flags[j] |= FLAG_IMMUTABLE;
state->flags[j] |= FLAG_IMMUTABLE;
debug_state("Copy of state: ", copy);
+ strip_nums(copy);
if (solve_state(copy) > 0) goto solved;
assert(check_nums(state, copy, 1));
}
if (solve_state(copy) > 0) goto solved;
assert(check_nums(state, copy, 1));
}
@@
-2119,6
+2122,11
@@
static float game_flash_length(game_state *oldstate, game_state *newstate,
return 0.0F;
}
return 0.0F;
}
+static int game_is_solved(game_state *state)
+{
+ return state->completed;
+}
+
static int game_timing_state(game_state *state, game_ui *ui)
{
return TRUE;
static int game_timing_state(game_state *state, game_ui *ui)
{
return TRUE;
@@
-2200,10
+2208,11
@@
const struct game thegame = {
game_redraw,
game_anim_length,
game_flash_length,
game_redraw,
game_anim_length,
game_flash_length,
+ game_is_solved,
TRUE, FALSE, game_print_size, game_print,
FALSE, /* wants_statusbar */
FALSE, game_timing_state,
TRUE, FALSE, game_print_size, game_print,
FALSE, /* wants_statusbar */
FALSE, game_timing_state,
- REQUIRE_RBUTTON
| REQUIRE_NUMPAD,
/* flags */
+ REQUIRE_RBUTTON
,
/* flags */
};
#ifdef STANDALONE_SOLVER
};
#ifdef STANDALONE_SOLVER