First cut at a game timer. Yet another backend function which

indicates whether a particular game state should have the timer
going (for Mines the initial indeterminate state does not have this
property, and neither does a dead or won state); a midend function
that optionally (on request from the game) prepends a timer to the
front of the status bar text; some complicated midend timing code.

It's not great. It's ugly; it's probably slightly inaccurate; it's
got no provision for anyone but the game author decreeing whether a
game is timed or not. But Mines can't be taken seriously without a
timer, so it's a start.

[originally from svn r5866]
This commit is contained in:
Simon Tatham
2005-05-30 16:15:34 +00:00
parent 7ddaa1382f
commit 90560462c4
16 changed files with 158 additions and 17 deletions

10
mines.c
View File

@ -10,8 +10,6 @@
* That hook can talk to the game_ui and set the cheated flag,
* and then make_move can avoid setting the `won' flag after that.
*
* - timer
*
* - question marks (arrgh, preferences?)
*
* - sensible parameter constraints
@ -2700,6 +2698,13 @@ static int game_wants_statusbar(void)
return TRUE;
}
static int game_timing_state(game_state *state)
{
if (state->dead || state->won || !state->layout->mines)
return FALSE;
return TRUE;
}
#ifdef COMBINED
#define thegame mines
#endif
@ -2733,4 +2738,5 @@ const struct game thegame = {
game_anim_length,
game_flash_length,
game_wants_statusbar,
TRUE, game_timing_state,
};