shithub: puzzles

Download patch

ref: 98a9f06a6704192c983f1d40100dd41714331bf2
parent: 8392232d57b4d1aba82b8005813d39854e8cf74e
author: Simon Tatham <anakin@pobox.com>
date: Sat Aug 6 06:33:46 EDT 2005

Introduce an environment variable setting (SLANT_SWAP_BUTTONS=yes)
to reverse the effect of the mouse buttons. Gareth has been
complaining about this for days: apparently he finds precisely the
opposite control system intuitive to me.

This is a horrendous hack, and pushes me one step closer to losing
my temper and designing a proper preferences architecture.

[originally from svn r6168]

--- a/slant.c
+++ b/slant.c
@@ -1402,6 +1402,29 @@
         int v;
         char buf[80];
 
+	/*
+	 * This is an utterly awful hack which I should really sort out
+	 * by means of a proper configuration mechanism. One Slant
+	 * player has observed that they prefer the mouse buttons to
+	 * function exactly the opposite way round, so here's a
+	 * mechanism for environment-based configuration. I cache the
+	 * result in a global variable - yuck! - to avoid repeated
+	 * lookups.
+	 */
+	{
+	    static int swap_buttons = -1;
+	    if (swap_buttons < 0) {
+		char *env = getenv("SLANT_SWAP_BUTTONS");
+		swap_buttons = (env && (env[0] == 'y' || env[0] == 'Y'));
+	    }
+	    if (swap_buttons) {
+		if (button == LEFT_BUTTON)
+		    button = RIGHT_BUTTON;
+		else
+		    button = LEFT_BUTTON;
+	    }
+	}
+
         x = FROMCOORD(x);
         y = FROMCOORD(y);
         if (x < 0 || y < 0 || x >= w || y >= h)