aboutsummaryrefslogtreecommitdiff
path: root/kyra/script_v1.cpp
diff options
context:
space:
mode:
authorJohannes Schickel2005-11-11 22:17:06 +0000
committerJohannes Schickel2005-11-11 22:17:06 +0000
commit1f77077524d978b66234970b0220f311d036fe79 (patch)
tree2782184317c53f4dd2dc9ea5f57c48d0d8d7e8b3 /kyra/script_v1.cpp
parente1a8bce873cb301a9833ff132630b3defdf0e16a (diff)
downloadscummvm-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.cpp38
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;
}