Chris Boyle reports an off-by-two error ('a Qui-Gon Jinx' :-) in
[sgt/puzzles] / pattern.c
index 274fcdb..7c1b0f2 100644 (file)
--- a/pattern.c
+++ b/pattern.c
@@ -808,7 +808,7 @@ static char *interpret_move(game_state *state, game_ui *ui, game_drawstate *ds,
             ui->drag = LEFT_DRAG;
             ui->release = LEFT_RELEASE;
 #ifdef STYLUS_BASED
-            ui->state = currstate == GRID_FULL ? GRID_UNKNOWN : GRID_FULL;
+            ui->state = (currstate + 2) % 3; /* FULL -> EMPTY -> UNKNOWN */
 #else
             ui->state = GRID_FULL;
 #endif
@@ -816,7 +816,7 @@ static char *interpret_move(game_state *state, game_ui *ui, game_drawstate *ds,
             ui->drag = RIGHT_DRAG;
             ui->release = RIGHT_RELEASE;
 #ifdef STYLUS_BASED
-            ui->state = currstate == GRID_EMPTY ? GRID_UNKNOWN : GRID_EMPTY;
+            ui->state = (currstate + 1) % 3; /* EMPTY -> FULL -> UNKNOWN */
 #else
             ui->state = GRID_EMPTY;
 #endif
@@ -1045,6 +1045,7 @@ static game_drawstate *game_new_drawstate(drawing *dr, game_state *state)
     ds->visible = snewn(ds->w * ds->h, unsigned char);
     ds->tilesize = 0;                  /* not decided yet */
     memset(ds->visible, 255, ds->w * ds->h);
+    ds->cur_x = ds->cur_y = 0;
 
     return ds;
 }