aboutsummaryrefslogtreecommitdiff
path: root/engines/xeen/events.cpp
diff options
context:
space:
mode:
authorPaul Gilbert2014-12-26 22:00:39 +1100
committerPaul Gilbert2014-12-26 22:00:39 +1100
commit1d62e224b98e4d2c9736c4965b3da5735b32c022 (patch)
tree0b6295553aa4312d4784b72fb2266e178964a197 /engines/xeen/events.cpp
parenta93177e0b3a7aba23667b1edbf81fe4d949d69b7 (diff)
downloadscummvm-rg350-1d62e224b98e4d2c9736c4965b3da5735b32c022.tar.gz
scummvm-rg350-1d62e224b98e4d2c9736c4965b3da5735b32c022.tar.bz2
scummvm-rg350-1d62e224b98e4d2c9736c4965b3da5735b32c022.zip
XEEN: Implement button handlng and rest of Dark Side title screen
Diffstat (limited to 'engines/xeen/events.cpp')
-rw-r--r--engines/xeen/events.cpp33
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
*/