ENGINES: Cleanup of get savegame file & patterns

This commit is contained in:
Paul Gilbert 2020-09-19 08:25:58 -07:00
parent 4539159dbe
commit bf754b76aa
4 changed files with 34 additions and 44 deletions

View File

@ -111,7 +111,7 @@ public:
SaveStateList listSaves(const char *target) const override;
int getMaximumSaveSlot() const override;
void removeSaveState(const char *target, int slot) const override;
const char *getSavegameFile(int saveGameIdx, const char *target = nullptr) const override;
Common::String getSavegameFile(int saveGameIdx, const char *target = nullptr) const override;
SaveStateDescriptor querySaveMetaInfos(const char *target, int slot) const override;
};
@ -220,12 +220,8 @@ SaveStateList CineMetaEngine::listSaves(const char *target) const {
int CineMetaEngine::getMaximumSaveSlot() const { return MAX_SAVEGAMES - 1; }
const char *CineMetaEngine::getSavegameFile(int saveGameIdx, const char *target) const {
static char buffer[200];
snprintf(buffer, sizeof(buffer), "%s.%d", target == nullptr ? getEngineId() : target, saveGameIdx);
return buffer;
Common::String CineMetaEngine::getSavegameFile(int saveGameIdx, const char *target) const {
return Common::String::format("%s.%d", target == nullptr ? getEngineId() : target, saveGameIdx);
}
SaveStateDescriptor CineMetaEngine::querySaveMetaInfos(const char *target, int slot) const {
@ -331,7 +327,7 @@ void CineMetaEngine::removeSaveState(const char *target, int slot) const {
delete out;
// Delete save file
const char *saveFileName = getSavegameFile(slot, target);
Common::String saveFileName = getSavegameFile(slot, target);
g_system->getSavefileManager()->removeSavefile(saveFileName);
}

View File

@ -78,25 +78,19 @@ public:
virtual int getAutosaveSlot() const override {
return 4;
}
const char *getSavegameFile(int saveGameIdx, const char *target = nullptr) const override;
const char *getSavegamePattern(const char *target = nullptr) const override;
Common::String getSavegameFile(int saveGameIdx, const char *target = nullptr) const override;
Common::KeymapArray initKeymaps(const char *target) const override;
};
const char *GriffonMetaEngine::getSavegameFile(int saveGameIdx, const char *target) const {
static char buffer[200];
snprintf(buffer, sizeof(buffer), "%s.s%02d", target == nullptr ? getEngineId() : target, saveGameIdx);
return buffer;
}
const char *GriffonMetaEngine::getSavegamePattern(const char *target) const {
static char buffer[200];
snprintf(buffer, sizeof(buffer), "%s.s##", target == nullptr ? getEngineId() : target);
return buffer;
Common::String GriffonMetaEngine::getSavegameFile(int saveGameIdx, const char *target) const {
if (saveGameIdx == kSavegameFilePattern) {
// Pattern requested
return Common::String::format("%s.s##", target == nullptr ? getEngineId() : target);
} else {
// Specific filename requested
return Common::String::format("%s.s%02d", target == nullptr ? getEngineId() : target, saveGameIdx);
}
}
bool Griffon::GriffonEngine::hasFeature(EngineFeature f) const {

View File

@ -37,22 +37,16 @@
#include "graphics/managed_surface.h"
#include "graphics/thumbnail.h"
const char *MetaEngine::getSavegameFile(int saveGameIdx, const char *target) const {
static char buffer[200];
const char *pattern = hasFeature(kSavesUseExtendedFormat) ? "%s.%03d" : "%s.s%02d";
snprintf(buffer, sizeof(buffer), pattern, target == nullptr ? getEngineId() : target, saveGameIdx);
return buffer;
}
const char *MetaEngine::getSavegamePattern(const char *target) const {
static char buffer[200];
const char *pattern = hasFeature(kSavesUseExtendedFormat) ? "%s.###" : "%s.s##";
snprintf(buffer, sizeof(buffer), pattern, target == nullptr ? getEngineId() : target);
return buffer;
Common::String MetaEngine::getSavegameFile(int saveGameIdx, const char *target) const {
if (saveGameIdx == kSavegameFilePattern) {
// Pattern requested
const char *pattern = hasFeature(kSavesUseExtendedFormat) ? "%s.###" : "%s.s##";
return Common::String::format(pattern, target == nullptr ? getEngineId() : target);
} else {
// Specific filename requested
const char *pattern = hasFeature(kSavesUseExtendedFormat) ? "%s.%03d" : "%s.s%02d";
return Common::String::format(pattern, target == nullptr ? getEngineId() : target, saveGameIdx);
}
}
Common::KeymapArray MetaEngine::initKeymaps(const char *target) const {
@ -276,7 +270,7 @@ SaveStateList MetaEngine::listSaves(const char *target) const {
Common::SaveFileManager *saveFileMan = g_system->getSavefileManager();
Common::StringArray filenames;
Common::String pattern(getSavegamePattern(target));
Common::String pattern(getSavegameFilePattern(target));
filenames = saveFileMan->listSavefiles(pattern);

View File

@ -67,6 +67,8 @@ struct ExtraGuiOption {
typedef Common::Array<ExtraGuiOption> ExtraGuiOptions;
enum { kSavegameFilePattern = -99 };
#define EXTENDED_SAVE_VERSION 4
struct ExtendedSavegameHeader {
@ -274,19 +276,23 @@ public:
virtual SaveStateDescriptor querySaveMetaInfos(const char *target, int slot) const;
/**
* Returns name of the save file for given slot and optional target.
* Returns name of the save file for given slot and optional target,
* or a pattern for matching filenames against
*
* @param saveGameIdx index of the save
* @param saveGameIdx index of the save, or kSavegameFilePattern
* for returning a filename pattern
* @param target game target. If omitted, then the engine id is used
*/
virtual const char *getSavegameFile(int saveGameIdx, const char *target = nullptr) const;
virtual Common::String getSavegameFile(int saveGameIdx, const char *target = nullptr) const;
/**
* Returns pattern for save files.
*
* @param target game target. If omitted, then the engine id is used
*/
virtual const char *getSavegamePattern(const char *target = nullptr) const;
Common::String getSavegameFilePattern(const char *target = nullptr) const {
return getSavegameFile(kSavegameFilePattern, target);
}
/**
* Return the keymap used by the target.