~mdw
/
sgt
/
puzzles
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
The 3-D graphics in Towers need a corresponding change on the input
[sgt/puzzles]
/
net.c
diff --git
a/net.c
b/net.c
index
1177f80
..
ecbbbfb
100644
(file)
--- a/
net.c
+++ b/
net.c
@@
-950,8
+950,10
@@
static void perturb(int w, int h, unsigned char *tiles, int wrapping,
}
sfree(perim2);
}
sfree(perim2);
- if (i == nperim)
+ if (i == nperim) {
+ sfree(perimeter);
return; /* nothing we can do! */
return; /* nothing we can do! */
+ }
/*
* Now we've constructed a new link, we need to find the entire
/*
* Now we've constructed a new link, we need to find the entire
@@
-1650,7
+1652,7
@@
static game_state *new_game(midend *me, game_params *params, char *desc)
if (!(barrier(state, x, 0) & U) ||
!(barrier(state, x, state->height-1) & D))
state->wrapping = TRUE;
if (!(barrier(state, x, 0) & U) ||
!(barrier(state, x, state->height-1) & D))
state->wrapping = TRUE;
- for (y = 0; y < state->
width
; y++)
+ for (y = 0; y < state->
height
; y++)
if (!(barrier(state, 0, y) & L) ||
!(barrier(state, state->width-1, y) & R))
state->wrapping = TRUE;
if (!(barrier(state, 0, y) & L) ||
!(barrier(state, state->width-1, y) & R))
state->wrapping = TRUE;
@@
-1978,7
+1980,11
@@
static char *interpret_move(game_state *state, game_ui *ui,
* Middle button never drags: it only toggles the lock.
*/
action = TOGGLE_LOCK;
* Middle button never drags: it only toggles the lock.
*/
action = TOGGLE_LOCK;
- } else if (button == LEFT_BUTTON || button == RIGHT_BUTTON) {
+ } else if (button == LEFT_BUTTON
+#ifndef STYLUS_BASED
+ || button == RIGHT_BUTTON /* (see above) */
+#endif
+ ) {
/*
* Otherwise, we note down the start point for a drag.
*/
/*
* Otherwise, we note down the start point for a drag.
*/
@@
-1988,7
+1994,11
@@
static char *interpret_move(game_state *state, game_ui *ui,
ui->dragstarty = y % TILE_SIZE;
ui->dragged = FALSE;
return nullret; /* no actual action */
ui->dragstarty = y % TILE_SIZE;
ui->dragged = FALSE;
return nullret; /* no actual action */
- } else if (button == LEFT_DRAG || button == RIGHT_DRAG) {
+ } else if (button == LEFT_DRAG
+#ifndef STYLUS_BASED
+ || button == RIGHT_DRAG
+#endif
+ ) {
/*
* Find the new drag point and see if it necessitates a
* rotation.
/*
* Find the new drag point and see if it necessitates a
* rotation.
@@
-2037,7
+2047,11
@@
static char *interpret_move(game_state *state, game_ui *ui,
ui->dragstarty = yC;
ui->dragged = TRUE;
}
ui->dragstarty = yC;
ui->dragged = TRUE;
}
- } else if (button == LEFT_RELEASE || button == RIGHT_RELEASE) {
+ } else if (button == LEFT_RELEASE
+#ifndef STYLUS_BASED
+ || button == RIGHT_RELEASE
+#endif
+ ) {
if (!ui->dragged) {
/*
* There was a click but no perceptible drag:
if (!ui->dragged) {
/*
* There was a click but no perceptible drag:
@@
-2061,8
+2075,7
@@
static char *interpret_move(game_state *state, game_ui *ui,
#endif /* USE_DRAGGING */
#endif /* USE_DRAGGING */
- } else if (button == CURSOR_UP || button == CURSOR_DOWN ||
- button == CURSOR_RIGHT || button == CURSOR_LEFT) {
+ } else if (IS_CURSOR_MOVE(button)) {
switch (button) {
case CURSOR_UP: dir = U; break;
case CURSOR_DOWN: dir = D; break;
switch (button) {
case CURSOR_UP: dir = U; break;
case CURSOR_DOWN: dir = D; break;
@@
-2077,12
+2090,12
@@
static char *interpret_move(game_state *state, game_ui *ui,
} else if (button == 'a' || button == 's' || button == 'd' ||
button == 'A' || button == 'S' || button == 'D' ||
button == 'f' || button == 'F' ||
} else if (button == 'a' || button == 's' || button == 'd' ||
button == 'A' || button == 'S' || button == 'D' ||
button == 'f' || button == 'F' ||
-
button == CURSOR_SELECT
) {
+
IS_CURSOR_SELECT(button)
) {
tx = ui->cur_x;
ty = ui->cur_y;
if (button == 'a' || button == 'A' || button == CURSOR_SELECT)
action = ROTATE_LEFT;
tx = ui->cur_x;
ty = ui->cur_y;
if (button == 'a' || button == 'A' || button == CURSOR_SELECT)
action = ROTATE_LEFT;
- else if (button == 's' || button == 'S')
+ else if (button == 's' || button == 'S'
|| button == CURSOR_SELECT2
)
action = TOGGLE_LOCK;
else if (button == 'd' || button == 'D')
action = ROTATE_RIGHT;
action = TOGGLE_LOCK;
else if (button == 'd' || button == 'D')
action = ROTATE_RIGHT;
@@
-2184,7
+2197,7
@@
static char *interpret_move(game_state *state, game_ui *ui,
static game_state *execute_move(game_state *from, char *move)
{
game_state *ret;
static game_state *execute_move(game_state *from, char *move)
{
game_state *ret;
- int tx
, ty
, n, noanim, orig;
+ int tx
= -1, ty = -1
, n, noanim, orig;
ret = dup_game(from);
ret = dup_game(from);
@@
-2233,6
+2246,7
@@
static game_state *execute_move(game_state *from, char *move)
}
}
if (!noanim) {
}
}
if (!noanim) {
+ if (tx == -1 || ty == -1) { free_game(ret); return NULL; }
ret->last_rotate_x = tx;
ret->last_rotate_y = ty;
}
ret->last_rotate_x = tx;
ret->last_rotate_y = ty;
}