diff options
author | Filippos Karapetis | 2007-07-05 03:37:23 +0000 |
---|---|---|
committer | Filippos Karapetis | 2007-07-05 03:37:23 +0000 |
commit | 8d81d720d3728987a026f13abe4e2aca0e678a23 (patch) | |
tree | 7c7c34b220cac5394e5c31e012e3341c8e4b3344 /engines/saga | |
parent | 91125a15ea6dc871ed3bffe0ff366ae5d0cb373d (diff) | |
download | scummvm-rg350-8d81d720d3728987a026f13abe4e2aca0e678a23.tar.gz scummvm-rg350-8d81d720d3728987a026f13abe4e2aca0e678a23.tar.bz2 scummvm-rg350-8d81d720d3728987a026f13abe4e2aca0e678a23.zip |
Implemented the rest of the differences of the sfScriptGotoScene opcode in IHNM
svn-id: r27916
Diffstat (limited to 'engines/saga')
-rw-r--r-- | engines/saga/sfuncs.cpp | 31 |
1 files changed, 21 insertions, 10 deletions
diff --git a/engines/saga/sfuncs.cpp b/engines/saga/sfuncs.cpp index e713326661..945d66f328 100644 --- a/engines/saga/sfuncs.cpp +++ b/engines/saga/sfuncs.cpp @@ -548,19 +548,20 @@ void Script::sfScriptGotoScene(SCRIPTFUNC_PARAMS) { sceneNumber = thread->pop(); entrance = thread->pop(); - if (_vm->getGameType() == GType_IHNM) + if (_vm->getGameType() == GType_IHNM) { transition = thread->pop(); - if (sceneNumber < 0) { - if (_vm->getGameType() == GType_ITE) { - _vm->shutDown(); - return; - } + _vm->_gfx->setCursor(kCursorBusy); } - if (_vm->getGameType() == GType_IHNM) { - warning("FIXME: implement sfScriptGotoScene differences for IHNM"); + if ((_vm->getGameType() == GType_ITE && sceneNumber < 0) || + (_vm->getGameType() == GType_IHNM && sceneNumber == 0)) { + // TODO: set creditsFlag to true for IHNM + _vm->shutDown(); + return; + } + if (_vm->getGameType() == GType_IHNM) { // Since it doesn't look like the IHNM scripts remove the // cutaway after the intro, this is probably the best place to // to it. @@ -574,6 +575,7 @@ void Script::sfScriptGotoScene(SCRIPTFUNC_PARAMS) { _vm->_interface->setMode(kPanelMain); } + // changeScene calls loadScene which calls setVerb. setVerb resets all pending objects and object flags if (sceneNumber == -1 && _vm->getGameType() == GType_IHNM) { // TODO: This is used to return back to the character selection screen in IHNM. // However, it seems more than this is needed, AM's speech is wrong and no actors @@ -583,10 +585,19 @@ void Script::sfScriptGotoScene(SCRIPTFUNC_PARAMS) { _vm->_scene->changeScene(sceneNumber, entrance, (sceneNumber == ITE_SCENE_ENDCREDIT1) ? kTransitionFade : kTransitionNoFade); } - //TODO: placard stuff + if (_vm->_interface->getMode() == kPanelPlacard || + _vm->_interface->getMode() == kPanelCutaway || + _vm->_interface->getMode() == kPanelVideo) { + _vm->_gfx->showCursor(true); + _vm->_interface->setMode(kPanelMain); + } + _pendingVerb = _vm->_script->getVerbType(kVerbNone); _currentObject[0] = _currentObject[1] = ID_NOTHING; - showVerb(); + showVerb(); // calls setStatusText("") + + if (_vm->getGameType() == GType_IHNM) + _vm->_gfx->setCursor(kCursorNormal); } // Script function #17 (0x11) |