[Scummvm-cvs-logs] SF.net SVN: scummvm:[43654] scummvm/trunk/engines/gob/save

drmccoy at users.sourceforge.net drmccoy at users.sourceforge.net
Sat Aug 22 17:46:43 CEST 2009


Revision: 43654
          http://scummvm.svn.sourceforge.net/scummvm/?rev=43654&view=rev
Author:   drmccoy
Date:     2009-08-22 15:46:43 +0000 (Sat, 22 Aug 2009)

Log Message:
-----------
Properly fixing the Lost in Time temp sprite issue

Modified Paths:
--------------
    scummvm/trunk/engines/gob/save/savehandler.cpp
    scummvm/trunk/engines/gob/save/savehandler.h
    scummvm/trunk/engines/gob/save/saveload.h
    scummvm/trunk/engines/gob/save/saveload_v3.cpp

Modified: scummvm/trunk/engines/gob/save/savehandler.cpp
===================================================================
--- scummvm/trunk/engines/gob/save/savehandler.cpp	2009-08-22 15:11:50 UTC (rev 43653)
+++ scummvm/trunk/engines/gob/save/savehandler.cpp	2009-08-22 15:46:43 UTC (rev 43654)
@@ -229,6 +229,9 @@
 }
 
 bool TempSpriteHandler::load(int16 dataVar, int32 size, int32 offset) {
+	if (isDummy(size))
+		return true;
+
 	// Sprite available?
 	if (!_sprite)
 		return false;
@@ -274,6 +277,9 @@
 bool TempSpriteHandler::save(int16 dataVar, int32 size, int32 offset) {
 	SurfaceDescPtr sprite;
 
+	if (isDummy(size))
+		return true;
+
 	if (!createSprite(dataVar, size, offset, &sprite))
 		return false;
 
@@ -320,6 +326,12 @@
 	return true;
 }
 
+// A size of 0 means no proper sprite should be saved/loaded,
+// but no error should be thrown either.
+bool TempSpriteHandler::isDummy(int32 size) {
+	return (size == 0);
+}
+
 // A negative size is the flag for using a sprite
 bool TempSpriteHandler::isSprite(int32 size) {
 	return (size < 0);

Modified: scummvm/trunk/engines/gob/save/savehandler.h
===================================================================
--- scummvm/trunk/engines/gob/save/savehandler.h	2009-08-22 15:11:50 UTC (rev 43653)
+++ scummvm/trunk/engines/gob/save/savehandler.h	2009-08-22 15:46:43 UTC (rev 43654)
@@ -144,6 +144,8 @@
 protected:
 	SavePartSprite *_sprite;
 
+	/** Determine whether it's a dummy sprite save/load. */
+	static bool isDummy(int32 size);
 	/** Determine whether using a sprite was requested. */
 	static bool isSprite(int32 size);
 	/** Determine which sprite is meant. */

Modified: scummvm/trunk/engines/gob/save/saveload.h
===================================================================
--- scummvm/trunk/engines/gob/save/saveload.h	2009-08-22 15:11:50 UTC (rev 43653)
+++ scummvm/trunk/engines/gob/save/saveload.h	2009-08-22 15:46:43 UTC (rev 43654)
@@ -256,6 +256,7 @@
 
 	GameHandler *_gameHandler;
 	NotesHandler *_notesHandler;
+	TempSpriteHandler *_tempSpriteHandler;
 	ScreenshotHandler *_screenshotHandler;
 
 	SaveHandler *getHandler(const char *fileName) const;

Modified: scummvm/trunk/engines/gob/save/saveload_v3.cpp
===================================================================
--- scummvm/trunk/engines/gob/save/saveload_v3.cpp	2009-08-22 15:11:50 UTC (rev 43653)
+++ scummvm/trunk/engines/gob/save/saveload_v3.cpp	2009-08-22 15:46:43 UTC (rev 43654)
@@ -33,8 +33,8 @@
 SaveLoad_v3::SaveFile SaveLoad_v3::_saveFiles[] = {
 	{    "cat.inf", kSaveModeSave  , 0, "savegame"},
 	{    "ima.inf", kSaveModeSave  , 0, "screenshot"},
+	{  "intro.$$$", kSaveModeSave  , 0, "temporary sprite"},
 	{   "bloc.inf", kSaveModeSave  , 0, "notes"},
-	{  "intro.$$$", kSaveModeIgnore, 0, "temporary sprite"},
 	{   "prot",     kSaveModeIgnore, 0, 0},
 	{ "config",     kSaveModeIgnore, 0, 0}
 };
@@ -496,17 +496,20 @@
 		_screenshotHandler = new ScreenshotHandler(vm, _gameHandler, sShotType);
 	}
 
+	_tempSpriteHandler = new TempSpriteHandler(vm);
 	_notesHandler = new NotesHandler(2560, vm, targetName);
 
 	_saveFiles[0].handler = _gameHandler;
 	_saveFiles[1].handler = _screenshotHandler;
-	_saveFiles[2].handler = _notesHandler;
+	_saveFiles[2].handler = _tempSpriteHandler;
+	_saveFiles[3].handler = _notesHandler;
 }
 
 SaveLoad_v3::~SaveLoad_v3() {
 	delete _screenshotHandler;
 	delete _gameHandler;
 	delete _notesHandler;
+	delete _tempSpriteHandler;
 }
 
 const SaveLoad_v3::SaveFile *SaveLoad_v3::getSaveFile(const char *fileName) const {


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