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

fingolfin at users.sourceforge.net fingolfin at users.sourceforge.net
Thu Nov 6 16:41:38 CET 2008


Revision: 34913
          http://scummvm.svn.sourceforge.net/scummvm/?rev=34913&view=rev
Author:   fingolfin
Date:     2008-11-06 15:41:38 +0000 (Thu, 06 Nov 2008)

Log Message:
-----------
Implemented GMM loading (and, once the GMM supports it, saving) for SCUMM

Modified Paths:
--------------
    scummvm/trunk/engines/dialogs.cpp
    scummvm/trunk/engines/dialogs.h
    scummvm/trunk/engines/engine.cpp
    scummvm/trunk/engines/engine.h
    scummvm/trunk/engines/queen/queen.cpp
    scummvm/trunk/engines/queen/queen.h
    scummvm/trunk/engines/scumm/detection.cpp
    scummvm/trunk/engines/scumm/saveload.cpp
    scummvm/trunk/engines/scumm/scumm.h
    scummvm/trunk/engines/touche/saveload.cpp
    scummvm/trunk/engines/touche/touche.h

Modified: scummvm/trunk/engines/dialogs.cpp
===================================================================
--- scummvm/trunk/engines/dialogs.cpp	2008-11-06 15:02:50 UTC (rev 34912)
+++ scummvm/trunk/engines/dialogs.cpp	2008-11-06 15:41:38 UTC (rev 34913)
@@ -59,7 +59,7 @@
 typedef GUI::OptionsDialog GUI_OptionsDialog;
 typedef GUI::Dialog GUI_Dialog;
 
