diff options
Diffstat (limited to 'engines/saga/scene.cpp')
-rw-r--r-- | engines/saga/scene.cpp | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/engines/saga/scene.cpp b/engines/saga/scene.cpp index 9b7e7fb331..84d1b45114 100644 --- a/engines/saga/scene.cpp +++ b/engines/saga/scene.cpp @@ -477,6 +477,7 @@ void Scene::changeScene(int16 sceneNumber, int actorsEntrance, SceneTransitionTy if (sceneNumber != -2) { endScene(); } + loadScene(&sceneParams); } @@ -567,6 +568,8 @@ void Scene::loadScene(LoadSceneParams *loadSceneParams) { event.time = 0; _vm->_events->queue(&event); + _chapterPointsChanged = false; + if ((_vm->getGameType() == GType_IHNM) && (loadSceneParams->chapter != NO_CHAPTER_CHANGE)) { if (loadSceneParams->loadFlag != kLoadBySceneNumber) { error("loadScene wrong usage"); @@ -1209,6 +1212,26 @@ void Scene::endScene() { } +void Scene::restoreScene() { + // There is no implementation for tiled scenes, since this function is only used + // in IHNM, which has no tiled scenes + + Event event; + + _vm->_gfx->showCursor(false); + _vm->_gfx->restorePalette(); + + event.type = kEvTImmediate; + event.code = kBgEvent; + event.op = kEventDisplay; + event.param = kEvPNoSetPalette; + event.time = 0; + event.duration = 0; + _vm->_events->queue(&event); + + _vm->_gfx->showCursor(true); +} + void Scene::cmdSceneChange(int argc, const char **argv) { int scene_num = 0; |