aboutsummaryrefslogtreecommitdiff
path: root/engines/toon/toon.cpp
diff options
context:
space:
mode:
authorSylvain Dupont2011-01-30 02:18:53 +0000
committerSylvain Dupont2011-01-30 02:18:53 +0000
commit5934ccd184a302720103f7e803bdf4c9157db54b (patch)
treeb1ecdfac5e2c92258abda96bc9d4930317874bce /engines/toon/toon.cpp
parent01c32f7287481e6784619167d5de344fe8209c12 (diff)
downloadscummvm-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.cpp27
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