[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