HPEN *pens;
HRGN clip;
UINT timer;
+ DWORD timer_last_tickcount;
int npresets;
game_params **presets;
struct font *fonts;
void activate_timer(frontend *fe)
{
- fe->timer = SetTimer(fe->hwnd, fe->timer, 20, NULL);
+ if (!fe->timer) {
+ fe->timer = SetTimer(fe->hwnd, fe->timer, 20, NULL);
+ fe->timer_last_tickcount = GetTickCount();
+ }
}
static frontend *new_window(HINSTANCE inst)
int x, y;
RECT r, sr;
HDC hdc;
+ time_t t;
fe = snew(frontend);
- fe->me = midend_new(fe);
+
+ time(&t);
+ fe->me = midend_new(fe, &t, sizeof(t));
+
fe->inst = inst;
midend_new_game(fe->me);
midend_size(fe->me, &x, &y);
fe->timer = 0;
+ fe->fonts = NULL;
+ fe->nfonts = fe->fontsize = 0;
+
{
int i, ncolours;
float *colours;
mkctrl(fe, col1l, col2r, y, y+height, "BUTTON",
BS_NOTIFY | BS_AUTOCHECKBOX | WS_TABSTOP,
0, i->name, (j->ctlid = id++));
+ CheckDlgButton(fe->cfgbox, j->ctlid, (i->ival != 0));
y += height;
break;
PostQuitMessage(0);
return 0;
case WM_TIMER:
- if (fe->timer)
- midend_timer(fe->me, (float)0.02);
+ if (fe->timer) {
+ DWORD now = GetTickCount();
+ float elapsed = (float) (now - fe->timer_last_tickcount) * 0.001F;
+ midend_timer(fe->me, elapsed);
+ fe->timer_last_tickcount = now;
+ }
return 0;
}
{
MSG msg;
- srand(time(NULL));
-
InitCommonControls();
if (!prev) {