ref: ba3247bb927b412f67365264914740f75a35825b
parent: 0066cdd62aea5bde96903682e7fbdadfd5fd08d9
author: Simon Tatham <anakin@pobox.com>
date: Sun May 22 08:14:39 EDT 2005
Another tweak to the solver to make it handle blank tiles correctly. The previous checkin stopped it choking on them, but it didn't actually manage to _deduce_ that all the edges bordering them had to be closed. Now it does better. [originally from svn r5829]
--- a/net.c
+++ b/net.c
@@ -694,7 +694,6 @@
assert(j > 0); /* we can't lose _all_ possibilities! */
if (j < i) {
- int a, o;
done_something = TRUE;
/*
@@ -703,12 +702,16 @@
*/
while (j < 4)
tilestate[(y*w+x) * 4 + j++] = 255;
+ }
- /*
- * Now go through them again and see if we've
- * deduced anything new about any edges.
- */
+ /*
+ * Now go through the tile orientations again and see
+ * if we've deduced anything new about any edges.
+ */
+ {
+ int a, o;
a = 0xF; o = 0;
+
for (i = 0; i < 4 && tilestate[(y*w+x) * 4 + i] != 255; i++) {
a &= tilestate[(y*w+x) * 4 + i];
o |= tilestate[(y*w+x) * 4 + i];