diff options
author | Paul Gilbert | 2015-04-14 19:53:03 -0500 |
---|---|---|
committer | Paul Gilbert | 2015-04-14 19:53:03 -0500 |
commit | c58325b519371064348b747c957a89d009ac12ba (patch) | |
tree | 885089fd7427d4ef8c789cb3f388ee4c746e06dd | |
parent | 97d3df3c9e7faa4b9925765c4612d341848cf08c (diff) | |
download | scummvm-rg350-c58325b519371064348b747c957a89d009ac12ba.tar.gz scummvm-rg350-c58325b519371064348b747c957a89d009ac12ba.tar.bz2 scummvm-rg350-c58325b519371064348b747c957a89d009ac12ba.zip |
SHERLOCK: Fix scene transition
-rw-r--r-- | engines/sherlock/objects.cpp | 28 | ||||
-rw-r--r-- | engines/sherlock/scene.cpp | 10 |
2 files changed, 21 insertions, 17 deletions
diff --git a/engines/sherlock/objects.cpp b/engines/sherlock/objects.cpp index 4cf26a3ad7..ca1bdfb2c5 100644 --- a/engines/sherlock/objects.cpp +++ b/engines/sherlock/objects.cpp @@ -693,24 +693,24 @@ bool Object::checkEndOfSequence() { setObjSequence(seq, false); } } - } - if (_allow && _frameNumber == 0) { - // canimation just ended - if (_type != NO_SHAPE && _type != REMOVE) { - _type = REMOVE; + if (_allow && _frameNumber == 0) { + // canimation just ended + if (_type != NO_SHAPE && _type != REMOVE) { + _type = REMOVE; - if (!_countCAnimFrames) { - // Save details before shape is removed - _delta.x = _imageFrame->_frame.w; - _delta.y = _imageFrame->_frame.h; - _position = _imageFrame->_offset; + if (!_countCAnimFrames) { + // Save details before shape is removed + _delta.x = _imageFrame->_frame.w; + _delta.y = _imageFrame->_frame.h; + _position = _imageFrame->_offset; - // Free the images - delete _images; + // Free the images + delete _images; + } + } else { + _type = INVALID; } - } else { - _type = INVALID; } } diff --git a/engines/sherlock/scene.cpp b/engines/sherlock/scene.cpp index 8a6681b5e0..1ce2183af1 100644 --- a/engines/sherlock/scene.cpp +++ b/engines/sherlock/scene.cpp @@ -663,13 +663,13 @@ void Scene::transitionToScene() { if (cAnimNum != -1) { CAnim &c = _cAnim[cAnimNum]; - Common::Point pt = c._position; + Common::Point pt = c._goto; - c._position = Common::Point(-1, -1); + c._goto = Common::Point(-1, -1); people[AL]._position = Common::Point(0, 0); startCAnim(cAnimNum, 1); - c._position = pt; + c._goto = pt; } } @@ -875,7 +875,9 @@ int Scene::startCAnim(int cAnimNum, int playRate) { tpDir = cAnim._teleportDir; } + CursorId oldCursor = events.getCursor(); events.setCursor(WAIT); + _canimShapes.push_back(Object()); Object &cObj = _canimShapes[_canimShapes.size() - 1]; @@ -1040,6 +1042,8 @@ int Scene::startCAnim(int cAnimNum, int playRate) { people.gotoStand(people[AL]); } + events.setCursor(oldCursor); + return 1; } |