diff options
Diffstat (limited to 'engines/xeen/events.cpp')
-rw-r--r-- | engines/xeen/events.cpp | 33 |
1 files changed, 32 insertions, 1 deletions
diff --git a/engines/xeen/events.cpp b/engines/xeen/events.cpp index c4adabc433..8e1b207556 100644 --- a/engines/xeen/events.cpp +++ b/engines/xeen/events.cpp @@ -86,6 +86,18 @@ void EventsManager::pollEvents() { case Common::EVENT_KEYDOWN: _keyCode = event.kbd.keycode; break; + case Common::EVENT_LBUTTONDOWN: + _leftButton = true; + return; + case Common::EVENT_LBUTTONUP: + _leftButton = false; + return; + case Common::EVENT_RBUTTONDOWN: + _rightButton = true; + return; + case Common::EVENT_RBUTTONUP: + _rightButton = false; + break; default: break; } @@ -103,7 +115,11 @@ void EventsManager::clearEvents() { } - +void EventsManager::debounceMouse() { + while (_leftButton && !_vm->shouldQuit()) { + pollEventsAndWait(); + } +} bool EventsManager::getKey(Common::KeyState &key) { if (_keyCode == Common::KEYCODE_INVALID) { return false; @@ -114,6 +130,21 @@ bool EventsManager::getKey(Common::KeyState &key) { } } +bool EventsManager::isKeyPending() const { + return _keyCode != Common::KEYCODE_INVALID; +} + +/** + * Returns true if a key or mouse press is pending + */ +bool EventsManager::isKeyMousePressed() { + bool result = _leftButton || _rightButton || isKeyPending(); + debounceMouse(); + clearEvents(); + + return result; +} + /** * Updates the game counter to match the current frame counter */ |