diff options
author | Eugene Sandulenko | 2019-11-06 13:46:49 +0100 |
---|---|---|
committer | Eugene Sandulenko | 2019-11-13 22:07:08 +0100 |
commit | 651e7ef9f0f7c49064b886095f31977f141f21e6 (patch) | |
tree | 5e3d5202857874153fdb5df24c5b12b9b38bc497 | |
parent | 7b2e103ea3fad04d3719a3fd78c9a645582bb50d (diff) | |
download | scummvm-rg350-651e7ef9f0f7c49064b886095f31977f141f21e6.tar.gz scummvm-rg350-651e7ef9f0f7c49064b886095f31977f141f21e6.tar.bz2 scummvm-rg350-651e7ef9f0f7c49064b886095f31977f141f21e6.zip |
GRIFFON: Fixed sluggishness of the main menu and config menu
-rw-r--r-- | engines/griffon/dialogs.cpp | 92 |
1 files changed, 38 insertions, 54 deletions
diff --git a/engines/griffon/dialogs.cpp b/engines/griffon/dialogs.cpp index cc017874b8..6f02a31dd2 100644 --- a/engines/griffon/dialogs.cpp +++ b/engines/griffon/dialogs.cpp @@ -64,7 +64,6 @@ void GriffonEngine::title(int mode) { _videoBuffer->blit(*_videoBuffer2); int cursel = 0; - int keypause = _ticks + 220; int ticks1 = _ticks; if (config.music) { @@ -159,56 +158,50 @@ void GriffonEngine::title(int mode) { while (_itemyloc >= 16) _itemyloc = _itemyloc - 16; - g_system->getEventManager()->pollEvent(_event); - - if (_event.type == Common::EVENT_QUIT) - _shouldQuit = true; + if (g_system->getEventManager()->pollEvent(_event)) { + if (_event.type == Common::EVENT_QUIT) + _shouldQuit = true; - if (keypause < _ticks) { if (_event.type == Common::EVENT_KEYDOWN) { - keypause = _ticks + 150; + switch(_event.kbd.keycode) { + case Common::KEYCODE_ESCAPE: + if (mode == 1) + exitTitle = true; + break; + case Common::KEYCODE_UP: + cursel--; + if (cursel < 0) + cursel = (mode == 1 ? 3 : 2); + break; + case Common::KEYCODE_DOWN: + cursel++; + if (cursel >= (mode == 1 ? 4 : 3)) + cursel = 0; + break; + case Common::KEYCODE_RETURN: + switch(cursel) { + case 0: + _ticks = g_system->getMillis(); + ticks1 = _ticks; - switch(_event.kbd.keycode){ - case Common::KEYCODE_ESCAPE: - if (mode == 1) - exitTitle = true; + exitTitle = true; break; - case Common::KEYCODE_UP: - cursel--; - if (cursel < 0) - cursel = (mode == 1 ? 3 : 2); + case 1: + configMenu(); + _ticks = g_system->getMillis(); + ticks1 = _ticks; break; - case Common::KEYCODE_DOWN: - cursel++; - if (cursel >= (mode == 1 ? 4 : 3)) - cursel = 0; - break; - case Common::KEYCODE_RETURN: - switch(cursel) { - case 0: - _ticks = g_system->getMillis(); - keypause = _ticks + 150; - ticks1 = _ticks; - - exitTitle = true; - break; - case 1: - configMenu(); - _ticks = g_system->getMillis(); - keypause = _ticks + 150; - ticks1 = _ticks; - break; - case 2: - _shouldQuit = true; - break; - case 3: - exitTitle = true; - default: - break; - } + case 2: + _shouldQuit = true; break; + case 3: + exitTitle = true; default: break; + } + break; + default: + break; } } } @@ -251,10 +244,7 @@ void GriffonEngine::configMenu() { int cursel = MINCURSEL; bool exitMenu = false; - int tickwait = 1000 / 60; - _ticks = g_system->getMillis(); - int keypause = _ticks + tickwait; Graphics::TransparentSurface *configwindow = loadImage("art/configwindow.bmp", true); configwindow->setAlpha(160, true); @@ -338,9 +328,6 @@ void GriffonEngine::configMenu() { _videoBuffer->setAlpha((int)yy); g_system->copyRectToScreen(_videoBuffer->getPixels(), _videoBuffer->pitch, 0, 0, _videoBuffer->w, _videoBuffer->h); - g_system->updateScreen(); - - g_system->getEventManager()->pollEvent(_event); _ticksPassed = _ticks; _ticks = g_system->getMillis(); @@ -359,15 +346,11 @@ void GriffonEngine::configMenu() { while (_itemyloc >= 16) _itemyloc -= 16; - if (keypause < _ticks) { - g_system->getEventManager()->pollEvent(_event); - + while (g_system->getEventManager()->pollEvent(_event)) { if (_event.type == Common::EVENT_QUIT) _shouldQuit = true; if (_event.type == Common::EVENT_KEYDOWN) { - keypause = _ticks + tickwait; - if (_event.kbd.keycode == Common::KEYCODE_ESCAPE) break; @@ -461,6 +444,7 @@ void GriffonEngine::configMenu() { while (_cloudAngle >= 360) _cloudAngle -= 360; + g_system->updateScreen(); g_system->delayMillis(10); } while (!_shouldQuit && !exitMenu); |