[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