aboutsummaryrefslogtreecommitdiff
path: root/saga/animation.cpp
diff options
context:
space:
mode:
authorTorbjörn Andersson2005-10-03 10:01:09 +0000
committerTorbjörn Andersson2005-10-03 10:01:09 +0000
commit4823f41b15ef8ef5a67c945672c74bf3c016e424 (patch)
tree1d73cd32ac9c86f882fc531c5100ac7cb9fa5b84 /saga/animation.cpp
parent697374497b830e1d72ed137e6362f6f5aeb7f83e (diff)
downloadscummvm-rg350-4823f41b15ef8ef5a67c945672c74bf3c016e424.tar.gz
scummvm-rg350-4823f41b15ef8ef5a67c945672c74bf3c016e424.tar.bz2
scummvm-rg350-4823f41b15ef8ef5a67c945672c74bf3c016e424.zip
Experimental IHNM fix: Since it looks like the intro doesn't clear the
cutaway explicitly, perhaps it's done implicitly by sfScriptGotoScene instead? svn-id: r18927
Diffstat (limited to 'saga/animation.cpp')
-rw-r--r--saga/animation.cpp33
1 files changed, 21 insertions, 12 deletions
diff --git a/saga/animation.cpp b/saga/animation.cpp
index dc3b8e323f..2ac8d27bfe 100644
--- a/saga/animation.cpp
+++ b/saga/animation.cpp
@@ -159,32 +159,41 @@ void Anim::endCutaway(void) {
}
void Anim::returnFromCutaway(void) {
- // I believe this is called by scripts after running a series of
- // cutaways.
+ // I believe this is called by scripts after running a cutaway to
+ // ensure that we return to the scene as if nothing had happened. It's
+ // not called by the IHNM intro, presumably because there is no old
+ // scene to return to.
debug(0, "returnFromCutaway()");
if (_cutawayActive) {
- int i;
+ // Note that clearCutaway() sets _cutawayActive to false.
+ clearCutaway();
- _cutawayActive = false;
+ // TODO: Handle fade up, if we previously faded down
- for (i = 0; i < ARRAYSIZE(_cutawayAnimations); i++) {
- delete _cutawayAnimations[i];
- _cutawayAnimations[i] = NULL;
- }
+ // TODO: Restore the scene
+
+ // TODO: Restore the animations
- for (i = 0; i < MAX_ANIMATIONS; i++) {
+ for (int i = 0; i < MAX_ANIMATIONS; i++) {
if (_animations[i] && _animations[i]->state == ANIM_PLAYING) {
resume(i, 0);
}
}
+ }
+}
- // TODO: Handle fade up, if we previously faded down
+void Anim::clearCutaway(void) {
+ debug(0, "clearCutaway()\n");
- // TODO: Restore the scene
+ if (_cutawayActive) {
+ _cutawayActive = false;
- // TODO: Restore the animations
+ for (int i = 0; i < ARRAYSIZE(_cutawayAnimations); i++) {
+ delete _cutawayAnimations[i];
+ _cutawayAnimations[i] = NULL;
+ }
_vm->_gfx->showCursor(true);
}