diff options
author | Johannes Schickel | 2005-11-11 22:17:06 +0000 |
---|---|---|
committer | Johannes Schickel | 2005-11-11 22:17:06 +0000 |
commit | 1f77077524d978b66234970b0220f311d036fe79 (patch) | |
tree | 2782184317c53f4dd2dc9ea5f57c48d0d8d7e8b3 /kyra/script_v1.cpp | |
parent | e1a8bce873cb301a9833ff132630b3defdf0e16a (diff) | |
download | scummvm-rg350-1f77077524d978b66234970b0220f311d036fe79.tar.gz scummvm-rg350-1f77077524d978b66234970b0220f311d036fe79.tar.bz2 scummvm-rg350-1f77077524d978b66234970b0220f311d036fe79.zip |
Commited patch #1354117. Thanks to vinterstum.
svn-id: r19560
Diffstat (limited to 'kyra/script_v1.cpp')
-rw-r--r-- | kyra/script_v1.cpp | 38 |
1 files changed, 27 insertions, 11 deletions
diff --git a/kyra/script_v1.cpp b/kyra/script_v1.cpp index 40624918ab..90a9d52d3b 100644 --- a/kyra/script_v1.cpp +++ b/kyra/script_v1.cpp @@ -373,10 +373,21 @@ int KyraEngine::cmd_blockOutWalkableRegion(ScriptState *script) { int KyraEngine::cmd_walkPlayerToPoint(ScriptState *script) { debug(9, "cmd_walkPlayerToPoint(0x%X)", script); - // if !stackPos(2) - // XXX + + if (!stackPos(2)) { + disableTimer(19); + disableTimer(14); + disableTimer(18); + } + int reinitScript = handleSceneChange(stackPos(0), stackPos(1), stackPos(2), stackPos(3)); - // XXX + + if (!stackPos(2)) { + enableTimer(19); + enableTimer(14); + enableTimer(18); + } + if (reinitScript) { _scriptInterpreter->initScript(script, script->dataPtr); } @@ -520,7 +531,7 @@ int KyraEngine::cmd_setBrandonStatusBit(ScriptState *script) { int KyraEngine::cmd_pauseSeconds(ScriptState *script) { debug(9, "cmd_pauseSeconds(0x%X)", script); - _system->delayMillis(stackPos(0)*1000); + delay(stackPos(0)*1000); return 0; } @@ -921,6 +932,7 @@ int KyraEngine::cmd_walkCharacterToPoint(ScriptState *script) { int toX = stackPos(1); int toY = stackPos(2); _pathfinderFlag2 = 1; + uint32 nextFrame; int findWayReturn = findWay(_characterList[character].x1, _characterList[character].y1, toX, toY, _movFacingTable, 150); _pathfinderFlag2 = 0; if (_lastFindWayRet < findWayReturn) { @@ -980,15 +992,19 @@ int KyraEngine::cmd_walkCharacterToPoint(ScriptState *script) { continue; } + nextFrame = getTimerDelay(5 + character) * _tickLength + _system->getMillis(); setCharacterPosition(character, 0); ++curPos; - // XXX - waitTicks(10); - _sprites->updateSceneAnims(); - // XXX updateMouseCursor(); - // XXX updateGameTimers(); - updateAllObjectShapes(); - // XXX processPalette(); + + while (_system->getMillis() < nextFrame) { + _sprites->updateSceneAnims(); + // XXX updateMouseCursor(); + updateGameTimers(); + updateAllObjectShapes(); + // XXX processPalette(); + if ((nextFrame - _system->getMillis()) >= 10) + _system->delayMillis(10); + } } return 0; } |