diff options
author | Kirben | 2014-12-07 15:09:36 +1100 |
---|---|---|
committer | Kirben | 2014-12-07 15:09:36 +1100 |
commit | dcd0f597e6026e248ff6e2db0224f3f60626cdca (patch) | |
tree | f616b8ed6ae0b0ce56f7c81dd65ad4af84754ded /engines/scumm/boxes.cpp | |
parent | d8af639dfcbdae3c99f72c4c4ec4f07410d5915c (diff) | |
parent | 4b1b9ec66f5889fd20d88f8f7f565e8448ac8389 (diff) | |
download | scummvm-rg350-dcd0f597e6026e248ff6e2db0224f3f60626cdca.tar.gz scummvm-rg350-dcd0f597e6026e248ff6e2db0224f3f60626cdca.tar.bz2 scummvm-rg350-dcd0f597e6026e248ff6e2db0224f3f60626cdca.zip |
Merge pull request #539 from segrax/master
SCUMM: Maniac V0: Original Walk Code Implementation
Diffstat (limited to 'engines/scumm/boxes.cpp')
-rw-r--r-- | engines/scumm/boxes.cpp | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/engines/scumm/boxes.cpp b/engines/scumm/boxes.cpp index 70c8f2e032..087d8425ac 100644 --- a/engines/scumm/boxes.cpp +++ b/engines/scumm/boxes.cpp @@ -1158,6 +1158,30 @@ bool ScummEngine::areBoxesNeighbors(int box1nr, int box2nr) { return false; } +byte ScummEngine_v0::walkboxFindTarget(Actor *a, int destbox, Common::Point walkdest) { + Actor_v0 *Actor = (Actor_v0*)a; + + byte nextBox = getNextBox(a->_walkbox, destbox); + + if (nextBox != 0xFF && nextBox == destbox && areBoxesNeighbors(a->_walkbox, nextBox)) { + + Actor->_NewWalkTo = walkdest; + return nextBox; + } + + if (nextBox != 0xFF && nextBox != a->_walkbox) { + + getClosestPtOnBox(getBoxCoordinates(nextBox), a->getPos().x, a->getPos().y, Actor->_NewWalkTo.x, Actor->_NewWalkTo.y); + + } else { + if (walkdest.x == -1) + Actor->_NewWalkTo = Actor->_CurrentWalkTo; + else + Actor->_NewWalkTo = walkdest; + } + return nextBox; +} + bool ScummEngine_v0::areBoxesNeighbors(int box1nr, int box2nr) { int i; const int numOfBoxes = getNumBoxes(); |