ret = 0;
goto done;
} else {
- game_state *s =
- me->ourgame->make_move(me->states[me->statepos-1].state,
- me->ui, me->drawstate, x, y, button);
+ game_state *s;
+ char *movestr;
+
+ movestr =
+ me->ourgame->interpret_move(me->states[me->statepos-1].state,
+ me->ui, me->drawstate, x, y, button);
+ if (!movestr)
+ s = NULL;
+ else if (!*movestr)
+ s = me->states[me->statepos-1].state;
+ else {
+ s = me->ourgame->execute_move(me->states[me->statepos-1].state,
+ movestr);
+ assert(s != NULL);
+ sfree(movestr);
+ }
if (s == me->states[me->statepos-1].state) {
/*
char *midend_solve(midend_data *me)
{
game_state *s;
- char *msg;
+ char *msg, *movestr;
if (!me->ourgame->can_solve)
return "This game does not support the Solve operation";
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->states[me->statepos-1].state,
- me->aux_info, &msg);
- if (!s)
+ movestr = me->ourgame->solve(me->states[0].state,
+ me->states[me->statepos-1].state,
+ me->aux_info, &msg);
+ if (!movestr)
return msg;
+ s = me->ourgame->execute_move(me->states[me->statepos-1].state, movestr);
+ assert(s);
+ sfree(movestr);
/*
* Now enter the solved state as the next move.