Document the mouse control method for Cube.
[sgt/puzzles] / midend.c
index 8adc1c3..1def041 100644 (file)
--- 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)