Stop the analysis pass in Loopy's redraw routine from being
[sgt/puzzles] / slant.c
diff --git a/slant.c b/slant.c
index 88ed996..2f9de52 100644 (file)
--- a/slant.c
+++ b/slant.c
@@ -39,7 +39,8 @@ enum {
     COL_SLANT1,
     COL_SLANT2,
     COL_ERROR,
-    COL_CURSOR, COL_LOWLIGHT, /* LOWLIGHT currently not used. */
+    COL_CURSOR,
+    COL_FILLEDSQUARE,
     NCOLOURS
 };
 
@@ -1665,7 +1666,7 @@ struct game_drawstate {
     long *todraw;
 };
 
-static char *interpret_move(game_state *state, game_ui *ui, game_drawstate *ds,
+static char *interpret_move(game_state *state, game_ui *ui, const game_drawstate *ds,
                            int x, int y, int button)
 {
     int w = state->p.w, h = state->p.h;
@@ -1809,8 +1810,12 @@ static float *game_colours(frontend *fe, int *ncolours)
 {
     float *ret = snewn(3 * NCOLOURS, float);
 
-    /* CURSOR colour is a background highlight. LOWLIGHT is unused. */
-    game_mkhighlight(fe, ret, COL_BACKGROUND, COL_CURSOR, COL_LOWLIGHT);
+    /* CURSOR colour is a background highlight. */
+    game_mkhighlight(fe, ret, COL_BACKGROUND, COL_CURSOR, -1);
+
+    ret[COL_FILLEDSQUARE * 3 + 0] = ret[COL_BACKGROUND * 3 + 0];
+    ret[COL_FILLEDSQUARE * 3 + 1] = ret[COL_BACKGROUND * 3 + 1];
+    ret[COL_FILLEDSQUARE * 3 + 2] = ret[COL_BACKGROUND * 3 + 2];
 
     ret[COL_GRID * 3 + 0] = ret[COL_BACKGROUND * 3 + 0] * 0.7F;
     ret[COL_GRID * 3 + 1] = ret[COL_BACKGROUND * 3 + 1] * 0.7F;
@@ -1889,7 +1894,9 @@ static void draw_tile(drawing *dr, game_drawstate *ds, game_clues *clues,
 
     draw_rect(dr, COORD(x), COORD(y), TILESIZE, TILESIZE,
              (v & FLASH) ? COL_GRID :
-              (v & CURSOR) ? COL_CURSOR : COL_BACKGROUND);
+              (v & CURSOR) ? COL_CURSOR :
+             (v & (BACKSLASH | FORWSLASH)) ? COL_FILLEDSQUARE :
+             COL_BACKGROUND);
 
     /*
      * Draw the grid lines.
@@ -2072,6 +2079,11 @@ static float game_flash_length(game_state *oldstate, game_state *newstate,
     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;
@@ -2183,6 +2195,7 @@ const struct game thegame = {
     game_redraw,
     game_anim_length,
     game_flash_length,
+    game_status,
     TRUE, FALSE, game_print_size, game_print,
     FALSE,                            /* wants_statusbar */
     FALSE, game_timing_state,