Trivial and silly patch to allow users to configure the Signpost

victory roll so that adjacent arrows rotate in opposite directions,
giving the impression that they're an interlocking field of gears.
Possibly even more brain-twisting than the original version :-)

[originally from svn r9384]
This commit is contained in:
Simon Tatham
2012-01-22 15:52:14 +00:00
parent 660216a1c4
commit 5e1c11ab69

View File

@ -2094,11 +2094,33 @@ static void game_redraw(drawing *dr, game_drawstate *ds, game_state *oldstate,
if (state->nums[i] != ds->nums[i] || if (state->nums[i] != ds->nums[i] ||
f != ds->f[i] || dirp != ds->dirp[i] || f != ds->f[i] || dirp != ds->dirp[i] ||
force || !ds->started) { force || !ds->started) {
int sign;
{
/*
* Trivial and foolish configurable option done on
* purest whim. With this option enabled, the
* victory flash is done by rotating each square
* in the opposite direction from its immediate
* neighbours, so that they behave like a field of
* interlocking gears. With it disabled, they all
* rotate in the same direction. Choose for
* yourself which is more brain-twisting :-)
*/
static int gear_mode = -1;
if (gear_mode < 0) {
char *env = getenv("SIGNPOST_GEARS");
gear_mode = (env && (env[0] == 'y' || env[0] == 'Y'));
}
if (gear_mode)
sign = 1 - 2 * ((x ^ y) & 1);
else
sign = 1;
}
tile_redraw(dr, ds, tile_redraw(dr, ds,
BORDER + x * TILE_SIZE, BORDER + x * TILE_SIZE,
BORDER + y * TILE_SIZE, BORDER + y * TILE_SIZE,
state->dirs[i], dirp, state->nums[i], f, state->dirs[i], dirp, state->nums[i], f,
angle_offset, -1); sign * angle_offset, -1);
ds->nums[i] = state->nums[i]; ds->nums[i] = state->nums[i];
ds->f[i] = f; ds->f[i] = f;
ds->dirp[i] = dirp; ds->dirp[i] = dirp;