X-Git-Url: https://git.distorted.org.uk/~mdw/sgt/puzzles/blobdiff_plain/060ba13452821aaf23aa9f0f8a6ab82c13b759ee..92d5b70917aed3fd361480f01bb7baeafed59c13:/twiddle.c diff --git a/twiddle.c b/twiddle.c index f7bfd4a..9ac4a3a 100644 --- a/twiddle.c +++ b/twiddle.c @@ -20,8 +20,6 @@ #define COORD(x) ( (x) * TILE_SIZE + BORDER ) #define FROMCOORD(x) ( ((x) - BORDER + TILE_SIZE) / TILE_SIZE - 1 ) -#define PI 3.141592653589793238462643383279502884197169399 - #define ANIM_PER_RADIUS_UNIT 0.13F #define FLASH_FRAME 0.13F @@ -262,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]]; @@ -411,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); @@ -618,8 +616,8 @@ static void free_ui(game_ui *ui) { } -static game_state *make_move(game_state *from, game_ui *ui, int x, int y, - int button) +static game_state *make_move(game_state *from, game_ui *ui, game_drawstate *ds, + int x, int y, int button) { int w = from->w, h = from->h, n = from->n, wh = w*h; game_state *ret; @@ -766,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); } @@ -1007,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, @@ -1023,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; } @@ -1181,4 +1184,5 @@ const struct game thegame = { game_flash_length, game_wants_statusbar, FALSE, game_timing_state, + 0, /* mouse_priorities */ };