[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