shithub: puzzles

Download patch

ref: 9f96c12e9f56ab504ffbf11fda68b8f469da63fa
parent: 3c6280ef8b370ebbf9f5d15a7622d63462a8f3ed
author: Simon Tatham <anakin@pobox.com>
date: Mon Jan 18 16:23:26 EST 2010

Fix from James H: in printing mode, the shared code between drawing
and printing must avoid referring to stuff in the game_drawstate,
since the game_drawstate isn't a real one.

[originally from svn r8851]

--- a/tents.c
+++ b/tents.c
@@ -2465,7 +2465,7 @@
      * changed) the numbers.
      */
     for (x = 0; x < w; x++) {
-	if (ds->numbersdrawn[x] != errors[w*h+x]) {
+	if (printing || ds->numbersdrawn[x] != errors[w*h+x]) {
 	    char buf[80];
 	    draw_rect(dr, COORD(x), COORD(h)+1, TILESIZE, BRBORDER-1,
 		      COL_BACKGROUND);
@@ -2474,11 +2474,12 @@
 		      FONT_VARIABLE, TILESIZE/2, ALIGN_HCENTRE|ALIGN_VNORMAL,
 		      (errors[w*h+x] ? COL_ERROR : COL_GRID), buf);
 	    draw_update(dr, COORD(x), COORD(h)+1, TILESIZE, BRBORDER-1);
-	    ds->numbersdrawn[x] = errors[w*h+x];
+	    if (!printing)
+                ds->numbersdrawn[x] = errors[w*h+x];
 	}
     }
     for (y = 0; y < h; y++) {
-	if (ds->numbersdrawn[w+y] != errors[w*h+w+y]) {
+	if (printing || ds->numbersdrawn[w+y] != errors[w*h+w+y]) {
 	    char buf[80];
 	    draw_rect(dr, COORD(w)+1, COORD(y), BRBORDER-1, TILESIZE,
 		      COL_BACKGROUND);
@@ -2487,7 +2488,8 @@
 		      FONT_VARIABLE, TILESIZE/2, ALIGN_HRIGHT|ALIGN_VCENTRE,
 		      (errors[w*h+w+y] ? COL_ERROR : COL_GRID), buf);
 	    draw_update(dr, COORD(w)+1, COORD(y), BRBORDER-1, TILESIZE);
-	    ds->numbersdrawn[w+y] = errors[w*h+w+y];
+	    if (!printing)
+                ds->numbersdrawn[w+y] = errors[w*h+w+y];
 	}
     }