[Scummvm-cvs-logs] SF.net SVN: scummvm: [29693] scummvm/trunk/engines/lure

dreammaster at users.sourceforge.net dreammaster at users.sourceforge.net
Sun Dec 2 09:32:21 CET 2007


Revision: 29693
          http://scummvm.svn.sourceforge.net/scummvm/?rev=29693&view=rev
Author:   dreammaster
Date:     2007-12-02 00:32:21 -0800 (Sun, 02 Dec 2007)

Log Message:
-----------
Added some more code to the savegame load process to correctly handle previously saved savegames (from version 25)

Modified Paths:
--------------
    scummvm/trunk/engines/lure/lure.cpp
    scummvm/trunk/engines/lure/lure.h
    scummvm/trunk/engines/lure/luredefs.h
    scummvm/trunk/engines/lure/res.cpp
    scummvm/trunk/engines/lure/room.cpp

Modified: scummvm/trunk/engines/lure/lure.cpp
===================================================================
--- scummvm/trunk/engines/lure/lure.cpp	2007-12-02 07:53:25 UTC (rev 29692)
+++ scummvm/trunk/engines/lure/lure.cpp	2007-12-02 08:32:21 UTC (rev 29693)
@@ -195,8 +195,8 @@
 
 	// Check language version
 	uint8 language = f->readByte();
-	uint8 version = f->readByte();
-	if ((language != _language) || (version != LURE_DAT_MINOR)) {
+	_saveVersion = f->readByte();
+	if ((language != _language) || (_saveVersion < LURE_MIN_SAVEGAME_MINOR)) {
 		warning("loadGame: Failed to load slot %d - incorrect version", slotNumber);
 		delete f;
 		return false;
@@ -229,7 +229,7 @@
 		// Check language version
 		uint8 language = f->readByte();
 		uint8 version = f->readByte();
-		if ((language == _language) && (version == LURE_DAT_MINOR)) {
+		if ((language == _language) && (version >= LURE_MIN_SAVEGAME_MINOR)) {
 			// Read in the savegame title
 			char saveName[MAX_DESC_SIZE];
 			char *p = saveName;

Modified: scummvm/trunk/engines/lure/lure.h
===================================================================
--- scummvm/trunk/engines/lure/lure.h	2007-12-02 07:53:25 UTC (rev 29692)
+++ scummvm/trunk/engines/lure/lure.h	2007-12-02 08:32:21 UTC (rev 29693)
@@ -46,6 +46,7 @@
 private:
 	uint32 _features;
 	uint8 _game;
+	uint8 _saveVersion;
 	Common::Language _language;
 	Disk *_disk;
 	Resources *_resources;
@@ -76,6 +77,7 @@
 	bool loadGame(uint8 slotNumber);
 	bool saveGame(uint8 slotNumber, Common::String &caption);
 	Common::String *detectSave(int slotNumber);
+	uint8 saveVersion() { return _saveVersion; }
 };
 
 } // End of namespace Lure

Modified: scummvm/trunk/engines/lure/luredefs.h
===================================================================
--- scummvm/trunk/engines/lure/luredefs.h	2007-12-02 07:53:25 UTC (rev 29692)
+++ scummvm/trunk/engines/lure/luredefs.h	2007-12-02 08:32:21 UTC (rev 29693)
@@ -35,6 +35,7 @@
 #define SUPPORT_FILENAME "lure.dat"
 #define LURE_DAT_MAJOR 1
 #define LURE_DAT_MINOR 26
+#define LURE_MIN_SAVEGAME_MINOR 25 
 
 #define LURE_DEBUG 1
 

Modified: scummvm/trunk/engines/lure/res.cpp
===================================================================
--- scummvm/trunk/engines/lure/res.cpp	2007-12-02 07:53:25 UTC (rev 29692)
+++ scummvm/trunk/engines/lure/res.cpp	2007-12-02 08:32:21 UTC (rev 29693)
@@ -27,6 +27,7 @@
 #include "lure/disk.h"
 #include "lure/scripts.h"
 #include "lure/screen.h"
+#include "lure/lure.h"
 #include "common/endian.h"
 #include "common/events.h"
 
@@ -696,9 +697,15 @@
 }
 
 void Resources::loadFromStream(Common::ReadStream *stream) {
-	debugC(ERROR_DETAILED, kLureDebugScripts, "Loading resource data");
-	_talkingCharacter = stream->readUint16LE();
+	uint8 saveVersion = LureEngine::getReference().saveVersion();
 
+	if (saveVersion >= 26) {
+		debugC(ERROR_DETAILED, kLureDebugScripts, "Loading resource data");
+		_talkingCharacter = stream->readUint16LE();
+	} else {
+		_talkingCharacter = 0;
+	}
+
 	debugC(ERROR_DETAILED, kLureDebugScripts, "Loading hotspot data");
 	_hotspotData.loadFromStream(stream);
 	debugC(ERROR_DETAILED, kLureDebugScripts, "Loading active hotspots");

Modified: scummvm/trunk/engines/lure/room.cpp
===================================================================
--- scummvm/trunk/engines/lure/room.cpp	2007-12-02 07:53:25 UTC (rev 29692)
+++ scummvm/trunk/engines/lure/room.cpp	2007-12-02 08:32:21 UTC (rev 29693)
@@ -25,6 +25,7 @@
 #include "lure/res.h"
 #include "lure/screen.h"
 #include "lure/game.h"
+#include "lure/lure.h"
 #include "lure/events.h"
 #include "lure/strings.h"
 #include "lure/scripts.h"
@@ -739,10 +740,16 @@
 }
 
 void Room::loadFromStream(Common::ReadStream *stream) {
-	if (_talkDialog) 
+	uint8 saveVersion = LureEngine::getReference().saveVersion();
+
+	if (_talkDialog) {
 		delete _talkDialog;
+		_talkDialog = NULL;
+	}
 
-	_talkDialog = TalkDialog::loadFromStream(stream);
+	if (saveVersion >= 26)
+		_talkDialog = TalkDialog::loadFromStream(stream);
+
 	uint16 roomNum = stream->readUint16LE();
 	_roomNumber = 999; // Dummy room number so current room is faded out
 	setRoomNumber(roomNum, false);


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