[Scummvm-cvs-logs] SF.net SVN: scummvm: [22328] scummvm/trunk/engines/simon/saveload.cpp

kirben at users.sourceforge.net kirben at users.sourceforge.net
Wed May 3 22:08:04 CEST 2006


Revision: 22328
Author:   kirben
Date:     2006-05-03 22:07:21 -0700 (Wed, 03 May 2006)
ViewCVS:  http://svn.sourceforge.net/scummvm/?rev=22328&view=rev

Log Message:
-----------
Fix loading of default saved game file, containing restate state, in FF

Modified Paths:
--------------
    scummvm/trunk/engines/simon/saveload.cpp
Modified: scummvm/trunk/engines/simon/saveload.cpp
===================================================================
--- scummvm/trunk/engines/simon/saveload.cpp	2006-05-04 04:46:42 UTC (rev 22327)
+++ scummvm/trunk/engines/simon/saveload.cpp	2006-05-04 05:07:21 UTC (rev 22328)
@@ -98,6 +98,27 @@
 	return slot - curpos;
 }
 
+char *SimonEngine::genSaveName(int slot) {
+	static char buf[15];
+
+	if (getGameType() == GType_FF) {
+		if (slot == 999) {
+			// Restart state
+			if (getPlatform() == Common::kPlatformWindows)
+				sprintf(buf, "save.%.3d", slot);
+			else
+				sprintf(buf, "setup");
+		} else {
+			sprintf(buf, "feeble.%.3d", slot);
+		}
+	} else if (getGameType() == GType_SIMON2) {
+		sprintf(buf, "simon2.%.3d", slot);
+	} else {
+		sprintf(buf, "simon1.%.3d", slot);
+	}
+	return buf;
+}
+
 void SimonEngine::quickLoadOrSave() {
 	// The demo of Simon 1 (DOS Floppy) is missing too many segments
 	// and the Feeble Files doesn't always allow a load or save
@@ -478,7 +499,7 @@
 }
 
 bool SimonEngine::saveGame(uint slot, char *caption) {
-	Common::OutSaveFile *f;
+	Common::WriteStream *f;
 	uint item_index, num_item, i, j;
 	TimeEvent *te;
 	uint32 curTime = 0;
@@ -488,6 +509,7 @@
 
 	f = _saveFileMan->openForSaving(genSaveName(slot));
 	if (f == NULL) {
+		warning("saveGame: Failed to save slot %d", slot);
 		_lockWord &= ~0x100;
 		return false;
 	}
@@ -583,36 +605,28 @@
 	return result;
 }
 
-char *SimonEngine::genSaveName(int slot) {
-	static char buf[15];
+bool SimonEngine::loadGame(uint slot) {
+	char ident[100];
+	Common::SeekableReadStream *f = NULL;
+	uint num, item_index, i, j;
 
-	if (getGameType() == GType_FF) {
-		// Restart
-		if (slot == 999) {
-			if (getPlatform() == Common::kPlatformWindows)
-				sprintf(buf, "save.%.3d", slot);
-			else
-				sprintf(buf, "setup");
+	_lockWord |= 0x100;
+
+	if (getGameType() == GType_FF && slot == 999) {
+		// Load restart state
+		Common::File *file = new Common::File();
+		file->open(genSaveName(slot), Common::File::kFileReadMode);
+		if (!file->isOpen()) {
+			delete file;
 		} else {
-			sprintf(buf, "feeble.%.3d", slot);
+			f = file;
 		}
-	} else if (getGameType() == GType_SIMON2) {
-		sprintf(buf, "simon2.%.3d", slot);
 	} else {
-		sprintf(buf, "simon1.%.3d", slot);
+		f = _saveFileMan->openForLoading(genSaveName(slot));
 	}
-	return buf;
-}
 
-bool SimonEngine::loadGame(uint slot) {
-	char ident[100];
-	Common::InSaveFile *f;
-	uint num, item_index, i, j;
-
-	_lockWord |= 0x100;
-
-	f = _saveFileMan->openForLoading(genSaveName(slot));
 	if (f == NULL) {
+		warning("loadGame: Failed to load slot %d", slot);
 		_lockWord &= ~0x100;
 		return 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