diff options
| author | Simon Tatham <anakin@pobox.com> | 2007-03-23 18:08:21 +0000 |
|---|---|---|
| committer | Simon Tatham <anakin@pobox.com> | 2007-03-23 18:08:21 +0000 |
| commit | 5fb108db00c8ad50b838274c24f7d1afc2cdd19b (patch) | |
| tree | 2e7191a94586a70533ede3ffaaf0abb59cf3880a | |
| parent | 02cd67ecb676cb1296d29630483e786f4f0303f6 (diff) | |
| download | puzzles-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.c | 10 |
1 files changed, 8 insertions, 2 deletions
@@ -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 |