aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon Tatham <anakin@pobox.com>2007-03-23 18:08:21 +0000
committerSimon Tatham <anakin@pobox.com>2007-03-23 18:08:21 +0000
commit5fb108db00c8ad50b838274c24f7d1afc2cdd19b (patch)
tree2e7191a94586a70533ede3ffaaf0abb59cf3880a
parent02cd67ecb676cb1296d29630483e786f4f0303f6 (diff)
downloadpuzzles-5fb108db00c8ad50b838274c24f7d1afc2cdd19b.zip
puzzles-5fb108db00c8ad50b838274c24f7d1afc2cdd19b.tar.gz
puzzles-5fb108db00c8ad50b838274c24f7d1afc2cdd19b.tar.bz2
puzzles-5fb108db00c8ad50b838274c24f7d1afc2cdd19b.tar.xz
Kyle Brazell points out that the completion checker considers a
region valid if it has _a_ dot at its centre of symmetry, even if that dot isn't actually within the region in question. [originally from svn r7407]
-rw-r--r--galaxies.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/galaxies.c b/galaxies.c
index 24adf1e..5e75981 100644
--- a/galaxies.c
+++ b/galaxies.c
@@ -2622,10 +2622,16 @@ static int check_complete(game_state *state, int *dsf, int *colours)
*/
for (i = 0; i < w*h; i++)
if (sqdata[i].valid) {
- sqdata[i].cx = sqdata[i].minx + sqdata[i].maxx + 1;
- sqdata[i].cy = sqdata[i].miny + sqdata[i].maxy + 1;
+ int cx, cy;
+ cx = sqdata[i].cx = sqdata[i].minx + sqdata[i].maxx + 1;
+ cy = sqdata[i].cy = sqdata[i].miny + sqdata[i].maxy + 1;
if (!(SPACE(state, sqdata[i].cx, sqdata[i].cy).flags & F_DOT))
sqdata[i].valid = FALSE; /* no dot at centre of symmetry */
+ if (dsf_canonify(dsf, (cy-1)/2*w+(cx-1)/2) != i ||
+ dsf_canonify(dsf, (cy)/2*w+(cx-1)/2) != i ||
+ dsf_canonify(dsf, (cy-1)/2*w+(cx)/2) != i ||
+ dsf_canonify(dsf, (cy)/2*w+(cx)/2) != i)
+ sqdata[i].valid = FALSE; /* dot at cx,cy isn't ours */
if (SPACE(state, sqdata[i].cx, sqdata[i].cy).flags & F_DOT_BLACK)
sqdata[i].colour = 2;
else