From 40e05acff329563df6432ad998f99074acb43486 Mon Sep 17 00:00:00 2001 From: Max Horn Date: Mon, 1 Sep 2008 21:13:11 +0000 Subject: TINSEL: Enabled listSaves support svn-id: r34263 --- engines/tinsel/detection.cpp | 30 ++++++++++++++++++++++++++++++ engines/tinsel/saveload.cpp | 22 +++++++++++++--------- engines/tinsel/tinsel.cpp | 4 ---- engines/tinsel/tinsel.h | 1 - 4 files changed, 43 insertions(+), 14 deletions(-) (limited to 'engines') diff --git a/engines/tinsel/detection.cpp b/engines/tinsel/detection.cpp index f4fe876290..bf59aae19b 100644 --- a/engines/tinsel/detection.cpp +++ b/engines/tinsel/detection.cpp @@ -29,6 +29,7 @@ #include "common/file.h" #include "tinsel/tinsel.h" +#include "tinsel/savescn.h" // needed by TinselMetaEngine::listSaves namespace Tinsel { @@ -309,13 +310,42 @@ public: } virtual const char *getCopyright() const { + // FIXME: Bad copyright string. + // Should be something like "Tinsel (C) Psygnosis" or so... ??? return "Tinsel Engine"; } virtual bool createInstance(OSystem *syst, Engine **engine, const Common::ADGameDescription *desc) const; + virtual bool hasFeature(MetaEngineFeature f) const; + virtual SaveStateList listSaves(const char *target) const; }; +bool TinselMetaEngine::hasFeature(MetaEngineFeature f) const { + return + (f == kSupportsListSaves); +} + +namespace Tinsel { +extern int getList(Common::SaveFileManager *saveFileMan, const Common::String &target); +} + +SaveStateList TinselMetaEngine::listSaves(const char *target) const { + int numStates = Tinsel::getList(g_system->getSavefileManager(), target); + + SaveStateList saveList; + for (int i = 0; i < numStates; i++) { + SaveStateDescriptor sd(i, + Tinsel::ListEntry(i, Tinsel::LE_DESC), + Tinsel::ListEntry(i, Tinsel::LE_NAME)); + // TODO: Also add savedFiles[i].dateTime to the SaveStateDescriptor + saveList.push_back(sd); + } + + return saveList; +} + + bool TinselMetaEngine::createInstance(OSystem *syst, Engine **engine, const Common::ADGameDescription *desc) const { const Tinsel::TinselGameDescription *gd = (const Tinsel::TinselGameDescription *)desc; if (gd) { diff --git a/engines/tinsel/saveload.cpp b/engines/tinsel/saveload.cpp index 1a6cc1202a..acdaf6c0bb 100644 --- a/engines/tinsel/saveload.cpp +++ b/engines/tinsel/saveload.cpp @@ -246,16 +246,11 @@ static char *NewName(void) { * Store the file details, ordered by time, in savedFiles[] and return * the number of files found). */ -int getList(void) { - // No change since last call? - // TODO/FIXME: Just always reload this data? Be careful about slow downs!!! - if (!NeedLoad) - return numSfiles; - +int getList(Common::SaveFileManager *saveFileMan, const Common::String &target) { int i; - const Common::String pattern = _vm->getSavegamePattern(); - Common::StringList files = _vm->getSaveFileMan()->listSavefiles(pattern.c_str()); + const Common::String pattern = target + ".???"; + Common::StringList files = saveFileMan->listSavefiles(pattern.c_str()); numSfiles = 0; @@ -264,7 +259,7 @@ int getList(void) { break; const Common::String &fname = *file; - Common::InSaveFile *f = _vm->getSaveFileMan()->openForLoading(fname.c_str()); + Common::InSaveFile *f = saveFileMan->openForLoading(fname.c_str()); if (f == NULL) { continue; } @@ -304,6 +299,15 @@ int getList(void) { return numSfiles; } +int getList(void) { + // No change since last call? + // TODO/FIXME: Just always reload this data? Be careful about slow downs!!! + if (!NeedLoad) + return numSfiles; + + return getList(_vm->getSaveFileMan(), _vm->getTargetName()); +} + char *ListEntry(int i, letype which) { if (i == -1) diff --git a/engines/tinsel/tinsel.cpp b/engines/tinsel/tinsel.cpp index 70dd0170b4..092fae4be4 100644 --- a/engines/tinsel/tinsel.cpp +++ b/engines/tinsel/tinsel.cpp @@ -710,10 +710,6 @@ int TinselEngine::init() { return 0; } -Common::String TinselEngine::getSavegamePattern() const { - return _targetName + ".???"; -} - Common::String TinselEngine::getSavegameFilename(int16 saveNum) const { char filename[256]; snprintf(filename, 256, "%s.%03d", getTargetName().c_str(), saveNum); diff --git a/engines/tinsel/tinsel.h b/engines/tinsel/tinsel.h index 369fd64a9b..9820be7ddd 100644 --- a/engines/tinsel/tinsel.h +++ b/engines/tinsel/tinsel.h @@ -127,7 +127,6 @@ private: public: const Common::String getTargetName() const { return _targetName; } - Common::String getSavegamePattern() const; Common::String getSavegameFilename(int16 saveNum) const; Common::SaveFileManager *getSaveFileMan() { return _saveFileMan; } Graphics::Surface &screen() { return _screenSurface; } -- cgit v1.2.3