shithub: puzzles

Download patch

ref: 7aefa1110afd73c9bfba0ba3af34e8ce78b96ce6
parent: f3d39a0abb30053fa399dbf12e16da7d9a9fc9df
author: Simon Tatham <anakin@pobox.com>
date: Tue Jan 12 13:34:06 EST 2010

Add a couple more checks to the 3d collision detection, without
which a click miles above the invisible RH surface of a tower would
sometimes select that tower.

[originally from svn r8833]

--- a/towers.c
+++ b/towers.c
@@ -1290,10 +1290,11 @@
 			(x - ox >= 0 && x - ox < TILESIZE &&
 			 y - oy >= 0 && y - oy < TILESIZE) ||
 			/* in triangle between top-left corners? */
-			(ox > bx && x >= bx && x <= ox &&
+			(ox > bx && x >= bx && x <= ox && y <= by &&
 			 (by-y) * (ox-bx) <= (by-oy) * (x-bx)) ||
 			/* in triangle between bottom-right corners? */
 			(ox > bx && x >= bx+TILESIZE && x <= ox+TILESIZE &&
+			 y >= oy+TILESIZE &&
 			 (by-y+TILESIZE)*(ox-bx) >= (by-oy)*(x-bx-TILESIZE))) {
 			tx = cx;
 			ty = cy;