Document Unix command-line options.
[sgt/puzzles] / bridges.c
index d12c1e4..721d75f 100644 (file)
--- a/bridges.c
+++ b/bridges.c
@@ -2230,7 +2230,7 @@ static void game_set_size(drawing *dr, game_drawstate *ds,
     ds->tilesize = tilesize;
 }
 
-static float *game_colours(frontend *fe, game_state *state, int *ncolours)
+static float *game_colours(frontend *fe, int *ncolours)
 {
     float *ret = snewn(3 * NCOLOURS, float);
     int i;
@@ -2288,22 +2288,30 @@ static void game_free_drawstate(drawing *dr, game_drawstate *ds)
 
 #define OFFSET(thing) ((TILE_SIZE/2) - ((thing)/2))
 
-static void line_vert(drawing *dr, game_drawstate *ds,
-                      int ox, int oy, int col, grid_type v)
+static void lines_vert(drawing *dr, game_drawstate *ds,
+                       int ox, int oy, int lv, int col, grid_type v)
 {
-    int lw = LINE_WIDTH;
+    int lw = LINE_WIDTH, gw = LINE_WIDTH, bw, i, loff;
+    while ((bw = lw * lv + gw * (lv+1)) > TILE_SIZE)
+        gw--;
+    loff = OFFSET(bw);
     if (v & G_MARKV)
-        draw_rect(dr, ox-lw, oy, lw*3, TILE_SIZE, COL_MARK);
-    draw_rect(dr, ox, oy, lw, TILE_SIZE, col);
+        draw_rect(dr, ox + loff, oy, bw, TILE_SIZE, COL_MARK);
+    for (i = 0; i < lv; i++, loff += lw + gw)
+        draw_rect(dr, ox + loff + gw, oy, lw, TILE_SIZE, col);
 }
 
-static void line_horiz(drawing *dr, game_drawstate *ds,
-                       int ox, int oy, int col, grid_type v)
+static void lines_horiz(drawing *dr, game_drawstate *ds,
+                        int ox, int oy, int lh, int col, grid_type v)
 {
-    int lw = LINE_WIDTH;
+    int lw = LINE_WIDTH, gw = LINE_WIDTH, bw, i, loff;
+    while ((bw = lw * lh + gw * (lh+1)) > TILE_SIZE)
+        gw--;
+    loff = OFFSET(bw);
     if (v & G_MARKH)
-        draw_rect(dr, ox, oy-lw, TILE_SIZE, lw*3, COL_MARK);
-    draw_rect(dr, ox, oy, TILE_SIZE, lw, col);
+        draw_rect(dr, ox, oy + loff, TILE_SIZE, bw, COL_MARK);
+    for (i = 0; i < lh; i++, loff += lw + gw)
+        draw_rect(dr, ox, oy + loff + gw, TILE_SIZE, lw, col);
 }
 
 static void line_cross(drawing *dr, game_drawstate *ds,
@@ -2353,8 +2361,7 @@ static void lines_redraw(drawing *dr,
                          game_state *state, game_drawstate *ds, game_ui *ui,
                          int x, int y, grid_type v, int lv, int lh)
 {
-    int lw = LINE_WIDTH, bw;
-    int ox = COORD(x), oy = COORD(y), loff, i;
+    int ox = COORD(x), oy = COORD(y);
     int vcol = (v & G_FLASH) ? COL_HIGHLIGHT :
         (v & G_WARN) ? COL_WARNING : COL_FOREGROUND, hcol = vcol;
     grid_type todraw = v & G_NOLINE;
@@ -2385,16 +2392,10 @@ static void lines_redraw(drawing *dr,
         line_cross(dr, ds, ox + TS8(1), oy + TS8(3), hcol, todraw);
         line_cross(dr, ds, ox + TS8(5), oy + TS8(3), hcol, todraw);
     }
-    if (lv) {
-        bw = (lv*2-1) * lw;
-        for (i = 0, loff = OFFSET(bw); i < lv; i++, loff += lw*2)
-            line_vert(dr, ds, ox + loff, oy, vcol, v);
-    }
-    if (lh) {
-        bw = (lh*2-1) * lw;
-        for (i = 0, loff = OFFSET(bw); i < lh; i++, loff += lw*2)
-            line_horiz(dr, ds, ox, oy + loff, hcol, v);
-    }
+    if (lv)
+        lines_vert(dr, ds, ox, oy, lv, vcol, v);
+    if (lh)
+        lines_horiz(dr, ds, ox, oy, lh, hcol, v);
 
     dsf_debug_draw(dr, state, ds, x, y);
     draw_update(dr, ox, oy, TILE_SIZE, TILE_SIZE);
@@ -2552,11 +2553,6 @@ static float game_flash_length(game_state *oldstate, game_state *newstate,
     return 0.0F;
 }
 
-static int game_wants_statusbar(void)
-{
-    return FALSE;
-}
-
 static int game_timing_state(game_state *state, game_ui *ui)
 {
     return TRUE;
@@ -2666,9 +2662,9 @@ const struct game thegame = {
     game_anim_length,
     game_flash_length,
     TRUE, FALSE, game_print_size, game_print,
-    game_wants_statusbar,
+    FALSE,                            /* wants_statusbar */
     FALSE, game_timing_state,
-    0,                                /* mouse_priorities */
+    0,                                /* flags */
 };
 
 /* vim: set shiftwidth=4 tabstop=8: */