game_timing_state() now has access to the game_ui. This means that

whether the timer is currently going is no longer solely dependent
on the current game_state: it can be dependent on more persistent
information stored in the game_ui. In particular, Mines now freezes
the timer permanently once you complete a grid for the first time,
so that you can then backtrack through your solution process without
destroying the information about how long it took you the first time
through.

[originally from svn r6088]
This commit is contained in:
Simon Tatham
2005-07-10 10:17:13 +00:00
parent 145301d0dc
commit 3d2c442bc4
17 changed files with 32 additions and 22 deletions

View File

@ -237,7 +237,8 @@ void midend_set_params(midend_data *me, game_params *params)
static void midend_set_timer(midend_data *me)
{
me->timing = (me->ourgame->is_timed &&
me->ourgame->timing_state(me->states[me->statepos-1].state));
me->ourgame->timing_state(me->states[me->statepos-1].state,
me->ui));
if (me->timing || me->flash_time || me->anim_time)
activate_timer(me->frontend);
else
@ -311,10 +312,10 @@ void midend_new_game(midend_data *me)
me->drawstate = me->ourgame->new_drawstate(me->states[0].state);
midend_size_new_drawstate(me);
me->elapsed = 0.0F;
midend_set_timer(me);
if (me->ui)
me->ourgame->free_ui(me->ui);
me->ui = me->ourgame->new_ui(me->states[0].state);
midend_set_timer(me);
me->pressed_mouse_button = 0;
}