diff options
Diffstat (limited to 'engines')
-rw-r--r-- | engines/avalanche/help.cpp | 57 | ||||
-rw-r--r-- | engines/avalanche/help.h | 1 |
2 files changed, 30 insertions, 28 deletions
diff --git a/engines/avalanche/help.cpp b/engines/avalanche/help.cpp index 17faa2a341..9985e9ea6d 100644 --- a/engines/avalanche/help.cpp +++ b/engines/avalanche/help.cpp @@ -144,37 +144,38 @@ byte Help::checkMouse() { return 0; } -void Help::continueHelp() { - warning("STUB: Help::continueHelp()"); - - do { - Common::Event event; - bool escape = false; - while (!_vm->shouldQuit() && !escape) { - _vm->_graphics->refreshScreen(); - while (_vm->getEvent(event)) { - if (event.type == Common::EVENT_KEYDOWN) { - escape = true; - break; - } - } +bool Help::handleKeyboard(const Common::Event &event) { + if (event.kbd.keycode == Common::KEYCODE_ESCAPE) + return true; + + for (int i = 0; i < _buttonNum; i++) { + char upperCase = toupper(event.kbd.ascii); + if (((Common::KEYCODE_a <= event.kbd.keycode) && (event.kbd.keycode <= Common::KEYCODE_z) && (_buttons[i]._trigger == upperCase)) || + ((event.kbd.keycode == Common::KEYCODE_PAGEUP) && (_buttons[i]._trigger == 214)) || + ((event.kbd.keycode == Common::KEYCODE_PAGEDOWN) && (_buttons[i]._trigger == 216))) { // We had to handle the pageups/pagedowns separately. + _vm->fadeOut(); + switchPage(_buttons[i]._whither); + _vm->fadeIn(); + return false; } + } - if (event.kbd.keycode == Common::KEYCODE_ESCAPE) - break; + return false; +} - for (int i = 0; i < _buttonNum; i++) { - char upperCase = toupper(event.kbd.ascii); - if (((Common::KEYCODE_a <= event.kbd.keycode) && (event.kbd.keycode <= Common::KEYCODE_z) && (_buttons[i]._trigger == upperCase)) || - ((event.kbd.keycode == Common::KEYCODE_PAGEUP) && (_buttons[i]._trigger == 214)) || - ((event.kbd.keycode == Common::KEYCODE_PAGEDOWN) && (_buttons[i]._trigger == 216))) { // We had to handle the pageups/pagedowns separately. - _vm->fadeOut(); - switchPage(_buttons[i]._whither); - _vm->fadeIn(); - break; - } - } - } while (true); +void Help::continueHelp() { + warning("STUB: Help::continueHelp()"); + + bool close = false; + Common::Event event; + while (!_vm->shouldQuit() && !close) { + _vm->_graphics->refreshScreen(); + _vm->getEvent(event); + if (event.type == Common::EVENT_KEYDOWN) { + close = handleKeyboard(event); + } + } + } /** diff --git a/engines/avalanche/help.h b/engines/avalanche/help.h index 23fa5d4c40..8ac552d440 100644 --- a/engines/avalanche/help.h +++ b/engines/avalanche/help.h @@ -53,6 +53,7 @@ private: void switchPage(byte which); Common::String getLine(Common::File &file); // It was a nested function in getMe(). byte checkMouse(); // Returns clicked-on button, or 0 if none. + bool handleKeyboard(const Common::Event &event); void continueHelp(); }; |