aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engines/composer/composer.cpp13
1 files changed, 8 insertions, 5 deletions
diff --git a/engines/composer/composer.cpp b/engines/composer/composer.cpp
index 343b5d2bd2..0a3b7b722a 100644
--- a/engines/composer/composer.cpp
+++ b/engines/composer/composer.cpp
@@ -768,7 +768,7 @@ Common::Error ComposerEngine::run() {
continue;
if (script._baseTime + script._duration > thisTime)
continue;
- if (script._count != 0xffff)
+ if (script._count != 0xffffffff)
script._count--;
script._baseTime = thisTime;
runScript(script._scriptId, i, 0, 0);
@@ -870,10 +870,10 @@ void ComposerEngine::onMouseMove(const Common::Point &pos) {
const Sprite *sprite = getSpriteAtPos(pos);
const Button *button = getButtonFor(sprite, pos);
if (_lastButton != button) {
- if (_lastButton)
+ if (_lastButton && _lastButton->_scriptIdRollOff)
runScript(_lastButton->_scriptIdRollOff, _lastButton->_id, buttonsDown, 0);
_lastButton = button;
- if (_lastButton)
+ if (_lastButton && _lastButton->_scriptIdRollOn)
runScript(_lastButton->_scriptIdRollOn, _lastButton->_id, buttonsDown, 0);
}
@@ -1066,6 +1066,9 @@ void ComposerEngine::runEvent(uint16 id, int16 param1, int16 param2, int16 param
uint16 scriptId = stream->readUint16LE();
delete stream;
+ if (!scriptId)
+ return;
+
debug(2, "running event %d via script %d(%d, %d, %d)", id, scriptId, param1, param2, param3);
runScript(scriptId, param1, param2, param3);
@@ -1483,7 +1486,7 @@ int16 ComposerEngine::scriptFuncCall(uint16 id, int16 param1, int16 param2, int1
debug(3, "kFuncQueueScript(%d, %d, %d)", param1, param2, param3);
_queuedScripts[param1]._baseTime = _system->getMillis();
_queuedScripts[param1]._duration = 10 * param2;
- _queuedScripts[param1]._count = 0xffff;
+ _queuedScripts[param1]._count = 0xffffffff;
_queuedScripts[param1]._scriptId = param3;
return 0;
case kFuncDequeueScript:
@@ -1614,7 +1617,7 @@ int16 ComposerEngine::scriptFuncCall(uint16 id, int16 param1, int16 param2, int1
{
Common::Point pos(_vars[param3], _vars[param3 + 1]);
int16 zorder = _vars[param3 + 2];
- debug(3, "kFuncAddSprite(%d, %d, [%d = %d, (%d, %d)])", param1, param2, param3, pos.x, pos.y, zorder);
+ debug(3, "kFuncAddSprite(%d, %d, [%d = (%d, %d), %d])", param1, param2, param3, pos.x, pos.y, zorder);
addSprite(param1, param2, zorder, pos);
}
return 0;