aboutsummaryrefslogtreecommitdiff
path: root/engines/tucker/detection.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/tucker/detection.cpp')
-rw-r--r--engines/tucker/detection.cpp40
1 files changed, 40 insertions, 0 deletions
diff --git a/engines/tucker/detection.cpp b/engines/tucker/detection.cpp
index b3fa353b08..d6742bb342 100644
--- a/engines/tucker/detection.cpp
+++ b/engines/tucker/detection.cpp
@@ -97,12 +97,52 @@ public:
return "Bud Tucker in Double Trouble (C) Merit Studios";
}
+ virtual bool hasFeature(MetaEngineFeature f) const {
+ switch (f) {
+ case kSupportsListSaves:
+ case kSupportsDeleteSave:
+ return true;
+ default:
+ return false;
+ }
+ }
+
virtual bool createInstance(OSystem *syst, Engine **engine, const Common::ADGameDescription *desc) const {
if (desc) {
*engine = new Tucker::TuckerEngine(syst, desc->language, (desc->flags & Common::ADGF_DEMO) != 0);
}
return desc != 0;
}
+
+ virtual SaveStateList listSaves(const char *target) const {
+ Common::String pattern = Tucker::generateGameStateFileName(target, 0, true);
+ Common::StringList filenames = g_system->getSavefileManager()->listSavefiles(pattern.c_str());
+ sort(filenames.begin(), filenames.end());
+ SaveStateList saveList;
+ for (Common::StringList::const_iterator file = filenames.begin(); file != filenames.end(); ++file) {
+ int slot;
+ const char *ext = strrchr(file->c_str(), '.');
+ if (ext && (slot = atoi(ext + 1)) >= 0) {
+ Common::InSaveFile *in = g_system->getSavefileManager()->openForLoading(file->c_str());
+ if (in) {
+ char description[64];
+ snprintf(description, sizeof(description), "savegm.%02d", slot);
+ saveList.push_back(SaveStateDescriptor(slot, description));
+ delete in;
+ }
+ }
+ }
+ return saveList;
+ }
+
+ virtual int getMaximumSaveSlot() const {
+ return 99;
+ }
+
+ virtual void removeSaveState(const char *target, int slot) const {
+ Common::String filename = Tucker::generateGameStateFileName(target, slot);
+ g_system->getSavefileManager()->removeSavefile(filename.c_str());
+ }
};
#if PLUGIN_ENABLED_DYNAMIC(TUCKER)