ref: b2f1b324fe0cde3049af897d7b6c6d312fd8ccc0
parent: 33be388d4117860cb842ac13aa1dfa1a2761db0a
author: Simon Tatham <anakin@pobox.com>
date: Sun Nov 16 10:47:55 EST 2008
Patch from Lee Dowling to implement mouse control in Sokoban, along pretty much the same lines as Cube and Inertia. [originally from svn r8301]
--- a/unfinished/sokoban.c
+++ b/unfinished/sokoban.c
@@ -1044,7 +1044,7 @@
static char *interpret_move(game_state *state, game_ui *ui, game_drawstate *ds,
int x, int y, int button)
{
- int dx, dy;
+ int dx=0, dy=0;
char *move;
/*
@@ -1071,8 +1071,22 @@
dx = -1, dy = +1;
else if (button == (MOD_NUM_KEYPAD | '3'))
dx = +1, dy = +1;
+ else if (button == LEFT_BUTTON)
+ {
+ if(x < COORD(state->px))
+ dx = -1;
+ else if (x > COORD(state->px + 1))
+ dx = 1;
+ if(y < COORD(state->py))
+ dy = -1;
+ else if (y > COORD(state->py + 1))
+ dy = 1;
+ }
else
return NULL;
+
+ if((dx == 0) && (dy == 0))
+ return(NULL);
if (move_type(state, dx, dy) < 0)
return NULL;