[Scummvm-git-logs] scummvm master -> bf754b76aad6072c546627dca0b2aff8b8de3012
dreammaster
paulfgilbert at gmail.com
Sat Sep 19 16:32:00 UTC 2020
This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
bf754b76aa ENGINES: Cleanup of get savegame file & patterns
Commit: bf754b76aad6072c546627dca0b2aff8b8de3012
https://github.com/scummvm/scummvm/commit/bf754b76aad6072c546627dca0b2aff8b8de3012
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2020-09-19T09:31:49-07:00
Commit Message:
ENGINES: Cleanup of get savegame file & patterns
Changed paths:
engines/cine/detection.cpp
engines/griffon/detection.cpp
engines/metaengine.cpp
engines/metaengine.h
diff --git a/engines/cine/detection.cpp b/engines/cine/detection.cpp
index 18620e956b..e51c079dcb 100644
--- a/engines/cine/detection.cpp
+++ b/engines/cine/detection.cpp
@@ -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);
}
diff --git a/engines/griffon/detection.cpp b/engines/griffon/detection.cpp
index 04ffddafea..282a40ec87 100644
--- a/engines/griffon/detection.cpp
+++ b/engines/griffon/detection.cpp
@@ -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 {
diff --git a/engines/metaengine.cpp b/engines/metaengine.cpp
index b682d82220..2a8bc127bf 100644
--- a/engines/metaengine.cpp
+++ b/engines/metaengine.cpp
@@ -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);
diff --git a/engines/metaengine.h b/engines/metaengine.h
index 0412e99cc1..7e9657b7cf 100644
--- a/engines/metaengine.h
+++ b/engines/metaengine.h
@@ -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.
More information about the Scummvm-git-logs
mailing list