~mdw
/
sgt
/
puzzles
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Enhancements to mkfiles.pl and Recipe to arrange for the auxiliary
[sgt/puzzles]
/
twiddle.c
diff --git
a/twiddle.c
b/twiddle.c
index
66ce4d1
..
ce3d0ec
100644
(file)
--- a/
twiddle.c
+++ b/
twiddle.c
@@
-307,7
+307,7
@@
static int grid_complete(int *grid, int wh, int orientable)
}
static char *new_game_desc(game_params *params, random_state *rs,
}
static char *new_game_desc(game_params *params, random_state *rs,
-
game_aux_info
**aux, int interactive)
+
char
**aux, int interactive)
{
int *grid;
int w = params->w, h = params->h, n = params->n, wh = w*h;
{
int *grid;
int w = params->w, h = params->h, n = params->n, wh = w*h;
@@
-430,11
+430,6
@@
static char *new_game_desc(game_params *params, random_state *rs,
return ret;
}
return ret;
}
-static void game_free_aux_info(game_aux_info *aux)
-{
- assert(!"Shouldn't happen");
-}
-
static char *validate_desc(game_params *params, char *desc)
{
char *p, *err;
static char *validate_desc(game_params *params, char *desc)
{
char *p, *err;
@@
-547,7
+542,7
@@
static int compare_int(const void *av, const void *bv)
}
static char *solve_game(game_state *state, game_state *currstate,
}
static char *solve_game(game_state *state, game_state *currstate,
-
game_aux_info
*aux, char **error)
+
char
*aux, char **error)
{
return dupstr("S");
}
{
return dupstr("S");
}
@@
-608,6
+603,15
@@
static void free_ui(game_ui *ui)
{
}
{
}
+static char *encode_ui(game_ui *ui)
+{
+ return NULL;
+}
+
+static void decode_ui(game_ui *ui, char *encoding)
+{
+}
+
static void game_changed_state(game_ui *ui, game_state *oldstate,
game_state *newstate)
{
static void game_changed_state(game_ui *ui, game_state *oldstate,
game_state *newstate)
{
@@
-740,27
+744,23
@@
static game_state *execute_move(game_state *from, char *move)
* Drawing routines.
*/
* Drawing routines.
*/
-static void game_
size(game_params *params, game_drawstate *ds
,
-
int *x, int *y, int expand
)
+static void game_
compute_size(game_params *params, int tilesize
,
+
int *x, int *y
)
{
{
- int tsx, tsy, ts;
- /*
- * Each window dimension equals the tile size times one more
- * than the grid dimension (the border is half the width of the
- * tiles).
- */
- tsx = *x / (params->w + 1);
- tsy = *y / (params->h + 1);
- ts = min(tsx, tsy);
- if (expand)
- ds->tilesize = ts;
- else
- ds->tilesize = min(ts, PREFERRED_TILE_SIZE);
+ /* Ick: fake up `ds->tilesize' for macro expansion purposes */
+ struct { int tilesize; } ads, *ds = &ads;
+ ads.tilesize = tilesize;
*x = TILE_SIZE * params->w + 2 * BORDER;
*y = TILE_SIZE * params->h + 2 * BORDER;
}
*x = TILE_SIZE * params->w + 2 * BORDER;
*y = TILE_SIZE * params->h + 2 * BORDER;
}
+static void game_set_size(game_drawstate *ds, game_params *params,
+ int tilesize)
+{
+ ds->tilesize = tilesize;
+}
+
static float *game_colours(frontend *fe, game_state *state, int *ncolours)
{
float *ret = snewn(3 * NCOLOURS, float);
static float *game_colours(frontend *fe, game_state *state, int *ncolours)
{
float *ret = snewn(3 * NCOLOURS, float);
@@
-876,29
+876,29
@@
static void draw_tile(frontend *fe, game_drawstate *ds, game_state *state,
coords[2] = x + TILE_SIZE - 1;
coords[3] = y;
rotate(coords+2, rot);
coords[2] = x + TILE_SIZE - 1;
coords[3] = y;
rotate(coords+2, rot);
- draw_polygon(fe, coords, 3,
TRUE, rot ? rot->rc : COL_LOWLIGHT);
-
draw_polygon(fe, coords, 3, FALSE,
rot ? rot->rc : COL_LOWLIGHT);
+ draw_polygon(fe, coords, 3,
rot ? rot->rc : COL_LOWLIGHT,
+
rot ? rot->rc : COL_LOWLIGHT);
/* Bottom side. */
coords[2] = x;
coords[3] = y + TILE_SIZE - 1;
rotate(coords+2, rot);
/* Bottom side. */
coords[2] = x;
coords[3] = y + TILE_SIZE - 1;
rotate(coords+2, rot);
- draw_polygon(fe, coords, 3,
TRUE, rot ? rot->bc : COL_LOWLIGHT);
-
draw_polygon(fe, coords, 3, FALSE,
rot ? rot->bc : COL_LOWLIGHT);
+ draw_polygon(fe, coords, 3,
rot ? rot->bc : COL_LOWLIGHT,
+
rot ? rot->bc : COL_LOWLIGHT);
/* Left side. */
coords[0] = x;
coords[1] = y;
rotate(coords+0, rot);
/* Left side. */
coords[0] = x;
coords[1] = y;
rotate(coords+0, rot);
- draw_polygon(fe, coords, 3,
TRUE, rot ? rot->lc : COL_HIGHLIGHT);
-
draw_polygon(fe, coords, 3, FALSE,
rot ? rot->lc : COL_HIGHLIGHT);
+ draw_polygon(fe, coords, 3,
rot ? rot->lc : COL_HIGHLIGHT,
+
rot ? rot->lc : COL_HIGHLIGHT);
/* Top side. */
coords[2] = x + TILE_SIZE - 1;
coords[3] = y;
rotate(coords+2, rot);
/* Top side. */
coords[2] = x + TILE_SIZE - 1;
coords[3] = y;
rotate(coords+2, rot);
- draw_polygon(fe, coords, 3,
TRUE, rot ? rot->tc : COL_HIGHLIGHT);
-
draw_polygon(fe, coords, 3, FALSE,
rot ? rot->tc : COL_HIGHLIGHT);
+ draw_polygon(fe, coords, 3,
rot ? rot->tc : COL_HIGHLIGHT,
+
rot ? rot->tc : COL_HIGHLIGHT);
/*
* Now the main blank area in the centre of the tile.
/*
* Now the main blank area in the centre of the tile.
@@
-916,8
+916,7
@@
static void draw_tile(frontend *fe, game_drawstate *ds, game_state *state,
coords[6] = x + TILE_SIZE - 1 - HIGHLIGHT_WIDTH;
coords[7] = y + HIGHLIGHT_WIDTH;
rotate(coords+6, rot);
coords[6] = x + TILE_SIZE - 1 - HIGHLIGHT_WIDTH;
coords[7] = y + HIGHLIGHT_WIDTH;
rotate(coords+6, rot);
- draw_polygon(fe, coords, 4, TRUE, flash_colour);
- draw_polygon(fe, coords, 4, FALSE, flash_colour);
+ draw_polygon(fe, coords, 4, flash_colour, flash_colour);
} else {
draw_rect(fe, x + HIGHLIGHT_WIDTH, y + HIGHLIGHT_WIDTH,
TILE_SIZE - 2*HIGHLIGHT_WIDTH, TILE_SIZE - 2*HIGHLIGHT_WIDTH,
} else {
draw_rect(fe, x + HIGHLIGHT_WIDTH, y + HIGHLIGHT_WIDTH,
TILE_SIZE - 2*HIGHLIGHT_WIDTH, TILE_SIZE - 2*HIGHLIGHT_WIDTH,
@@
-963,8
+962,7
@@
static void draw_tile(frontend *fe, game_drawstate *ds, game_state *state,
coords[4] = cx - displ * ydx;
coords[5] = cy - displ * ydy;
rotate(coords+4, rot);
coords[4] = cx - displ * ydx;
coords[5] = cy - displ * ydy;
rotate(coords+4, rot);
- draw_polygon(fe, coords, 3, TRUE, COL_LOWLIGHT_GENTLE);
- draw_polygon(fe, coords, 3, FALSE, COL_LOWLIGHT_GENTLE);
+ draw_polygon(fe, coords, 3, COL_LOWLIGHT_GENTLE, COL_LOWLIGHT_GENTLE);
}
coords[0] = x + TILE_SIZE/2;
}
coords[0] = x + TILE_SIZE/2;
@@
-1078,13
+1076,11
@@
static void game_redraw(frontend *fe, game_drawstate *ds, game_state *oldstate,
coords[9] = COORD(state->h) + HIGHLIGHT_WIDTH - 1;
coords[6] = coords[8] + TILE_SIZE;
coords[7] = coords[9] - TILE_SIZE;
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);
+ draw_polygon(fe, coords, 5, COL_HIGHLIGHT, COL_HIGHLIGHT);
coords[1] = COORD(0) - HIGHLIGHT_WIDTH;
coords[0] = COORD(0) - HIGHLIGHT_WIDTH;
coords[1] = COORD(0) - HIGHLIGHT_WIDTH;
coords[0] = COORD(0) - HIGHLIGHT_WIDTH;
- draw_polygon(fe, coords, 5, TRUE, COL_LOWLIGHT);
- draw_polygon(fe, coords, 5, FALSE, COL_LOWLIGHT);
+ draw_polygon(fe, coords, 5, COL_LOWLIGHT, COL_LOWLIGHT);
ds->started = TRUE;
}
ds->started = TRUE;
}
@@
-1215,7
+1211,6
@@
const struct game thegame = {
TRUE, game_configure, custom_params,
validate_params,
new_game_desc,
TRUE, game_configure, custom_params,
validate_params,
new_game_desc,
- game_free_aux_info,
validate_desc,
new_game,
dup_game,
validate_desc,
new_game,
dup_game,
@@
-1224,10
+1219,12
@@
const struct game thegame = {
TRUE, game_text_format,
new_ui,
free_ui,
TRUE, game_text_format,
new_ui,
free_ui,
+ encode_ui,
+ decode_ui,
game_changed_state,
interpret_move,
execute_move,
game_changed_state,
interpret_move,
execute_move,
-
game
_size,
+
PREFERRED_TILE_SIZE, game_compute_size, game_set
_size,
game_colours,
game_new_drawstate,
game_free_drawstate,
game_colours,
game_new_drawstate,
game_free_drawstate,