X-Git-Url: https://git.distorted.org.uk/~mdw/sgt/puzzles/blobdiff_plain/93b1da3d0f613d616b930419354558365847bc7d..39c86385a35e8ae4c2eb5487464787d6fb15a782:/twiddle.c diff --git a/twiddle.c b/twiddle.c index 66c4d8b..9ac4a3a 100644 --- a/twiddle.c +++ b/twiddle.c @@ -260,12 +260,12 @@ static void do_rotate(int *grid, int w, int h, int n, int orientable, for (j = 0; j < n/2; j++) { int k; int g[4]; - int p[4] = { - j*w+i, - i*w+(n-j-1), - (n-j-1)*w+(n-i-1), - (n-i-1)*w+j - }; + int p[4]; + + p[0] = j*w+i; + p[1] = i*w+(n-j-1); + p[2] = (n-j-1)*w+(n-i-1); + p[3] = (n-i-1)*w+j; for (k = 0; k < 4; k++) g[k] = grid[p[k]]; @@ -409,7 +409,7 @@ static char *new_game_desc(game_params *params, random_state *rs, int k; k = sprintf(buf, "%d%c", grid[i] / 4, - params->orientable ? "uldr"[grid[i] & 3] : ','); + (char)(params->orientable ? "uldr"[grid[i] & 3] : ',')); ret = sresize(ret, retlen + k + 1, char); strcpy(ret + retlen, buf); @@ -764,6 +764,7 @@ static game_drawstate *game_new_drawstate(game_state *state) static void game_free_drawstate(game_drawstate *ds) { + sfree(ds->grid); sfree(ds); } @@ -1005,7 +1006,7 @@ static void game_redraw(frontend *fe, game_drawstate *ds, game_state *oldstate, bgcolour = COL_BACKGROUND; if (!ds->started) { - int coords[6]; + int coords[10]; draw_rect(fe, 0, 0, TILE_SIZE * state->w + 2 * BORDER, @@ -1021,15 +1022,19 @@ static void game_redraw(frontend *fe, game_drawstate *ds, game_state *oldstate, coords[1] = COORD(state->h) + HIGHLIGHT_WIDTH - 1; coords[2] = COORD(state->w) + HIGHLIGHT_WIDTH - 1; coords[3] = COORD(0) - HIGHLIGHT_WIDTH; - coords[4] = COORD(0) - HIGHLIGHT_WIDTH; - coords[5] = COORD(state->h) + HIGHLIGHT_WIDTH - 1; - draw_polygon(fe, coords, 3, TRUE, COL_HIGHLIGHT); - draw_polygon(fe, coords, 3, FALSE, COL_HIGHLIGHT); + coords[4] = coords[2] - TILE_SIZE; + coords[5] = coords[3] + TILE_SIZE; + coords[8] = COORD(0) - HIGHLIGHT_WIDTH; + coords[9] = COORD(state->h) + HIGHLIGHT_WIDTH - 1; + coords[6] = coords[8] + TILE_SIZE; + coords[7] = coords[9] - TILE_SIZE; + draw_polygon(fe, coords, 5, TRUE, COL_HIGHLIGHT); + draw_polygon(fe, coords, 5, FALSE, COL_HIGHLIGHT); coords[1] = COORD(0) - HIGHLIGHT_WIDTH; coords[0] = COORD(0) - HIGHLIGHT_WIDTH; - draw_polygon(fe, coords, 3, TRUE, COL_LOWLIGHT); - draw_polygon(fe, coords, 3, FALSE, COL_LOWLIGHT); + draw_polygon(fe, coords, 5, TRUE, COL_LOWLIGHT); + draw_polygon(fe, coords, 5, FALSE, COL_LOWLIGHT); ds->started = TRUE; }