diff options
author | Sylvain Dupont | 2011-01-30 02:18:53 +0000 |
---|---|---|
committer | Sylvain Dupont | 2011-01-30 02:18:53 +0000 |
commit | 5934ccd184a302720103f7e803bdf4c9157db54b (patch) | |
tree | b1ecdfac5e2c92258abda96bc9d4930317874bce /engines/toon/toon.cpp | |
parent | 01c32f7287481e6784619167d5de344fe8209c12 (diff) | |
download | scummvm-rg350-5934ccd184a302720103f7e803bdf4c9157db54b.tar.gz scummvm-rg350-5934ccd184a302720103f7e803bdf4c9157db54b.tar.bz2 scummvm-rg350-5934ccd184a302720103f7e803bdf4c9157db54b.zip |
TOON: Fix the last known z-order issues
Rewrote the Z-order management, it's now very close to the original code
svn-id: r55650
Diffstat (limited to 'engines/toon/toon.cpp')
-rw-r--r-- | engines/toon/toon.cpp | 27 |
1 files changed, 12 insertions, 15 deletions
diff --git a/engines/toon/toon.cpp b/engines/toon/toon.cpp index 4c377220d1..61b558ca6c 100644 --- a/engines/toon/toon.cpp +++ b/engines/toon/toon.cpp @@ -3118,22 +3118,15 @@ bool ToonEngine::loadGame(int32 slot) { _sceneAnimations[i].load(this, loadFile); } - _gameState->_timerTimeout[0] += timerDiff; - _gameState->_timerTimeout[1] += timerDiff; - - /* - int32 diff = _conversationData - _gameState->_conversationData; - - for (int32 i = 0; i < 60; i++) { - if (_gameState->_conversationState[i]._enable) { - // we have to fix up our pointers... - for (int32 a = 0; a < 10; a++) { - if (_gameState->_conversationState[i].state[a]._data4) - _gameState->_conversationState[i].state[a]._data4 = (int16 *)_gameState->_conversationState[i].state[a]._data4 + diff; - } + // scene animations have to be added in reverse order in animation manager to preserve the z order + for (int32 i = 63; i >= 0; i--) { + if (_sceneAnimations[i]._active && _sceneAnimations[i]._animInstance) { + _animationManager->addInstance(_sceneAnimations[i]._animInstance); } } - */ + + _gameState->_timerTimeout[0] += timerDiff; + _gameState->_timerTimeout[1] += timerDiff; _gameState->_conversationData = _conversationData; _firstFrame = true; @@ -4689,8 +4682,12 @@ void SceneAnimation::load(ToonEngine *vm, Common::ReadStream *stream) { if (stream->readByte() == 1) { _animInstance = vm->getAnimationManager()->createNewInstance(kAnimationScene); _animInstance->load(stream); - vm->getAnimationManager()->addInstance(_animInstance); + // we add them at the end of loading in reverse order + //vm->getAnimationManager()->addInstance(_animInstance); _originalAnimInstance = _animInstance; + } else { + _animInstance = NULL; + _originalAnimInstance = NULL; } // load animation if any |