diff options
author | Filippos Karapetis | 2007-06-19 01:37:48 +0000 |
---|---|---|
committer | Filippos Karapetis | 2007-06-19 01:37:48 +0000 |
commit | 153f325004c70fd94e3a5fb4e60d9b9f3ef9e5a6 (patch) | |
tree | 0dd13cd8e32a10dca4472e27bc103b8a0b179000 /engines/saga/saveload.cpp | |
parent | f6e2c67cbb4365547851b6805b4900279a5a0aa8 (diff) | |
download | scummvm-rg350-153f325004c70fd94e3a5fb4e60d9b9f3ef9e5a6.tar.gz scummvm-rg350-153f325004c70fd94e3a5fb4e60d9b9f3ef9e5a6.tar.bz2 scummvm-rg350-153f325004c70fd94e3a5fb4e60d9b9f3ef9e5a6.zip |
More updates for the save/load system in IHNM
svn-id: r27540
Diffstat (limited to 'engines/saga/saveload.cpp')
-rw-r--r-- | engines/saga/saveload.cpp | 21 |
1 files changed, 16 insertions, 5 deletions
diff --git a/engines/saga/saveload.cpp b/engines/saga/saveload.cpp index 3facd894bc..804cba9aa7 100644 --- a/engines/saga/saveload.cpp +++ b/engines/saga/saveload.cpp @@ -192,9 +192,9 @@ void SagaEngine::save(const char *fileName, const char *saveName) { // Surrounding scene out->writeSint32LE(_scene->getOutsetSceneNumber()); if (getGameType() != GType_ITE) { - out->writeSint16LE(_scene->currentTrack()); + out->writeSint32LE(_scene->currentChapterNumber()); // Protagonist - out->writeSint16LE(_scene->currentProtag()); + out->writeSint32LE(_scene->currentProtag()); } // Inset scene @@ -266,8 +266,10 @@ void SagaEngine::load(const char *fileName) { sceneNumber = in->readSint32LE(); // Protagonist if (getGameType() != GType_ITE) { - _scene->setTrack(in->readSint16LE()); - _scene->setProtag(in->readSint16LE()); + _scene->setChapterNumber(in->readSint32LE()); + _scene->setProtag(in->readSint32LE()); + if (_scene->currentChapterNumber()) + _scene->changeScene(-2, 0, kTransitionFade, _scene->currentChapterNumber()); } // Inset scene @@ -299,7 +301,16 @@ void SagaEngine::load(const char *fileName) { // Protagonist swapping if (getGameType() != GType_ITE) { - // TODO + if (_scene->currentProtag() != 0 && _scene->currentChapterNumber() != 6) { + ActorData *actor1 = _actor->getFirstActor(); + ActorData *actor2 = _actor->getActor(_scene->currentProtag()); + SWAP(actor1->_location, actor2->_location); + + actor2->_flags &= ~kProtagonist; + actor1->_flags |= kProtagonist; + _actor->_protagonist = _actor->_centerActor = actor1; + _scene->setProtag(actor1->_id); + } } _scene->clearSceneQueue(); |