diff options
| author | Simon Tatham <anakin@pobox.com> | 2011-04-02 16:19:12 +0000 |
|---|---|---|
| committer | Simon Tatham <anakin@pobox.com> | 2011-04-02 16:19:12 +0000 |
| commit | 980880be1f2801b2a69fcc67abc0f5827fd106f2 (patch) | |
| tree | a500e629474755854d638bb21bcac4c3428f0707 /midend.c | |
| parent | 8c6c8df8f4bd07602931485956fce524925dc2bb (diff) | |
| download | puzzles-980880be1f2801b2a69fcc67abc0f5827fd106f2.zip puzzles-980880be1f2801b2a69fcc67abc0f5827fd106f2.tar.gz puzzles-980880be1f2801b2a69fcc67abc0f5827fd106f2.tar.bz2 puzzles-980880be1f2801b2a69fcc67abc0f5827fd106f2.tar.xz | |
Add a function to every game backend which indicates whether a game
state is in a solved position, and a midend function wrapping it.
(Or, at least, a situation in which further play is pointless. The
point is, given that game state, would it be a good idea for a front
end that does that sort of thing to proactively provide the option to
start a fresh game?)
[originally from svn r9140]
Diffstat (limited to 'midend.c')
| -rw-r--r-- | midend.c | 15 |
1 files changed, 15 insertions, 0 deletions
@@ -1336,6 +1336,21 @@ char *midend_solve(midend *me) return NULL; } +int midend_is_solved(midend *me) +{ + /* + * We should probably never be called when the state stack has no + * states on it at all - ideally, midends should never be left in + * that state for long enough to get put down and forgotten about. + * But if we are, I think we return _true_ - pedantically speaking + * a midend in that state is 'vacuously solved', and more + * practically, a user whose midend has been left in that state + * probably _does_ want the 'new game' option to be prominent. + */ + return (me->statepos == 0 || + me->ourgame->is_solved(me->states[me->statepos-1].state)); +} + char *midend_rewrite_statusbar(midend *me, char *text) { /* |