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

View File

@ -118,6 +118,7 @@ struct frontend {
HFONT cfgfont;
char *help_path;
int help_has_contents;
char *laststatus;
};
void fatal(char *fmt, ...)
@ -144,7 +145,14 @@ void get_random_seed(void **randseed, int *randseedsize)
void status_bar(frontend *fe, char *text)
{
SetWindowText(fe->statusbar, text);
char *rewritten = midend_rewrite_statusbar(fe->me, text);
if (!fe->laststatus || strcmp(rewritten, fe->laststatus)) {
SetWindowText(fe->statusbar, rewritten);
sfree(fe->laststatus);
fe->laststatus = rewritten;
} else {
sfree(rewritten);
}
}
void frontend_default_colour(frontend *fe, float *output)
@ -437,6 +445,8 @@ static frontend *new_window(HINSTANCE inst, char *game_id, char **error)
fe->fonts = NULL;
fe->nfonts = fe->fontsize = 0;
fe->laststatus = NULL;
{
int i, ncolours;
float *colours;