aboutsummaryrefslogtreecommitdiff
path: root/blackbox.c
diff options
context:
space:
mode:
Diffstat (limited to 'blackbox.c')
-rw-r--r--blackbox.c22
1 files changed, 15 insertions, 7 deletions
diff --git a/blackbox.c b/blackbox.c
index 305feac..be79634 100644
--- a/blackbox.c
+++ b/blackbox.c
@@ -1462,13 +1462,21 @@ static float game_flash_length(game_state *oldstate, game_state *newstate,
return 0.0F;
}
-static int game_is_solved(game_state *state)
+static int game_status(game_state *state)
{
- /*
- * We return true whenever the solution has been revealed, even
- * (on spoiler grounds) if it wasn't guessed correctly.
- */
- return state->reveal;
+ if (state->reveal) {
+ /*
+ * We return nonzero whenever the solution has been revealed,
+ * even (on spoiler grounds) if it wasn't guessed correctly.
+ */
+ if (state->nwrong == 0 &&
+ state->nmissed == 0 &&
+ state->nright >= state->minballs)
+ return +1;
+ else
+ return -1;
+ }
+ return 0;
}
static int game_timing_state(game_state *state, game_ui *ui)
@@ -1519,7 +1527,7 @@ const struct game thegame = {
game_redraw,
game_anim_length,
game_flash_length,
- game_is_solved,
+ game_status,
FALSE, FALSE, game_print_size, game_print,
TRUE, /* wants_statusbar */
FALSE, game_timing_state,