488 if (cur_ticks >= next_tick || (_fast_forward && !_pause_game) || cur_ticks < prev_cur_ticks) { |
488 if (cur_ticks >= next_tick || (_fast_forward && !_pause_game) || cur_ticks < prev_cur_ticks) { |
489 _realtime_tick += cur_ticks - last_cur_ticks; |
489 _realtime_tick += cur_ticks - last_cur_ticks; |
490 last_cur_ticks = cur_ticks; |
490 last_cur_ticks = cur_ticks; |
491 next_tick = cur_ticks + 30; |
491 next_tick = cur_ticks + 30; |
492 |
492 |
|
493 bool old_ctrl_pressed = _ctrl_pressed; |
|
494 |
493 _ctrl_pressed = !!(mod & KMOD_CTRL); |
495 _ctrl_pressed = !!(mod & KMOD_CTRL); |
494 _shift_pressed = !!(mod & KMOD_SHIFT); |
496 _shift_pressed = !!(mod & KMOD_SHIFT); |
495 |
497 |
496 // determine which directional keys are down |
498 // determine which directional keys are down |
497 _dirkeys = |
499 _dirkeys = |
498 (keys[SDLK_LEFT] ? 1 : 0) | |
500 (keys[SDLK_LEFT] ? 1 : 0) | |
499 (keys[SDLK_UP] ? 2 : 0) | |
501 (keys[SDLK_UP] ? 2 : 0) | |
500 (keys[SDLK_RIGHT] ? 4 : 0) | |
502 (keys[SDLK_RIGHT] ? 4 : 0) | |
501 (keys[SDLK_DOWN] ? 8 : 0); |
503 (keys[SDLK_DOWN] ? 8 : 0); |
|
504 |
|
505 if (old_ctrl_pressed != _ctrl_pressed) HandleCtrlChanged(); |
|
506 |
502 GameLoop(); |
507 GameLoop(); |
503 |
508 |
504 _screen.dst_ptr = _sdl_screen->pixels; |
509 _screen.dst_ptr = _sdl_screen->pixels; |
505 UpdateWindows(); |
510 UpdateWindows(); |
506 if (++pal_tick > 4) { |
511 if (++pal_tick > 4) { |