X-Git-Url: https://git.distorted.org.uk/~mdw/sgt/puzzles/blobdiff_plain/a5712538a2bbb8c2d51a592fa5f71bb6607c90b4..6bb2af847d3bad4f2a544ad7a428f7063fd1991a:/slant.c diff --git a/slant.c b/slant.c index 6c540ba..c3b9f17 100644 --- a/slant.c +++ b/slant.c @@ -468,15 +468,13 @@ static int slant_solve(int w, int h, const signed char *clues, * Establish a disjoint set forest for tracking connectedness * between grid points. */ - for (i = 0; i < W*H; i++) - sc->connected[i] = i; /* initially all distinct */ + dsf_init(sc->connected, W*H); /* * Establish a disjoint set forest for tracking which squares * are known to slant in the same direction. */ - for (i = 0; i < w*h; i++) - sc->equiv[i] = i; /* initially all distinct */ + dsf_init(sc->equiv, w*h); /* * Clear the slashval array. @@ -1006,9 +1004,7 @@ static void slant_generate(int w, int h, signed char *soln, random_state *rs) * Establish a disjoint set forest for tracking connectedness * between grid points. */ - connected = snewn(W*H, int); - for (i = 0; i < W*H; i++) - connected[i] = i; /* initially all distinct */ + connected = snew_dsf(W*H); /* * Prepare a list of the squares in the grid, and fill them in @@ -1389,8 +1385,7 @@ static int check_completion(game_state *state) * edge is visited at most twice. */ dsf = state->clues->tmpdsf; - for (i = 0; i < W*H; i++) - dsf[i] = i; /* initially all distinct */ + dsf_init(dsf, W*H); for (y = 0; y < h; y++) for (x = 0; x < w; x++) { int i1, i2; @@ -1620,6 +1615,11 @@ static char *solve_game(game_state *state, game_state *currstate, return move; } +static int game_can_format_as_text_now(game_params *params) +{ + return TRUE; +} + static char *game_text_format(game_state *state) { int w = state->p.w, h = state->p.h, W = w+1, H = h+1; @@ -1835,7 +1835,8 @@ static void game_compute_size(game_params *params, int tilesize, int *x, int *y) { /* fool the macros */ - struct dummy { int tilesize; } dummy = { tilesize }, *ds = &dummy; + struct dummy { int tilesize; } dummy, *ds = &dummy; + dummy.tilesize = tilesize; *x = 2 * BORDER + params->w * TILESIZE + 1; *y = 2 * BORDER + params->h * TILESIZE + 1; @@ -2191,7 +2192,7 @@ static void game_print(drawing *dr, game_state *state, int tilesize) #endif const struct game thegame = { - "Slant", "games.slant", + "Slant", "games.slant", "slant", default_params, game_fetch_preset, decode_params, @@ -2206,7 +2207,7 @@ const struct game thegame = { dup_game, free_game, TRUE, solve_game, - TRUE, game_text_format, + TRUE, game_can_format_as_text_now, game_text_format, new_ui, free_ui, encode_ui,