void EventsManager::ipause(uint amount) { updateGameCounter(); do { _vm->_interface->draw3d(true); pollEventsAndWait(); } while (!_vm->shouldQuit() && timeElapsed() < amount); }
bool Events::delay(uint32 time, bool interruptable) { // Different handling for really short versus extended times if (time < 10) { // For really short periods, simply delay by the desired amount pollEvents(); g_system->delayMillis(time); bool result = !(interruptable && (kbHit() || _pressed || _vm->shouldQuit())); clearEvents(); return result; } else { // For long periods go into a loop where we delay by 10ms at a time and then // check for events. This ensures for longer delays that responsiveness is // maintained uint32 delayEnd = g_system->getMillis() + time; while (!_vm->shouldQuit() && g_system->getMillis() < delayEnd) { pollEventsAndWait(); if (interruptable && (kbHit() || _mouseButtons)) { clearEvents(); return false; } } return !_vm->shouldQuit(); } }
void Events::sleep(uint time) { uint32 delayEnd = g_system->getMillis() + time; CSound &sound = g_vm->_window->_gameManager->_sound; while (!_vm->shouldQuit() && g_system->getMillis() < delayEnd) { pollEventsAndWait(); sound.updateMixer(); } }
bool EventsManager::wait(uint numFrames, bool interruptable) { while (!_vm->shouldQuit() && timeElapsed() < numFrames) { pollEventsAndWait(); if (interruptable && (_leftButton || _rightButton || isKeyPending())) return true; } return false; }
bool Events::waitForPress(uint expiry) { uint32 delayEnd = g_system->getMillis() + expiry; CPressTarget pressTarget; addTarget(&pressTarget); while (!_vm->shouldQuit() && g_system->getMillis() < delayEnd && !pressTarget._pressed) { pollEventsAndWait(); } removeTarget(); return pressTarget._pressed; }
void EventsManager::debounceLeft() { while (_leftButton && !_vm->shouldQuit()) { pollEventsAndWait(); } }
void Events::sleep(uint time) { uint32 delayEnd = g_system->getMillis() + time; while (!_vm->shouldQuit() && g_system->getMillis() < delayEnd) pollEventsAndWait(); }