~mdw
/
sgt
/
puzzles
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Increase by 1 in every direction the size of the blitter used to save
[sgt/puzzles]
/
net.c
diff --git
a/net.c
b/net.c
index
4fc5268
..
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;
@@
-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,14
+2090,14
@@
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 || button == CURSOR_SELECT2
) {
+
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;
action = TOGGLE_LOCK;
- else if (button == 'd' || button == 'D'
|| button == CURSOR_SELECT2
)
+ else if (button == 'd' || button == 'D')
action = ROTATE_RIGHT;
else if (button == 'f' || button == 'F')
action = ROTATE_180;
action = ROTATE_RIGHT;
else if (button == 'f' || button == 'F')
action = ROTATE_180;
@@
-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;
}
@@
-2363,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);
@@
-2500,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) {
@@
-2850,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;
@@
-3025,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,