[Scummvm-cvs-logs] SF.net SVN: scummvm: [27540] scummvm/trunk/engines/saga

thebluegr at users.sourceforge.net thebluegr at users.sourceforge.net
Tue Jun 19 03:37:49 CEST 2007


Revision: 27540
          http://scummvm.svn.sourceforge.net/scummvm/?rev=27540&view=rev
Author:   thebluegr
Date:     2007-06-18 18:37:48 -0700 (Mon, 18 Jun 2007)

Log Message:
-----------
More updates for the save/load system in IHNM

Modified Paths:
--------------
    scummvm/trunk/engines/saga/actor.h
    scummvm/trunk/engines/saga/saveload.cpp
    scummvm/trunk/engines/saga/scene.h

Modified: scummvm/trunk/engines/saga/actor.h
===================================================================
--- scummvm/trunk/engines/saga/actor.h	2007-06-18 20:11:49 UTC (rev 27539)
+++ scummvm/trunk/engines/saga/actor.h	2007-06-19 01:37:48 UTC (rev 27540)
@@ -535,6 +535,7 @@
 	int actorIdToIndex(uint16 id) { return (id == ID_PROTAG ) ? 0 : objectIdToIndex(id); }
 	uint16 actorIndexToId(int index) { return (index == 0 ) ? ID_PROTAG : objectIndexToId(kGameObjectActor, index); }
 	ActorData *getActor(uint16 actorId);
+	ActorData *getFirstActor() { return _actors[0]; }
 
 // clarification: Obj - means game object, such Hat, Spoon etc,  Object - means Actor,Obj,HitZone,StepZone
 

Modified: scummvm/trunk/engines/saga/saveload.cpp
===================================================================
--- scummvm/trunk/engines/saga/saveload.cpp	2007-06-18 20:11:49 UTC (rev 27539)
+++ scummvm/trunk/engines/saga/saveload.cpp	2007-06-19 01:37:48 UTC (rev 27540)
@@ -192,9 +192,9 @@
 	// 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 @@
 	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 @@
 
 	// 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();

Modified: scummvm/trunk/engines/saga/scene.h
===================================================================
--- scummvm/trunk/engines/saga/scene.h	2007-06-18 20:11:49 UTC (rev 27539)
+++ scummvm/trunk/engines/saga/scene.h	2007-06-19 01:37:48 UTC (rev 27540)
@@ -310,11 +310,8 @@
 	#endif
 		return _sceneLUT[sceneNumber];
 	}
-	int16 currentProtag() const { return _currentProtag; }
-	int16 currentTrack() const { return _currentTrack; }
-	void setProtag(int16 pr) { _currentProtag = pr; }
-	void setTrack(int16 tr) { _currentTrack = tr; }
-
+	int currentProtag() const { return _currentProtag; }
+	void setProtag(int pr) { _currentProtag = pr; }
 	int currentSceneNumber() const { return _sceneNumber; }
 	int currentChapterNumber() const { return _chapterNumber; }
 	void setChapterNumber(int ch) { _chapterNumber = ch; }
@@ -352,8 +349,7 @@
 	int _sceneCount;
 	SceneQueueList _sceneQueue;
 	bool _sceneLoaded;
-	int16 _currentProtag;
-	int16 _currentTrack;
+	int _currentProtag;
 	int _sceneNumber;
 	int _chapterNumber;
 	int _outsetSceneNumber;


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