diff options
author | lukaslw | 2014-08-06 17:35:08 +0200 |
---|---|---|
committer | lukaslw | 2014-08-06 17:35:08 +0200 |
commit | c47a8799b2fe4cc3381f337352a759a02296c636 (patch) | |
tree | 041c323b83a198c84eb3e0382a731dc3090d8c8b | |
parent | a3c829a7741630cf2aca1c142c782a111402902e (diff) | |
download | scummvm-rg350-c47a8799b2fe4cc3381f337352a759a02296c636.tar.gz scummvm-rg350-c47a8799b2fe4cc3381f337352a759a02296c636.tar.bz2 scummvm-rg350-c47a8799b2fe4cc3381f337352a759a02296c636.zip |
PRINCE: Second hero movement - moveShandria(), moveRunHero() fix
-rw-r--r-- | engines/prince/prince.cpp | 16 | ||||
-rw-r--r-- | engines/prince/prince.h | 1 |
2 files changed, 7 insertions, 10 deletions
diff --git a/engines/prince/prince.cpp b/engines/prince/prince.cpp index 9e19033507..905862998e 100644 --- a/engines/prince/prince.cpp +++ b/engines/prince/prince.cpp @@ -2191,6 +2191,9 @@ void PrinceEngine::moveRunHero(int heroId, int x, int y, int dir, bool runHeroFl } else { hero->_state = Hero::kHeroStateMove; } + if (heroId == kMainHero && _mouseFlag) { + moveShandria(); + } } } else { hero->freeOldMove(); @@ -2198,9 +2201,6 @@ void PrinceEngine::moveRunHero(int heroId, int x, int y, int dir, bool runHeroFl } hero->freeHeroAnim(); hero->_visible = 1; - if (heroId == 1 && _mouseFlag) { - moveShandria(); - } } } @@ -4190,8 +4190,6 @@ void PrinceEngine::scanDirections() { void PrinceEngine::moveShandria() { int shanLen1 = _shanLen; - static const int kMinDistance = 2500; - if (_flags->getFlagValue(Flags::SHANDOG)) { _secondHero->freeHeroAnim(); _secondHero->freeOldMove(); @@ -4211,7 +4209,6 @@ void PrinceEngine::moveShandria() { yDiff *= 1.5; int shanDis = xDiff * xDiff + yDiff * yDiff; if (shanDis >= kMinDistance) { - //scangoodpoint: while (1) { shanCoords -= 4; if (shanCoords == _mainHero->_currCoords) { @@ -4233,15 +4230,14 @@ void PrinceEngine::moveShandria() { break; } } - //bye2 int pathSizeDiff = (shanCoords - _mainHero->_currCoords) / 4; - int destDir = *_mainHero->_currDirTab + pathSizeDiff; + int destDir = *(_mainHero->_currDirTab + pathSizeDiff); _secondHero->_destDirection = destDir; int destX = READ_UINT16(shanCoords); int destY = READ_UINT16(shanCoords + 2); _secondHero->_coords = makePath(kSecondHero, _secondHero->_middleX, _secondHero->_middleY, destX, destY); if (_secondHero->_coords != nullptr) { - _secondHero->_currCoords = _mainHero->_coords; + _secondHero->_currCoords = _secondHero->_coords; int delay = shanLen1 - _shanLen; if (delay < 6) { delay = 6; @@ -4396,7 +4392,7 @@ byte *PrinceEngine::makePath(int heroId, int currX, int currY, int destX, int de WRITE_UINT32(newCoords, 0xFFFFFFFF); newCoords += 4; _shanLen = (newCoords - newCoordsBegin); - //_shanLen /= 4 ? + _shanLen /= 4; return newCoordsBegin; } } diff --git a/engines/prince/prince.h b/engines/prince/prince.h index 0c7e68c081..cb4e41fb79 100644 --- a/engines/prince/prince.h +++ b/engines/prince/prince.h @@ -497,6 +497,7 @@ public: static const int32 kPathBitmapLen = (kMaxPicHeight / kPathGridStep * kMaxPicWidth / kPathGridStep) / 8; static const int32 kTracePts = 8000; static const int32 kPBW = kMaxPicWidth / 16; // PathBitmapWidth + static const int kMinDistance = 2500; byte *_roomPathBitmap; // PL - Sala byte *_roomPathBitmapTemp; // PL - SSala |