aboutsummaryrefslogtreecommitdiff
path: root/flip.c
diff options
context:
space:
mode:
Diffstat (limited to 'flip.c')
-rw-r--r--flip.c28
1 files changed, 12 insertions, 16 deletions
diff --git a/flip.c b/flip.c
index 503681e..b38aff1 100644
--- a/flip.c
+++ b/flip.c
@@ -988,27 +988,23 @@ static game_state *execute_move(game_state *from, char *move)
* 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)
{
- double 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 = (double)*x / ((double)params->w + 1.0);
- tsy = (double)*y / ((double)params->h + 1);
- ts = min(tsx, tsy);
- if (expand)
- ds->tilesize = (int)(ts + 0.5);
- else
- ds->tilesize = min((int)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;
}
+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);
@@ -1276,7 +1272,7 @@ const struct game thegame = {
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,