[Scummvm-cvs-logs] SF.net SVN: scummvm:[46883] scummvm/trunk/engines/sci

m_kiewitz at users.sourceforge.net m_kiewitz at users.sourceforge.net
Sat Jan 2 15:08:26 CET 2010


Revision: 46883
          http://scummvm.svn.sourceforge.net/scummvm/?rev=46883&view=rev
Author:   m_kiewitz
Date:     2010-01-02 14:08:26 +0000 (Sat, 02 Jan 2010)

Log Message:
-----------
SCI: implemented new console command "listsaves"

Modified Paths:
--------------
    scummvm/trunk/engines/sci/console.cpp
    scummvm/trunk/engines/sci/console.h
    scummvm/trunk/engines/sci/engine/kfile.cpp

Modified: scummvm/trunk/engines/sci/console.cpp
===================================================================
--- scummvm/trunk/engines/sci/console.cpp	2010-01-02 13:57:36 UTC (rev 46882)
+++ scummvm/trunk/engines/sci/console.cpp	2010-01-02 14:08:26 UTC (rev 46883)
@@ -109,6 +109,7 @@
 	DCmd_Register("version",			WRAP_METHOD(Console, cmdGetVersion));
 	DCmd_Register("room",				WRAP_METHOD(Console, cmdRoomNumber));
 	DCmd_Register("exit",				WRAP_METHOD(Console, cmdExit));
+	DCmd_Register("listsaves",			WRAP_METHOD(Console, cmdListSaves));
 	// Screen
 	DCmd_Register("sci0_palette",		WRAP_METHOD(Console, cmdSci0Palette));
 	DCmd_Register("clear_screen",		WRAP_METHOD(Console, cmdClearScreen));

Modified: scummvm/trunk/engines/sci/console.h
===================================================================
--- scummvm/trunk/engines/sci/console.h	2010-01-02 13:57:36 UTC (rev 46882)
+++ scummvm/trunk/engines/sci/console.h	2010-01-02 14:08:26 UTC (rev 46883)
@@ -79,6 +79,7 @@
 	bool cmdGetVersion(int argc, const char **argv);
 	bool cmdRoomNumber(int argc, const char **argv);
 	bool cmdExit(int argc, const char **argv);
+	bool cmdListSaves(int argc, const char **argv);
 	// Screen
 	bool cmdSci0Palette(int argc, const char **argv);
 	bool cmdClearScreen(int argc, const char **argv);

Modified: scummvm/trunk/engines/sci/engine/kfile.cpp
===================================================================
--- scummvm/trunk/engines/sci/engine/kfile.cpp	2010-01-02 13:57:36 UTC (rev 46882)
+++ scummvm/trunk/engines/sci/engine/kfile.cpp	2010-01-02 14:08:26 UTC (rev 46883)
@@ -32,6 +32,7 @@
 #include "sci/engine/state.h"
 #include "sci/engine/kernel.h"
 #include "sci/engine/savegame.h"
+#include "sci/console.h"
 
 namespace Sci {
 
@@ -278,6 +279,35 @@
 	qsort(saves.begin(), saves.size(), sizeof(SavegameDesc), _savegame_index_struct_compare);
 }
 
+bool Console::cmdListSaves(int argc, const char **argv) {
+	Common::Array<SavegameDesc> saves;
+	listSavegames(saves);
+
+	Common::SaveFileManager *saveFileMan = g_engine->getSaveFileManager();
+
+	for (uint i = 0; i < saves.size(); i++) {
+		Common::String filename = ((Sci::SciEngine*)g_engine)->getSavegameName(saves[i].id);
+		Common::SeekableReadStream *in;
+		if ((in = saveFileMan->openForLoading(filename))) {
+			SavegameMetadata meta;
+			if (!get_savegame_metadata(in, &meta)) {
+				// invalid
+				delete in;
+				continue;
+			}
+
+			if (!meta.savegame_name.empty()) {
+				if (meta.savegame_name.lastChar() == '\n')
+					meta.savegame_name.deleteLastChar();
+
+				DebugPrintf("%s: '%s'\n", filename.c_str(), meta.savegame_name.c_str());
+			}
+			delete in;
+		}
+	}
+	return true;
+}
+
 reg_t kFGets(EngineState *s, int argc, reg_t *argv) {
 	int maxsize = argv[1].toUint16();
 	char *buf = new char[maxsize];


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