[Scummvm-cvs-logs] SF.net SVN: scummvm: [27512] scummvm/trunk/engines/saga
thebluegr at users.sourceforge.net
thebluegr at users.sourceforge.net
Sun Jun 17 17:45:10 CEST 2007
Revision: 27512
http://scummvm.svn.sourceforge.net/scummvm/?rev=27512&view=rev
Author: thebluegr
Date: 2007-06-17 08:45:09 -0700 (Sun, 17 Jun 2007)
Log Message:
-----------
Some more updates for saving/loading in IHNM
Modified Paths:
--------------
scummvm/trunk/engines/saga/actor.cpp
scummvm/trunk/engines/saga/saveload.cpp
scummvm/trunk/engines/saga/scene.h
scummvm/trunk/engines/saga/sfuncs.cpp
Modified: scummvm/trunk/engines/saga/actor.cpp
===================================================================
--- scummvm/trunk/engines/saga/actor.cpp 2007-06-17 14:50:49 UTC (rev 27511)
+++ scummvm/trunk/engines/saga/actor.cpp 2007-06-17 15:45:09 UTC (rev 27512)
@@ -3119,7 +3119,9 @@
void Actor::loadState(Common::InSaveFile *in) {
int32 i;
- setProtagState(in->readSint16LE());
+ int16 protagState = in->readSint16LE();
+ if (protagState != 0)
+ setProtagState(protagState);
for (i = 0; i < _actorsCount; i++) {
ActorData *a = _actors[i];
Modified: scummvm/trunk/engines/saga/saveload.cpp
===================================================================
--- scummvm/trunk/engines/saga/saveload.cpp 2007-06-17 14:50:49 UTC (rev 27511)
+++ scummvm/trunk/engines/saga/saveload.cpp 2007-06-17 15:45:09 UTC (rev 27512)
@@ -191,6 +191,11 @@
// Surrounding scene
out->writeSint32LE(_scene->getOutsetSceneNumber());
+ if (getGameType() != GType_ITE) {
+ out->writeSint16LE(_scene->currentTrack());
+ // Protagonist
+ out->writeSint16LE(_scene->currentProtag());
+ }
// Inset scene
out->writeSint32LE(_scene->currentSceneNumber());
@@ -259,6 +264,11 @@
// Surrounding scene
sceneNumber = in->readSint32LE();
+ // Protagonist
+ if (getGameType() != GType_ITE) {
+ _scene->setTrack(in->readSint16LE());
+ _scene->setProtag(in->readSint16LE());
+ }
// Inset scene
insetSceneNumber = in->readSint32LE();
@@ -287,6 +297,11 @@
_isoMap->setMapPosition(mapx, mapy);
+ // Protagonist swapping
+ if (getGameType() != GType_ITE) {
+ // TODO
+ }
+
_scene->clearSceneQueue();
_scene->changeScene(sceneNumber, ACTOR_NO_ENTRANCE, kTransitionNoFade);
Modified: scummvm/trunk/engines/saga/scene.h
===================================================================
--- scummvm/trunk/engines/saga/scene.h 2007-06-17 14:50:49 UTC (rev 27511)
+++ scummvm/trunk/engines/saga/scene.h 2007-06-17 15:45:09 UTC (rev 27512)
@@ -310,6 +310,11 @@
#endif
return _sceneLUT[sceneNumber];
}
+ int currentProtag() const { return _currentProtag; }
+ int currentTrack() const { return _currentTrack; }
+ void setProtag(int pr) { _currentProtag = pr; }
+ void setTrack(int tr) { _currentTrack = tr; }
+
int currentSceneNumber() const { return _sceneNumber; }
int currentChapterNumber() const { return _chapterNumber; }
void setChapterNumber(int ch) { _chapterNumber = ch; }
@@ -347,6 +352,8 @@
int _sceneCount;
SceneQueueList _sceneQueue;
bool _sceneLoaded;
+ int _currentProtag;
+ int _currentTrack;
int _sceneNumber;
int _chapterNumber;
int _outsetSceneNumber;
Modified: scummvm/trunk/engines/saga/sfuncs.cpp
===================================================================
--- scummvm/trunk/engines/saga/sfuncs.cpp 2007-06-17 14:50:49 UTC (rev 27511)
+++ scummvm/trunk/engines/saga/sfuncs.cpp 2007-06-17 15:45:09 UTC (rev 27512)
@@ -875,15 +875,17 @@
actor1->_flags &= ~kProtagonist;
actor2->_flags |= kProtagonist;
_vm->_actor->_protagonist = _vm->_actor->_centerActor = actor2;
+ if (_vm->getGameType() == GType_IHNM)
+ _vm->_scene->setProtag(actorId2);
} else if (actor2->_flags & kProtagonist) {
actor2->_flags &= ~kProtagonist;
actor1->_flags |= kProtagonist;
_vm->_actor->_protagonist = _vm->_actor->_centerActor = actor1;
+ if (_vm->getGameType() == GType_IHNM)
+ _vm->_scene->setProtag(actorId1);
}
- // Here non-protagonist ID gets saved in variable
- if (_vm->getGameType() == GType_IHNM)
- warning("sfSwapActors: incomplete implementation");
+ // TODO: where is the protagonist ID used?
}
// Script function #35 (0x23)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
More information about the Scummvm-git-logs
mailing list