- /*
- * Each window dimension equals the tile size (inner plus gap)
- * times the grid dimension, plus another tile size (border is
- * half the width of a tile), minus one tile gap.
- *
- * We must cast to unsigned before adding to *x and *y, since
- * they might be INT_MAX!
- */
- tsx = (unsigned)(*x + ds->tilegap) / (params->w + 1);
- tsy = (unsigned)(*y + ds->tilegap) / (params->h + 1);
-
- ts = min(tsx, tsy);
- if (expand)
- ds->tileinner = ts - ds->tilegap;
- else
- ds->tileinner = min(ts, PREFERRED_TILE_SIZE) - ds->tilegap;
+static void game_compute_size(game_params *params, int tilesize,
+ int *x, int *y)
+{
+ /* Ick: fake up tile size variables for macro expansion purposes */
+ game_drawstate ads, *ds = &ads;
+ game_set_size(ds, params, tilesize);