Redo Mines and Inertia's mine graphics using an actual circle rather
authorsimon <simon@cda61777-01e9-0310-a592-d414129be87e>
Sun, 13 Sep 2009 13:08:34 +0000 (13:08 +0000)
committersimon <simon@cda61777-01e9-0310-a592-d414129be87e>
Sun, 13 Sep 2009 13:08:34 +0000 (13:08 +0000)
than an approximating octagon, to improve the look when zoomed to
high resolution.

git-svn-id: svn://svn.tartarus.org/sgt/puzzles@8646 cda61777-01e9-0310-a592-d414129be87e

inertia.c
mines.c

index aebd314..0af3f57 100644 (file)
--- a/inertia.c
+++ b/inertia.c
@@ -1896,32 +1896,10 @@ static void draw_tile(drawing *dr, game_drawstate *ds, int x, int y, int v)
        int cx = tx + TILESIZE / 2;
        int cy = ty + TILESIZE / 2;
        int r = TILESIZE / 2 - 3;
-       int coords[4*5*2];
-       int xdx = 1, xdy = 0, ydx = 0, ydy = 1;
-       int tdx, tdy, i;
-
-       for (i = 0; i < 4*5*2; i += 5*2) {
-           coords[i+2*0+0] = cx - r/6*xdx + r*4/5*ydx;
-           coords[i+2*0+1] = cy - r/6*xdy + r*4/5*ydy;
-           coords[i+2*1+0] = cx - r/6*xdx + r*ydx;
-           coords[i+2*1+1] = cy - r/6*xdy + r*ydy;
-           coords[i+2*2+0] = cx + r/6*xdx + r*ydx;
-           coords[i+2*2+1] = cy + r/6*xdy + r*ydy;
-           coords[i+2*3+0] = cx + r/6*xdx + r*4/5*ydx;
-           coords[i+2*3+1] = cy + r/6*xdy + r*4/5*ydy;
-           coords[i+2*4+0] = cx + r*3/5*xdx + r*3/5*ydx;
-           coords[i+2*4+1] = cy + r*3/5*xdy + r*3/5*ydy;
-
-           tdx = ydx;
-           tdy = ydy;
-           ydx = xdx;
-           ydy = xdy;
-           xdx = -tdx;
-           xdy = -tdy;
-       }
-
-       draw_polygon(dr, coords, 5*4, COL_MINE, COL_MINE);
 
+       draw_circle(dr, cx, cy, 5*r/6, COL_MINE, COL_MINE);
+       draw_rect(dr, cx - r/6, cy - r, 2*(r/6)+1, 2*r+1, COL_MINE);
+       draw_rect(dr, cx - r, cy - r/6, 2*r+1, 2*(r/6)+1, COL_MINE);
        draw_rect(dr, cx-r/3, cy-r/3, r/3, r/4, COL_HIGHLIGHT);
     } else if (v == STOP) {
        draw_circle(dr, tx + TILESIZE/2, ty + TILESIZE/2,
diff --git a/mines.c b/mines.c
index af6aa44..f6f6a85 100644 (file)
--- a/mines.c
+++ b/mines.c
@@ -2898,48 +2898,17 @@ static void draw_tile(drawing *dr, game_drawstate *ds,
        } else if (v >= 64) {
            /*
             * Mark a mine.
-            * 
-            * FIXME: this could be done better!
             */
-#if 0
-           draw_text(dr, x + TILE_SIZE / 2, y + TILE_SIZE / 2,
-                     FONT_VARIABLE, TILE_SIZE * 7 / 8,
-                     ALIGN_VCENTRE | ALIGN_HCENTRE,
-                     COL_MINE, "*");
-#else
            {
                int cx = x + TILE_SIZE / 2;
                int cy = y + TILE_SIZE / 2;
                int r = TILE_SIZE / 2 - 3;
-               int coords[4*5*2];
-               int xdx = 1, xdy = 0, ydx = 0, ydy = 1;
-               int tdx, tdy, i;
-
-               for (i = 0; i < 4*5*2; i += 5*2) {
-                   coords[i+2*0+0] = cx - r/6*xdx + r*4/5*ydx;
-                   coords[i+2*0+1] = cy - r/6*xdy + r*4/5*ydy;
-                   coords[i+2*1+0] = cx - r/6*xdx + r*ydx;
-                   coords[i+2*1+1] = cy - r/6*xdy + r*ydy;
-                   coords[i+2*2+0] = cx + r/6*xdx + r*ydx;
-                   coords[i+2*2+1] = cy + r/6*xdy + r*ydy;
-                   coords[i+2*3+0] = cx + r/6*xdx + r*4/5*ydx;
-                   coords[i+2*3+1] = cy + r/6*xdy + r*4/5*ydy;
-                   coords[i+2*4+0] = cx + r*3/5*xdx + r*3/5*ydx;
-                   coords[i+2*4+1] = cy + r*3/5*xdy + r*3/5*ydy;
-
-                   tdx = ydx;
-                   tdy = ydy;
-                   ydx = xdx;
-                   ydy = xdy;
-                   xdx = -tdx;
-                   xdy = -tdy;
-               }
-
-               draw_polygon(dr, coords, 5*4, COL_MINE, COL_MINE);
 
+               draw_circle(dr, cx, cy, 5*r/6, COL_MINE, COL_MINE);
+               draw_rect(dr, cx - r/6, cy - r, 2*(r/6)+1, 2*r+1, COL_MINE);
+               draw_rect(dr, cx - r, cy - r/6, 2*r+1, 2*(r/6)+1, COL_MINE);
                draw_rect(dr, cx-r/3, cy-r/3, r/3, r/4, COL_HIGHLIGHT);
            }
-#endif
 
            if (v == 66) {
                /*