-GlobalDialog::GlobalDialog(String name) : GUI::Dialog(name) {}
+GlobalDialog::GlobalDialog(Common::String name) : GUI::Dialog(name) {}
 
 enum {
 	kSaveCmd = 'SAVE',
@@ -134,7 +134,7 @@
 		break;
 	case kLoadCmd:
 		{
-		String gameId = ConfMan.get("gameid");
+		Common::String gameId = ConfMan.get("gameid");
 
 		const EnginePlugin *plugin = 0;
 		EngineMan.findGame(gameId, &plugin);
@@ -154,15 +154,16 @@
 		break;
 	case kSaveCmd:
 		/*
-		String gameId = ConfMan.get("gameid");
+		Common::String gameId = ConfMan.get("gameid");
 
 		const EnginePlugin *plugin = 0;
 		EngineMan.findGame(gameId, &plugin);
 
 		int slot = _saveDialog->runModal(plugin, ConfMan.getActiveDomainName());
+		Common::String desc = ... get desired description from _saveDialog ...
 
 		if (slot >= 0) {
-			_engine->saveGameState(slot);
+			_engine->saveGameState(slot, desc.c_str());
 			close();
 		}
 

Modified: scummvm/trunk/engines/dialogs.h
===================================================================
--- scummvm/trunk/engines/dialogs.h	2008-11-06 15:02:50 UTC (rev 34912)
+++ scummvm/trunk/engines/dialogs.h	2008-11-06 15:41:38 UTC (rev 34913)
@@ -37,9 +37,6 @@
 class GlobalDialog : public GUI::Dialog {
 public:
 	GlobalDialog(Common::String name);
-
-protected:
-	typedef Common::String String;
 };
 
 

Modified: scummvm/trunk/engines/engine.cpp
===================================================================
--- scummvm/trunk/engines/engine.cpp	2008-11-06 15:02:50 UTC (rev 34912)
+++ scummvm/trunk/engines/engine.cpp	2008-11-06 15:41:38 UTC (rev 34913)
@@ -265,7 +265,7 @@
 	return false;
 }
 
-int Engine::saveGameState(int slot) {
+int Engine::saveGameState(int slot, const char *desc) {
 	// Do nothing by default
 	return 0;
 }

Modified: scummvm/trunk/engines/engine.h
===================================================================
--- scummvm/trunk/engines/engine.h	2008-11-06 15:02:50 UTC (rev 34912)
+++ scummvm/trunk/engines/engine.h	2008-11-06 15:41:38 UTC (rev 34913)
@@ -167,7 +167,9 @@
 
 	/** 
 	 * Load a game state.
+	 * @param slot	the slot from which a savestate should be loaded
 	 * @return returns 0 on success, anything else indicates failure
+	 *
 	 * @todo define proper error values
 	 */
 	virtual int loadGameState(int slot);
@@ -179,12 +181,13 @@
 
 	/**
 	 * Save a game state.
+	 * @param slot	the slot into which the savestate should be stored
+	 * @param desc	a description for the savestate, entered by the user
 	 * @return returns 0 on success, anything else indicates failure
 	 *
 	 * @todo define proper error values
-	 * @todo actually we need to pass the user entered name to the engine
 	 */
-	virtual int saveGameState(int slot);
+	virtual int saveGameState(int slot, const char *desc);
 
 	/**
 	 * Indicates whether a game state can be saved.

Modified: scummvm/trunk/engines/queen/queen.cpp
===================================================================
--- scummvm/trunk/engines/queen/queen.cpp	2008-11-06 15:02:50 UTC (rev 34912)
+++ scummvm/trunk/engines/queen/queen.cpp	2008-11-06 15:41:38 UTC (rev 34913)
@@ -312,7 +312,7 @@
 	return !_input->cutawayRunning() && !(_resource->isDemo() || _resource->isInterview());
 }
 
-void QueenEngine::saveGameState(int slot, const char *desc) {
+int QueenEngine::saveGameState(int slot, const char *desc) {
 	debug(3, "Saving game to slot %d", slot);
 	char name[20];
 	makeGameStateName(slot, name);
@@ -351,6 +351,8 @@
 	} else {
 		warning("Can't create file '%s', game not saved", name);
 	}
+	
+	return 0;
 }
 
 int QueenEngine::loadGameState(int slot) {

Modified: scummvm/trunk/engines/queen/queen.h
===================================================================
--- scummvm/trunk/engines/queen/queen.h	2008-11-06 15:02:50 UTC (rev 34912)
+++ scummvm/trunk/engines/queen/queen.h	2008-11-06 15:41:38 UTC (rev 34913)
@@ -106,7 +106,7 @@
 	void update(bool checkPlayerInput = false);
 
 	bool canLoadOrSave() const;
-	void saveGameState(int slot, const char *desc);
+	int saveGameState(int slot, const char *desc);
 	int loadGameState(int slot);
 	void makeGameStateName(int slot, char *buf) const;
 	int getGameStateSlot(const char *filename) const;

Modified: scummvm/trunk/engines/scumm/detection.cpp
===================================================================
--- scummvm/trunk/engines/scumm/detection.cpp	2008-11-06 15:02:50 UTC (rev 34912)
+++ scummvm/trunk/engines/scumm/detection.cpp	2008-11-06 15:41:38 UTC (rev 34913)
@@ -701,7 +701,10 @@
 }
 
 bool ScummEngine::hasFeature(EngineFeature f) const {
-	return	(f == kSupportsRTL);
+	return
+		(f == kSupportsRTL) ||
+		(f == kSupportsLoadingDuringRuntime) ||
+		(f == kSupportsSavingDuringRuntime);
 }
 
 GameList ScummMetaEngine::getSupportedGames() const {

Modified: scummvm/trunk/engines/scumm/saveload.cpp
===================================================================
--- scummvm/trunk/engines/scumm/saveload.cpp	2008-11-06 15:02:50 UTC (rev 34912)
+++ scummvm/trunk/engines/scumm/saveload.cpp	2008-11-06 15:41:38 UTC (rev 34913)
@@ -75,9 +75,31 @@
 
 #pragma mark -
 
-void ScummEngine::requestSave(int slot, const char *name, bool temporary) {
+int ScummEngine::loadGameState(int slot) {
+	requestLoad(slot);
+	return 0;
+}
+
+bool ScummEngine::canLoadGameStateCurrently() {
+	// FIXME: For now always allow loading
+	return true;
+}
+
+int ScummEngine::saveGameState(int slot, const char *desc) {
+	requestSave(slot, desc);
+	return 0;
+}
+
+bool ScummEngine::canSaveGameStateCurrently() {
+	// FIXME: For now always allow saving
+	return true;
+	return 0;
+}
+
+
+void ScummEngine::requestSave(int slot, const char *name) {
 	_saveLoadSlot = slot;
-	_saveTemporaryState = temporary;
+	_saveTemporaryState = false;
 	_saveLoadFlag = 1;		// 1 for save
 	assert(name);
 	strncpy(_saveLoadName, name, sizeof(_saveLoadName));

Modified: scummvm/trunk/engines/scumm/scumm.h
===================================================================
--- scummvm/trunk/engines/scumm/scumm.h	2008-11-06 15:02:50 UTC (rev 34912)
+++ scummvm/trunk/engines/scumm/scumm.h	2008-11-06 15:41:38 UTC (rev 34913)
@@ -449,6 +449,12 @@
 	virtual GUI::Debugger *getDebugger();
 	virtual bool hasFeature(EngineFeature f) const;
 	virtual void syncSoundSettings();
+
+	virtual int loadGameState(int slot);
+	virtual bool canLoadGameStateCurrently();
+	virtual int saveGameState(int slot, const char *desc);
+	virtual bool canSaveGameStateCurrently();
+
 	virtual void pauseEngineIntern(bool pause);
 
 protected:
@@ -628,7 +634,7 @@
 	bool getSavegameName(int slot, Common::String &desc);
 	void listSavegames(bool *marks, int num);
 
-	void requestSave(int slot, const char *name, bool temporary = false);
+	void requestSave(int slot, const char *name);
 	void requestLoad(int slot);
 
 // thumbnail + info stuff

Modified: scummvm/trunk/engines/touche/saveload.cpp
===================================================================
--- scummvm/trunk/engines/touche/saveload.cpp	2008-11-06 15:02:50 UTC (rev 34912)
+++ scummvm/trunk/engines/touche/saveload.cpp	2008-11-06 15:41:38 UTC (rev 34913)
@@ -316,7 +316,7 @@
 	debug(0, "Loaded state, current episode %d", _currentEpisodeNum);
 }
 
-bool ToucheEngine::saveGameState(int num, const char *description) {
+int ToucheEngine::saveGameState(int num, const char *description) {
 	bool saveOk = false;
 	char gameStateFileName[64];
 	generateGameStateFileName(num, gameStateFileName, 63);

Modified: scummvm/trunk/engines/touche/touche.h
===================================================================
--- scummvm/trunk/engines/touche/touche.h	2008-11-06 15:02:50 UTC (rev 34912)
+++ scummvm/trunk/engines/touche/touche.h	2008-11-06 15:41:38 UTC (rev 34913)
@@ -497,7 +497,7 @@
 
 	void saveGameStateData(Common::WriteStream *stream);
 	void loadGameStateData(Common::ReadStream *stream);
-	bool saveGameState(int num, const char *description);
+	int saveGameState(int num, const char *description);
 	int loadGameState(int num);
 	void readGameStateDescription(int num, char *description, int len);
 	void generateGameStateFileName(int num, char *dst, int len, bool prefixOnly = false) 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