diff options
Diffstat (limited to 'engines/director/lingo/lingo-events.cpp')
-rw-r--r-- | engines/director/lingo/lingo-events.cpp | 79 |
1 files changed, 42 insertions, 37 deletions
diff --git a/engines/director/lingo/lingo-events.cpp b/engines/director/lingo/lingo-events.cpp index 9a270cc824..b48278dd48 100644 --- a/engines/director/lingo/lingo-events.cpp +++ b/engines/director/lingo/lingo-events.cpp @@ -132,7 +132,7 @@ void Lingo::primaryEventHandler(LEvent event) { } #ifdef DEBUG_DONTPASSEVENT // #define DEBUG_DONTPASSEVENT to simulate raising of the dontPassEvent flag - g_lingo->dontPassEvent = true; + g_lingo->_dontPassEvent = true; debugC(3, kDebugLingoExec, "STUB: primaryEventHandler raising dontPassEvent"); #else debugC(3, kDebugLingoExec, "STUB: primaryEventHandler not raising dontPassEvent"); @@ -157,32 +157,35 @@ void Lingo::processInputEvent(LEvent event) { primaryEventHandler(event); - if (g_lingo->dontPassEvent) { - g_lingo->dontPassEvent = false; - } else { - if (_vm->getVersion() > 3) { - if (true) { - // TODO: Check whether occurring over a sprite - g_lingo->processEvent(event, kSpriteScript, currentFrame->_sprites[spriteId]->_scriptId); - } - g_lingo->processEvent(event, kCastScript, currentFrame->_sprites[spriteId]->_castId); - g_lingo->processEvent(event, kFrameScript, score->_frames[score->getCurrentFrame()]->_actionId); - // TODO: Is the kFrameScript call above correct? - } else if (event == kEventMouseUp) { - // Frame script overrides sprite script - if (!currentFrame->_sprites[spriteId]->_scriptId) { - g_lingo->processEvent(kEventNone, kSpriteScript, currentFrame->_sprites[spriteId]->_castId + 1024); - g_lingo->processEvent(event, kSpriteScript, currentFrame->_sprites[spriteId]->_castId + 1024); - } else { - g_lingo->processEvent(kEventNone, kFrameScript, currentFrame->_sprites[spriteId]->_scriptId); - } + if (g_lingo->_dontPassEvent) { + g_lingo->_dontPassEvent = false; + + return; + } + + if (_vm->getVersion() > 3) { + if (true) { + // TODO: Check whether occurring over a sprite + g_lingo->processEvent(event, kSpriteScript, currentFrame->_sprites[spriteId]->_scriptId); } - if (event == kEventKeyDown) { - // TODO: is the above condition necessary or useful? - g_lingo->processEvent(event, kGlobalScript, 0); + g_lingo->processEvent(event, kCastScript, currentFrame->_sprites[spriteId]->_castId); + g_lingo->processEvent(event, kFrameScript, score->_frames[score->getCurrentFrame()]->_actionId); + // TODO: Is the kFrameScript call above correct? + } else if (event == kEventMouseUp) { + // Frame script overrides sprite script + if (!currentFrame->_sprites[spriteId]->_scriptId) { + g_lingo->processEvent(kEventNone, kSpriteScript, currentFrame->_sprites[spriteId]->_castId + 1024); + g_lingo->processEvent(event, kSpriteScript, currentFrame->_sprites[spriteId]->_castId + 1024); + } else { + g_lingo->processEvent(kEventNone, kFrameScript, currentFrame->_sprites[spriteId]->_scriptId); } - runMovieScript(event); } + if (event == kEventKeyDown) { + // TODO: is the above condition necessary or useful? + g_lingo->processEvent(event, kGlobalScript, 0); + } + if (!g_lingo->_dontPassEvent) + runMovieScript(event); } void Lingo::runMovieScript(LEvent event) { @@ -214,22 +217,24 @@ void Lingo::processFrameEvent(LEvent event) { primaryEventHandler(event); } - if (g_lingo->dontPassEvent) { - g_lingo->dontPassEvent = false; + if (g_lingo->_dontPassEvent) { + g_lingo->_dontPassEvent = false; + + return; + } + + int entity; + + if (event == kEventPrepareFrame || event == kEventIdle) { + entity = score->getCurrentFrame(); } else { - int entity; + assert(score->_frames[score->getCurrentFrame()] != nullptr); + entity = score->_frames[score->getCurrentFrame()]->_actionId; + } + processEvent(event, kFrameScript, entity); - if (event == kEventPrepareFrame || event == kEventIdle) { - entity = score->getCurrentFrame(); - } else { - assert(score->_frames[score->getCurrentFrame()] != nullptr); - entity = score->_frames[score->getCurrentFrame()]->_actionId; - } - processEvent(event, - kFrameScript, - entity); + if (!g_lingo->_dontPassEvent) runMovieScript(event); - } } void Lingo::processGenericEvent(LEvent event) { |