[Scummvm-cvs-logs] SF.net SVN: scummvm: [26850] scummvm/trunk/engines/agos

kirben at users.sourceforge.net kirben at users.sourceforge.net
Wed May 16 10:27:16 CEST 2007


Revision: 26850
          http://scummvm.svn.sourceforge.net/scummvm/?rev=26850&view=rev
Author:   kirben
Date:     2007-05-16 01:27:15 -0700 (Wed, 16 May 2007)

Log Message:
-----------
Add caption to saved games for Elvira 1/2 and Waxworks.

Modified Paths:
--------------
    scummvm/trunk/engines/agos/agos.h
    scummvm/trunk/engines/agos/saveload.cpp
    scummvm/trunk/engines/agos/script_e1.cpp

Modified: scummvm/trunk/engines/agos/agos.h
===================================================================
--- scummvm/trunk/engines/agos/agos.h	2007-05-16 06:36:43 UTC (rev 26849)
+++ scummvm/trunk/engines/agos/agos.h	2007-05-16 08:27:15 UTC (rev 26850)
@@ -1165,12 +1165,9 @@
 
 	Item *getNextItemPtrStrange();
 
-	bool loadGame_e1(const char *filename, bool restartMode = false);
-	bool saveGame_e1(const char *filename);
+	virtual bool loadGame(const char *filename, bool restartMode = false);
+	virtual bool saveGame(uint slot, const char *caption);
 
-	bool loadGame(const char *filename, bool restartMode = false);
-	bool saveGame(uint slot, const char *caption);
-
 	void openTextWindow();
 	void tidyIconArray(uint i);
 
@@ -1283,6 +1280,9 @@
 	};
 
 	const OpcodeEntryElvira1 *_opcodesElvira1;
+
+	virtual bool loadGame(const char *filename, bool restartMode = false);
+	virtual bool saveGame(uint slot, const char *caption);
 };
 
 class AGOSEngine_Elvira2 : public AGOSEngine_Elvira1 {

Modified: scummvm/trunk/engines/agos/saveload.cpp
===================================================================
--- scummvm/trunk/engines/agos/saveload.cpp	2007-05-16 06:36:43 UTC (rev 26849)
+++ scummvm/trunk/engines/agos/saveload.cpp	2007-05-16 08:27:15 UTC (rev 26850)
@@ -557,7 +557,8 @@
 		f->writeUint32BE(val - 1);
 }
 
-bool AGOSEngine::loadGame_e1(const char *filename, bool restartMode) {
+bool AGOSEngine_Elvira1::loadGame(const char *filename, bool restartMode) {
+	char ident[100];
 	Common::SeekableReadStream *f = NULL;
 	uint num, item_index, i;
 
@@ -577,6 +578,10 @@
 		return false;
 	}
 
+	if (!restartMode) {
+		f->read(ident, 8);
+	}
+
 	num = f->readUint32BE();
 
 	if (f->readUint32BE() != 0xFFFFFFFF || num != _itemArrayInited - 1) {
@@ -649,7 +654,7 @@
 	return true;
 }
 
-bool AGOSEngine::saveGame_e1(const char *filename) {
+bool AGOSEngine_Elvira1::saveGame(uint slot, const char *caption) {
 	Common::OutSaveFile *f;
 	uint item_index, num_item, i;
 	TimeEvent *te;
@@ -658,13 +663,15 @@
 
 	_lockWord |= 0x100;
 
-	f = _saveFileMan->openForSaving(filename);
+	f = _saveFileMan->openForSaving(genSaveName(slot));
 	if (f == NULL) {
-		warning("saveGame: Failed to save %s", filename);
+		warning("saveGame: Failed to save slot %d", slot);
 		_lockWord &= ~0x100;
 		return false;
 	}
 
+	f->write(caption, 8);
+
 	f->writeUint32BE(_itemArrayInited - 1);
 	f->writeUint32BE(0xFFFFFFFF);
 	f->writeUint32BE(0);
@@ -753,6 +760,8 @@
 		f->read(ident, 100);
 	} else if (getGameType() == GType_SIMON1 || getGameType() == GType_SIMON2) {
 		f->read(ident, 18);
+	} else if (!restartMode) {
+		f->read(ident, 8);
 	}
 
 	num = f->readUint32BE();
@@ -894,6 +903,8 @@
 		curTime = time(NULL);
 	} else if (getGameType() == GType_SIMON1 || getGameType() == GType_SIMON2) {
 		f->write(caption, 18);
+	} else {
+		f->write(caption, 8);
 	}
 
 	f->writeUint32BE(_itemArrayInited - 1);

Modified: scummvm/trunk/engines/agos/script_e1.cpp
===================================================================
--- scummvm/trunk/engines/agos/script_e1.cpp	2007-05-16 06:36:43 UTC (rev 26849)
+++ scummvm/trunk/engines/agos/script_e1.cpp	2007-05-16 08:27:15 UTC (rev 26850)
@@ -695,7 +695,9 @@
 	uint16 stringId = getNextStringID();
 
 	debug(0, "oe1_saveGame: stub (%s)", getStringPtrByID(stringId));
-	saveGame_e1((const char *)getStringPtrByID(stringId));
+
+	// TODO: Add support for selecting slot
+	saveGame(1, (const char *)getStringPtrByID(stringId));
 }
 
 void AGOSEngine_Elvira1::oe1_loadGame() {
@@ -704,9 +706,9 @@
 	debug(0, "oe1_loadGame: stub (%s)", (const char *)getStringPtrByID(stringId));
 
 	if (!scumm_stricmp(getFileName(GAME_RESTFILE), (const char *)getStringPtrByID(stringId))) {
-		loadGame_e1(getFileName(GAME_RESTFILE), true);
+		loadGame(getFileName(GAME_RESTFILE), true);
 	} else {
-		loadGame_e1((const char *)getStringPtrByID(stringId));
+		loadGame((const char *)getStringPtrByID(stringId));
 	}
 }
 


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