[Scummvm-cvs-logs] scummvm master -> c76502fe1174d5e75e4ba5b2575000c0cb6305d8

bluegr md5 at scummvm.org
Wed Apr 27 22:54:01 CEST 2011


This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
c76502fe11 TSAGE: Added temporary fix for some saved games (e.g. scenes 4050 and 5000)


Commit: c76502fe1174d5e75e4ba5b2575000c0cb6305d8
    https://github.com/scummvm/scummvm/commit/c76502fe1174d5e75e4ba5b2575000c0cb6305d8
Author: md5 (md5 at scummvm.org)
Date: 2011-04-27T13:52:20-07:00

Commit Message:
TSAGE: Added temporary fix for some saved games (e.g. scenes 4050 and 5000)

Changed paths:
    engines/tsage/globals.cpp
    engines/tsage/saveload.cpp



diff --git a/engines/tsage/globals.cpp b/engines/tsage/globals.cpp
index 00444f3..81a5071 100644
--- a/engines/tsage/globals.cpp
+++ b/engines/tsage/globals.cpp
@@ -43,6 +43,12 @@ static SavedObject *classFactoryProc(const Common::String &className) {
 	if (className == "ObjectMover2") return new ObjectMover2();
 	if (className == "ObjectMover3") return new ObjectMover3();
 	if (className == "PlayerMover") return new PlayerMover();
+	// The following is needed, as saved games can contain SceneObjectWrapper
+	// objects (e.g. scene 4050 and 5000).
+	// FIXME: Since SceneObjectWrapper objects are contained within other
+	// objects, I'm not quite sure if this is the best solution (however, saved
+	// games do work with this). If this is correct, please remove this FIXME.
+	if (className == "SceneObjectWrapper") return new SceneObjectWrapper();
 
 	return NULL;
 }
diff --git a/engines/tsage/saveload.cpp b/engines/tsage/saveload.cpp
index 8b07767..b1c66f9 100644
--- a/engines/tsage/saveload.cpp
+++ b/engines/tsage/saveload.cpp
@@ -177,6 +177,13 @@ Common::Error Saver::restore(int slot) {
 
 	// Loop through each registered object to load in the data
 	for (SynchronisedList<SavedObject *>::iterator i = _objList.begin(); i != _objList.end(); ++i) {
+		// Saved games can contain PlayerMover objects, but these aren't synchronized.
+		// Fixes loading in scene 5000.
+		// TODO/FIXME: Add a more proper handling for these objects
+		if ((*i)->getClassName() == "PlayerMover") {
+			warning("HACK: PlayerMover object found, skipping synchronization");
+			continue;
+		}
 		serialiser.validate((*i)->getClassName());
 		(*i)->synchronise(serialiser);
 	}






More information about the Scummvm-git-logs mailing list