diff options
author | Paul Gilbert | 2011-05-03 20:13:53 +1000 |
---|---|---|
committer | Paul Gilbert | 2011-05-03 20:14:20 +1000 |
commit | 4f70162d94bf4a7a18e0b42e48bbdabf39cb84f8 (patch) | |
tree | 8bbf02ef1ee8f935faada506db2ecdcd826c6087 | |
parent | b737dcbad5ae0fde2780f44c351fd342aa91d88b (diff) | |
download | scummvm-rg350-4f70162d94bf4a7a18e0b42e48bbdabf39cb84f8.tar.gz scummvm-rg350-4f70162d94bf4a7a18e0b42e48bbdabf39cb84f8.tar.bz2 scummvm-rg350-4f70162d94bf4a7a18e0b42e48bbdabf39cb84f8.zip |
TSAGE: Bugfixes to savegames when the scene is showing an alternate screen
-rw-r--r-- | engines/tsage/converse.cpp | 2 | ||||
-rw-r--r-- | engines/tsage/core.cpp | 2 | ||||
-rw-r--r-- | engines/tsage/scenes.cpp | 15 |
3 files changed, 13 insertions, 6 deletions
diff --git a/engines/tsage/converse.cpp b/engines/tsage/converse.cpp index c4358dc4b2..82420b2bd8 100644 --- a/engines/tsage/converse.cpp +++ b/engines/tsage/converse.cpp @@ -53,6 +53,8 @@ void SequenceManager::setup() { } void SequenceManager::synchronise(Serialiser &s) { + Action::synchronise(s); + s.syncAsSint32LE(_resNum); s.syncAsSint32LE(_sequenceOffset); s.syncAsByte(_keepActive); diff --git a/engines/tsage/core.cpp b/engines/tsage/core.cpp index f03f10ffd2..51f472a4f7 100644 --- a/engines/tsage/core.cpp +++ b/engines/tsage/core.cpp @@ -110,8 +110,6 @@ Action::Action() { void Action::synchronise(Serialiser &s) { EventHandler::synchronise(s); - if (s.isLoading()) - remove(); SYNC_POINTER(_owner); s.syncAsSint32LE(_actionIndex); diff --git a/engines/tsage/scenes.cpp b/engines/tsage/scenes.cpp index 9a99049c19..a59c86c97d 100644 --- a/engines/tsage/scenes.cpp +++ b/engines/tsage/scenes.cpp @@ -62,9 +62,13 @@ void SceneManager::checkScene() { } void SceneManager::sceneChange() { + int activeScreenNumber = 0; + // Handle removing the scene - if (_scene) + if (_scene) { + activeScreenNumber = _scene->_activeScreenNumber; _scene->remove(); + } // Clear the scene objects SynchronisedList<SceneObject *>::iterator io = _globals->_sceneObjects->begin(); @@ -122,7 +126,7 @@ void SceneManager::sceneChange() { if (!_saver->getMacroRestoreFlag()) _scene->postInit(); else - _scene->loadScene(_sceneNumber); + _scene->loadScene(activeScreenNumber); } Scene *SceneManager::getNewScene() { @@ -225,15 +229,16 @@ void SceneManager::setBgOffset(const Common::Point &pt, int loadCount) { void SceneManager::listenerSynchronise(Serialiser &s) { s.validate("SceneManager"); - _altSceneObjects.synchronise(s); + _altSceneObjects.synchronise(s); s.syncAsSint32LE(_sceneNumber); + s.syncAsUint16LE(_globals->_sceneManager._scene->_activeScreenNumber); + if (s.isLoading()) { changeScene(_sceneNumber); checkScene(); } - s.syncAsUint16LE(_globals->_sceneManager._scene->_activeScreenNumber); _globals->_sceneManager._scrollerRect.synchronise(s); SYNC_POINTER(_globals->_scrollFollower); s.syncAsSint16LE(_loadMode); @@ -252,6 +257,8 @@ Scene::~Scene() { } void Scene::synchronise(Serialiser &s) { + StripCallback::synchronise(s); + s.syncAsSint32LE(_field12); s.syncAsSint32LE(_screenNumber); s.syncAsSint32LE(_activeScreenNumber); |