mirror of
git://git.tartarus.org/simon/puzzles.git
synced 2025-04-21 16:05:44 -07:00
The printing function in Bridges was unable to cope with more than two
bridges between a pair of islands! Good grief. How did we never spot that before? [originally from svn r9083]
This commit is contained in:
21
bridges.c
21
bridges.c
@ -2735,7 +2735,7 @@ static void game_print(drawing *dr, game_state *state, int ts)
|
||||
int ink = print_mono_colour(dr, 0);
|
||||
int paper = print_mono_colour(dr, 1);
|
||||
int x, y, cx, cy, i, nl;
|
||||
int loff = ts/8;
|
||||
int loff;
|
||||
grid_type grid;
|
||||
|
||||
/* Ick: fake up `ds->tilesize' for macro expansion purposes */
|
||||
@ -2745,6 +2745,7 @@ static void game_print(drawing *dr, game_state *state, int ts)
|
||||
/* I don't think this wants a border. */
|
||||
|
||||
/* Bridges */
|
||||
loff = ts / (8 * sqrt((state->params.maxb - 1)));
|
||||
print_line_width(dr, ts / 12);
|
||||
for (x = 0; x < state->w; x++) {
|
||||
for (y = 0; y < state->h; y++) {
|
||||
@ -2754,20 +2755,14 @@ static void game_print(drawing *dr, game_state *state, int ts)
|
||||
|
||||
if (grid & G_ISLAND) continue;
|
||||
if (grid & G_LINEV) {
|
||||
if (nl > 1) {
|
||||
draw_line(dr, cx+ts/2-loff, cy, cx+ts/2-loff, cy+ts, ink);
|
||||
draw_line(dr, cx+ts/2+loff, cy, cx+ts/2+loff, cy+ts, ink);
|
||||
} else {
|
||||
draw_line(dr, cx+ts/2, cy, cx+ts/2, cy+ts, ink);
|
||||
}
|
||||
for (i = 0; i < nl; i++)
|
||||
draw_line(dr, cx+ts/2+(2*i-nl+1)*loff, cy,
|
||||
cx+ts/2+(2*i-nl+1)*loff, cy+ts, ink);
|
||||
}
|
||||
if (grid & G_LINEH) {
|
||||
if (nl > 1) {
|
||||
draw_line(dr, cx, cy+ts/2-loff, cx+ts, cy+ts/2-loff, ink);
|
||||
draw_line(dr, cx, cy+ts/2+loff, cx+ts, cy+ts/2+loff, ink);
|
||||
} else {
|
||||
draw_line(dr, cx, cy+ts/2, cx+ts, cy+ts/2, ink);
|
||||
}
|
||||
for (i = 0; i < nl; i++)
|
||||
draw_line(dr, cx, cy+ts/2+(2*i-nl+1)*loff,
|
||||
cx+ts, cy+ts/2+(2*i-nl+1)*loff, ink);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user