aboutsummaryrefslogtreecommitdiff
path: root/engines/saga/saveload.cpp
diff options
context:
space:
mode:
authorFilippos Karapetis2007-06-19 01:37:48 +0000
committerFilippos Karapetis2007-06-19 01:37:48 +0000
commit153f325004c70fd94e3a5fb4e60d9b9f3ef9e5a6 (patch)
tree0dd13cd8e32a10dca4472e27bc103b8a0b179000 /engines/saga/saveload.cpp
parentf6e2c67cbb4365547851b6805b4900279a5a0aa8 (diff)
downloadscummvm-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.cpp21
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();