diff options
Diffstat (limited to 'engines')
-rw-r--r-- | engines/mads/assets.cpp | 4 | ||||
-rw-r--r-- | engines/mads/assets.h | 4 | ||||
-rw-r--r-- | engines/mads/game.cpp | 1 | ||||
-rw-r--r-- | engines/mads/player.cpp | 14 | ||||
-rw-r--r-- | engines/mads/player.h | 3 |
5 files changed, 15 insertions, 11 deletions
diff --git a/engines/mads/assets.cpp b/engines/mads/assets.cpp index 9d022871d4..47b2763e44 100644 --- a/engines/mads/assets.cpp +++ b/engines/mads/assets.cpp @@ -218,9 +218,9 @@ SpriteSetCharInfo::SpriteSetCharInfo(Common::SeekableReadStream *s) { _numEntries = s->readUint16LE(); for (int i = 0; i < 16; ++i) - _frameList[i] = s->readUint16LE(); + _startFrames[i] = s->readUint16LE(); for (int i = 0; i < 16; ++i) - _frameList2[i] = s->readUint16LE(); + _stopFrames[i] = s->readUint16LE(); for (int i = 0; i < 16; ++i) _ticksList[i] = s->readUint16LE(); diff --git a/engines/mads/assets.h b/engines/mads/assets.h index b5b351242d..54417f84ff 100644 --- a/engines/mads/assets.h +++ b/engines/mads/assets.h @@ -48,8 +48,8 @@ public: int _totalFrames; int _numEntries; - int _frameList2[16]; - int _frameList[16]; + int _startFrames[16]; + int _stopFrames[16]; int _ticksList[16]; int _velocity; int _ticksAmount; diff --git a/engines/mads/game.cpp b/engines/mads/game.cpp index 28a1d1d4ea..3b22e37e9b 100644 --- a/engines/mads/game.cpp +++ b/engines/mads/game.cpp @@ -237,6 +237,7 @@ void Game::sectionLoop() { _player._targetFacing = _player._facing; _player.selectSeries(); _player.updateFrame(); + _player._visible3 = _player._visible; _player._special = _scene.getDepthHighBits(_player._playerPos); _player._priorTimer = _scene._frameStartTime - _player._ticksAmount; diff --git a/engines/mads/player.cpp b/engines/mads/player.cpp index f569e7ee2c..d1759d84f9 100644 --- a/engines/mads/player.cpp +++ b/engines/mads/player.cpp @@ -235,15 +235,15 @@ void Player::updateFrame() { } // Set the player frame number - int frameIndex = ABS(_frameListIndex); - _frameNumber = (_frameListIndex <= 0) ? spriteSet._charInfo->_frameList[frameIndex] : - spriteSet._charInfo->_frameList2[frameIndex]; + int listIndex = ABS(_frameListIndex); + _frameNumber = (_frameListIndex >= 0) ? spriteSet._charInfo->_startFrames[listIndex] : + spriteSet._charInfo->_stopFrames[listIndex]; // Set next waiting period in ticks - if (frameIndex == 0) { + if (listIndex == 0) { setBaseFrameRate(); } else { - _ticksAmount = spriteSet._charInfo->_ticksList[frameIndex]; + _ticksAmount = spriteSet._charInfo->_ticksList[listIndex]; } } @@ -521,11 +521,11 @@ void Player::idle() { _frameNumber += direction; _forceRefresh = true; - if (spriteSet._charInfo->_frameList2[frameIndex] < _frameNumber) { + if (spriteSet._charInfo->_stopFrames[frameIndex] < _frameNumber) { _trigger = _upcomingTrigger; updateFrame(); } - if (spriteSet._charInfo->_frameList[frameIndex] < _frameNumber) { + if (spriteSet._charInfo->_startFrames[frameIndex] < _frameNumber) { _trigger = _upcomingTrigger; updateFrame(); } diff --git a/engines/mads/player.h b/engines/mads/player.h index 71f3406f18..eee1cee67f 100644 --- a/engines/mads/player.h +++ b/engines/mads/player.h @@ -172,6 +172,9 @@ public: * direction which the player is facing in) */ void selectSeries(); + /* + * Moves to the next frame for the currently active player sprite set + */ void updateFrame(); void update(); |