aboutsummaryrefslogtreecommitdiff
path: root/engines/cge/events.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/cge/events.cpp')
-rw-r--r--engines/cge/events.cpp78
1 files changed, 43 insertions, 35 deletions
diff --git a/engines/cge/events.cpp b/engines/cge/events.cpp
index 92c356fa5f..932c922c49 100644
--- a/engines/cge/events.cpp
+++ b/engines/cge/events.cpp
@@ -247,18 +247,46 @@ void MOUSE::ClrEvt(Sprite *spr) {
EvtTail = EvtHead;
}
+/*----------------- EventManager interface -----------------*/
+
+EventManager::EventManager() {
+ _quitFlag = false;
+}
+
+void EventManager::poll() {
+ while (g_system->getEventManager()->pollEvent(_event)) {
+ switch (_event.type) {
+ case Common::EVENT_QUIT:
+ _quitFlag = true;
+ return;
+ case Common::EVENT_KEYDOWN:
+ case Common::EVENT_KEYUP:
+ _keyboard->NewKeyboard(_event);
+ handleEvents();
+ break;
+ case Common::EVENT_MOUSEMOVE:
+ case Common::EVENT_LBUTTONDOWN:
+ case Common::EVENT_LBUTTONUP:
+ case Common::EVENT_RBUTTONDOWN:
+ case Common::EVENT_RBUTTONUP:
+ // TODO: Handle mouse events
+ //_mouse->NewMouse(event);
+ handleEvents();
+ break;
+ }
+ }
+}
-void MOUSE::Tick(void) {
- step();
+void EventManager::handleEvents(void) {
while (EvtTail != EvtHead) {
CGEEvent e = Evt[EvtTail];
if (e._msk) {
- if (Hold && e._ptr != Hold)
- Hold->touch(e._msk | ATTN, e._x - Hold->_x, e._y - Hold->_y);
+ if (_mouse->Hold && e._ptr != _mouse->Hold)
+ _mouse->Hold->touch(e._msk | ATTN, e._x - _mouse->Hold->_x, e._y - _mouse->Hold->_y);
// update mouse cursor position
if (e._msk & ROLL)
- gotoxy(e._x, e._y);
+ _mouse->gotoxy(e._x, e._y);
// activate current touched SPRITE
if (e._ptr) {
@@ -270,18 +298,18 @@ void MOUSE::Tick(void) {
Sys->touch(e._msk, e._x, e._y);
if (e._msk & L_DN) {
- Hold = e._ptr;
- if (Hold) {
- Hold->_flags._hold = true;
- hx = e._x - Hold->_x;
- hy = e._y - Hold->_y;
+ _mouse->Hold = e._ptr;
+ if (_mouse->Hold) {
+ _mouse->Hold->_flags._hold = true;
+ _mouse->hx = e._x - _mouse->Hold->_x;
+ _mouse->hy = e._y - _mouse->Hold->_y;
}
}
if (e._msk & L_UP) {
- if (Hold) {
- Hold->_flags._hold = false;
- Hold = NULL;
+ if (_mouse->Hold) {
+ _mouse->Hold->_flags._hold = false;
+ _mouse->Hold = NULL;
}
}
///Touched = e.Ptr;
@@ -292,28 +320,8 @@ void MOUSE::Tick(void) {
}
EvtTail = (EvtTail + 1) % EVT_MAX;
}
- if (Hold)
- Hold->gotoxy(_x - hx, _y - hy);
-}
-
-/*----------------- EventManager interface -----------------*/
-
-EventManager::EventManager() {
- _quitFlag = false;
-}
-
-void EventManager::poll() {
- while (g_system->getEventManager()->pollEvent(_event)) {
- switch (_event.type) {
- case Common::EVENT_QUIT:
- _quitFlag = true;
- return;
- case Common::EVENT_KEYDOWN:
- case Common::EVENT_KEYUP:
- _keyboard->NewKeyboard(_event);
- break;
- }
- }
+ if (_mouse->Hold)
+ _mouse->Hold->gotoxy(_mouse->_x - _mouse->hx, _mouse->_y - _mouse->hy);
}
} // End of namespace CGE