From b74dac6de22e783ac6619411743df6bca1755a8b Mon Sep 17 00:00:00 2001 From: Simon Tatham Date: Tue, 5 Jul 2005 18:13:31 +0000 Subject: Refactored the game_size() interface, which was getting really unpleasant and requiring lots of special cases to be taken care of by every single game. The new interface exposes an integer `tile size' or `scale' parameter to the midend and provides two much simpler routines: one which computes the pixel window size given a game_params and a tile size, and one which is given a tile size and must set up a drawstate appropriately. All the rest of the complexity is handled in the midend, mostly by binary search, so grubby special cases only have to be dealt with once. [originally from svn r6059] --- nullgame.c | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) (limited to 'nullgame.c') diff --git a/nullgame.c b/nullgame.c index 204f633..bdf0e07 100644 --- a/nullgame.c +++ b/nullgame.c @@ -152,6 +152,7 @@ static void game_changed_state(game_ui *ui, game_state *oldstate, } struct game_drawstate { + int tilesize; int FIXME; }; @@ -170,10 +171,16 @@ static game_state *execute_move(game_state *state, 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) { - *x = *y = 200; /* FIXME */ + *x = *y = 10 * tilesize; /* FIXME */ +} + +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) @@ -190,6 +197,7 @@ static game_drawstate *game_new_drawstate(game_state *state) { struct game_drawstate *ds = snew(struct game_drawstate); + ds->tilesize = 0; ds->FIXME = 0; return ds; @@ -210,7 +218,7 @@ static void game_redraw(frontend *fe, game_drawstate *ds, game_state *oldstate, * should start by drawing a big background-colour rectangle * covering the whole window. */ - draw_rect(fe, 0, 0, 200, 200, COL_BACKGROUND); + draw_rect(fe, 0, 0, 10*ds->tilesize, 10*ds->tilesize, COL_BACKGROUND); } static float game_anim_length(game_state *oldstate, game_state *newstate, @@ -263,7 +271,7 @@ const struct game thegame = { game_changed_state, interpret_move, execute_move, - game_size, + 20 /* FIXME */, game_compute_size, game_set_size, game_colours, game_new_drawstate, game_free_drawstate, -- cgit v1.1