diff options
Diffstat (limited to 'engines/sky/mouse.cpp')
-rw-r--r-- | engines/sky/mouse.cpp | 27 |
1 files changed, 22 insertions, 5 deletions
diff --git a/engines/sky/mouse.cpp b/engines/sky/mouse.cpp index d3a212a764..689fc98e0c 100644 --- a/engines/sky/mouse.cpp +++ b/engines/sky/mouse.cpp @@ -167,17 +167,34 @@ void Mouse::drawNewMouse() { //drawMouse(); } -void Mouse::waitMouseNotPressed(void) { +void Mouse::waitMouseNotPressed(int minDelay) { bool mousePressed = true; + uint32 now = _system->getMillis(); OSystem::Event event; - while (mousePressed) { - _system->delayMillis(20); + while (mousePressed || _system->getMillis() < now + minDelay) { while (_system->pollEvent(event)) { - if ((event.type == OSystem::EVENT_LBUTTONUP) || - (event.type == OSystem::EVENT_QUIT)) + switch (event.type) { + case OSystem::EVENT_LBUTTONUP: + mousePressed = false; + break; + case OSystem::EVENT_KEYDOWN: + if (event.kbd.ascii == 27) { + minDelay = 0; + mousePressed = false; + } + break; + case OSystem::EVENT_QUIT: + SkyEngine::_systemVars.quitGame = true; + minDelay = 0; mousePressed = false; + break; + default: + break; + } } + _system->updateScreen(); + _system->delayMillis(20); } } |