aboutsummaryrefslogtreecommitdiff
path: root/engines/pink/detection.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/pink/detection.cpp')
-rw-r--r--engines/pink/detection.cpp20
1 files changed, 19 insertions, 1 deletions
diff --git a/engines/pink/detection.cpp b/engines/pink/detection.cpp
index 619bf5d227..71b353526f 100644
--- a/engines/pink/detection.cpp
+++ b/engines/pink/detection.cpp
@@ -50,7 +50,7 @@ public:
virtual int getMaximumSaveSlot() const { return 99; }
virtual SaveStateList listSaves(const char *target) const;
virtual void removeSaveState(const char *target, int slot) const;
- //virtual SaveStateDescriptor querySaveMetaInfos(const char *target, int slot) const;
+ virtual SaveStateDescriptor querySaveMetaInfos(const char *target, int slot) const;
virtual bool createInstance(OSystem *syst, Engine **engine, const ADGameDescription *desc) const;
};
@@ -58,6 +58,10 @@ bool PinkMetaEngine::hasFeature(MetaEngineFeature f) const {
return
(f == kSupportsListSaves) ||
(f == kSupportsDeleteSave) ||
+ (f == kSavesSupportMetaInfo) ||
+ (f == kSavesSupportThumbnail) ||
+ (f == kSavesSupportCreationDate) ||
+ (f == kSavesSupportPlayTime) ||
(f == kSupportsLoadingDuringStartup) ||
(f == kSimpleSavesNames);
}
@@ -90,6 +94,20 @@ void PinkMetaEngine::removeSaveState(const char *target, int slot) const {
g_system->getSavefileManager()->removeSavefile(Pink::generateSaveName(slot, target));
}
+SaveStateDescriptor PinkMetaEngine::querySaveMetaInfos(const char *target, int slot) const {
+ Common::ScopedPtr<Common::InSaveFile> f(g_system->getSavefileManager()->openForLoading(Pink::generateSaveName(slot, target)));
+
+ if (f) {
+ SaveStateDescriptor desc;
+ if (!Pink::readSaveHeader(*f.get(), desc))
+ return SaveStateDescriptor();
+
+ return desc;
+ }
+
+ return SaveStateDescriptor();
+}
+
bool PinkMetaEngine::createInstance(OSystem *syst, Engine **engine, const ADGameDescription *desc) const {
if (desc)
*engine = new Pink::PinkEngine(syst, desc);