[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