X-Git-Url: https://git.distorted.org.uk/~mdw/sgt/puzzles/blobdiff_plain/48dcdd627698354063fa1b551cfa1917dea1b25e..a1d5acfff9de3df31ef5575b2350a6c8973fb2d1:/midend.c diff --git a/midend.c b/midend.c index 8adc1c3..1def041 100644 --- a/midend.c +++ b/midend.c @@ -132,6 +132,14 @@ static void midend_set_timer(midend_data *me) deactivate_timer(me->frontend); } +void midend_force_redraw(midend_data *me) +{ + if (me->drawstate) + me->ourgame->free_drawstate(me->drawstate); + me->drawstate = me->ourgame->new_drawstate(me->states[0].state); + midend_redraw(me); +} + void midend_new_game(midend_data *me) { while (me->nstates > 0) @@ -178,7 +186,8 @@ void midend_new_game(midend_data *me) me->aux_info = NULL; rs = random_init(me->seedstr, strlen(me->seedstr)); - me->desc = me->ourgame->new_desc(me->curparams, rs, &me->aux_info); + me->desc = me->ourgame->new_desc(me->curparams, rs, + &me->aux_info, TRUE); random_free(rs); } @@ -316,7 +325,7 @@ static int midend_really_process_key(midend_data *me, int x, int y, int button) } else { game_state *s = me->ourgame->make_move(me->states[me->statepos-1].state, - me->ui, x, y, button); + me->ui, me->drawstate, x, y, button); if (s == me->states[me->statepos-1].state) { /* @@ -521,7 +530,8 @@ float *midend_colours(midend_data *me, int *ncolours) if (me->nstates == 0) { game_aux_info *aux = NULL; - char *desc = me->ourgame->new_desc(me->params, me->random, &aux); + char *desc = me->ourgame->new_desc(me->params, me->random, + &aux, TRUE); state = me->ourgame->new_game(me, me->params, desc); sfree(desc); if (aux)