diff options
| author | Simon Tatham <anakin@pobox.com> | 2011-02-03 19:49:19 +0000 |
|---|---|---|
| committer | Simon Tatham <anakin@pobox.com> | 2011-02-03 19:49:19 +0000 |
| commit | fd98870bfff67c050fe4646b9bd03b4fdea698f9 (patch) | |
| tree | 291ab652b9fd2d203acab5d0ab5abfe4cd0efc81 | |
| parent | 540716194dd2ee5917acb25e4deed94a9ee939f2 (diff) | |
| download | puzzles-fd98870bfff67c050fe4646b9bd03b4fdea698f9.zip puzzles-fd98870bfff67c050fe4646b9bd03b4fdea698f9.tar.gz puzzles-fd98870bfff67c050fe4646b9bd03b4fdea698f9.tar.bz2 puzzles-fd98870bfff67c050fe4646b9bd03b4fdea698f9.tar.xz | |
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]
| -rw-r--r-- | bridges.c | 21 |
1 files changed, 8 insertions, 13 deletions
@@ -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); } } } |