char *laststatus;
int pressed_mouse_button;
+
+ int winwidth, winheight;
};
#define ensure(me) do { \
me->laststatus = NULL;
me->timing = FALSE;
me->elapsed = 0.0F;
+ me->winwidth = me->winheight = 0;
sfree(randseed);
sfree(me);
}
-void midend_size(midend_data *me, int *x, int *y)
+void midend_size(midend_data *me, int *x, int *y, int expand)
{
- me->ourgame->size(me->params, x, y);
+ me->ourgame->size(me->params, me->drawstate, x, y, expand);
+ me->winwidth = *x;
+ me->winheight = *y;
}
void midend_set_params(midend_data *me, game_params *params)
deactivate_timer(me->frontend);
}
+static void midend_size_new_drawstate(midend_data *me)
+{
+ me->ourgame->size(me->params, me->drawstate, &me->winwidth, &me->winheight,
+ TRUE);
+}
+
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_size_new_drawstate(me);
midend_redraw(me);
}
me->nstates++;
me->statepos = 1;
me->drawstate = me->ourgame->new_drawstate(me->states[0].state);
+ midend_size_new_drawstate(me);
me->elapsed = 0.0F;
midend_set_timer(me);
if (me->ui)
return "No game set up to solve"; /* _shouldn't_ happen! */
msg = "Solve operation failed"; /* game _should_ overwrite on error */
- s = me->ourgame->solve(me->states[0].state, me->aux_info, &msg);
+ s = me->ourgame->solve(me->states[0].state,
+ me->states[me->statepos-1].state,
+ me->aux_info, &msg);
if (!s)
return msg;