diff options
Diffstat (limited to 'engines/kyra/gui.cpp')
-rw-r--r-- | engines/kyra/gui.cpp | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/engines/kyra/gui.cpp b/engines/kyra/gui.cpp index 06d7f1783a..b316d727bd 100644 --- a/engines/kyra/gui.cpp +++ b/engines/kyra/gui.cpp @@ -335,6 +335,54 @@ int GUI::getNextSavegameSlot() { return 0; } +void GUI::checkTextfieldInput() { + Common::Event event; + + uint32 now = _vm->_system->getMillis(); + + bool running = true; + int keys = 0; + while (_vm->_eventMan->pollEvent(event) && running) { + switch (event.type) { + case Common::EVENT_KEYDOWN: + if (event.kbd.keycode == 'q' && event.kbd.flags == Common::KBD_CTRL) + _vm->quitGame(); + else + _keyPressed = event.kbd; + running = false; + break; + + case Common::EVENT_LBUTTONDOWN: + case Common::EVENT_LBUTTONUP: { + Common::Point pos = _vm->getMousePos(); + _vm->_mouseX = pos.x; + _vm->_mouseY = pos.y; + keys = event.type == Common::EVENT_LBUTTONDOWN ? 199 : (200 | 0x800); + running = false; + } break; + + case Common::EVENT_MOUSEMOVE: { + Common::Point pos = _vm->getMousePos(); + _vm->_mouseX = pos.x; + _vm->_mouseY = pos.y; + _screen->updateScreen(); + _lastScreenUpdate = now; + } break; + + default: + break; + } + } + + if (now - _lastScreenUpdate > 50) { + _vm->_system->updateScreen(); + _lastScreenUpdate = now; + } + + processButtonList(_menuButtonList, keys | 0x8000, 0); + _vm->_system->delayMillis(3); +} + #pragma mark - MainMenu::MainMenu(KyraEngine_v1 *vm) : _vm(vm), _screen(0) { |