~mdw
/
sgt
/
puzzles
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Another UI feature for Group: now you can click between two legend
[sgt/puzzles]
/
net.c
diff --git
a/net.c
b/net.c
index
3c8a660
..
c6226f2
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) {