Add a couple more checks to the 3d collision detection, without
authorsimon <simon@cda61777-01e9-0310-a592-d414129be87e>
Tue, 12 Jan 2010 18:34:06 +0000 (18:34 +0000)
committersimon <simon@cda61777-01e9-0310-a592-d414129be87e>
Tue, 12 Jan 2010 18:34:06 +0000 (18:34 +0000)
which a click miles above the invisible RH surface of a tower would
sometimes select that tower.

git-svn-id: svn://svn.tartarus.org/sgt/puzzles@8833 cda61777-01e9-0310-a592-d414129be87e

towers.c

index f06f2ad..c3372a3 100644 (file)
--- a/towers.c
+++ b/towers.c
@@ -1290,10 +1290,11 @@ static char *interpret_move(game_state *state, game_ui *ui, game_drawstate *ds,
                        (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;