~mdw
/
sgt
/
puzzles
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
David Nickerson reports odd behaviour involving a drag start point
[sgt/puzzles]
/
net.c
diff --git
a/net.c
b/net.c
index
3c8a660
..
667f939
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;
@@
-2195,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);
@@
-2244,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;
}
@@
-2374,8
+2377,8
@@
static float *game_colours(frontend *fe, int *ncolours)
return ret;
}
return ret;
}
-static void draw_
thick
_line(drawing *dr, int x1, int y1, int x2, int y2,
- int colour)
+static void draw_
filled
_line(drawing *dr, int x1, int y1, int x2, int y2,
+ int colour)
{
draw_line(dr, x1-1, y1, x2-1, y2, COL_WIRE);
draw_line(dr, x1+1, y1, x2+1, y2, COL_WIRE);
{
draw_line(dr, x1-1, y1, x2-1, y2, COL_WIRE);
draw_line(dr, x1+1, y1, x2+1, y2, COL_WIRE);
@@
-2511,9
+2514,9
@@
static void draw_tile(drawing *dr, game_state *state, game_drawstate *ds,
ex = (TILE_SIZE - TILE_BORDER - 1.0F) / 2.0F * X(dir);
ey = (TILE_SIZE - TILE_BORDER - 1.0F) / 2.0F * Y(dir);
MATMUL(tx, ty, matrix, ex, ey);
ex = (TILE_SIZE - TILE_BORDER - 1.0F) / 2.0F * X(dir);
ey = (TILE_SIZE - TILE_BORDER - 1.0F) / 2.0F * Y(dir);
MATMUL(tx, ty, matrix, ex, ey);
- draw_
thick
_line(dr, bx+(int)cx, by+(int)cy,
- bx+(int)(cx+tx), by+(int)(cy+ty),
- COL_WIRE);
+ draw_
filled
_line(dr, bx+(int)cx, by+(int)cy,
+
bx+(int)(cx+tx), by+(int)(cy+ty),
+ COL_WIRE);
}
}
for (dir = 1; dir < 0x10; dir <<= 1) {
}
}
for (dir = 1; dir < 0x10; dir <<= 1) {
@@
-2861,6
+2864,11
@@
static float game_flash_length(game_state *oldstate,
return 0.0F;
}
return 0.0F;
}
+static int game_status(game_state *state)
+{
+ return state->completed ? +1 : 0;
+}
+
static int game_timing_state(game_state *state, game_ui *ui)
{
return TRUE;
static int game_timing_state(game_state *state, game_ui *ui)
{
return TRUE;
@@
-3036,6
+3044,7
@@
const struct game thegame = {
game_redraw,
game_anim_length,
game_flash_length,
game_redraw,
game_anim_length,
game_flash_length,
+ game_status,
TRUE, FALSE, game_print_size, game_print,
TRUE, /* wants_statusbar */
FALSE, game_timing_state,
TRUE, FALSE, game_print_size, game_print,
TRUE, /* wants_statusbar */
FALSE, game_timing_state,