[Scummvm-git-logs] scummvm master -> dfd6b6a9a4725687123baf1f5eaade05fea1408e
lolbot-iichan
lolbot_iichan at mail.ru
Tue Jun 15 21:25:17 UTC 2021
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:
dfd6b6a9a4 COMMON: moved AchievementDescriptionList into Common namespace
Commit: dfd6b6a9a4725687123baf1f5eaade05fea1408e
https://github.com/scummvm/scummvm/commit/dfd6b6a9a4725687123baf1f5eaade05fea1408e
Author: Martin Gerhardy (martin.gerhardy at gmail.com)
Date: 2021-06-16T00:25:14+03:00
Commit Message:
COMMON: moved AchievementDescriptionList into Common namespace
getAchievementsInfo is also moved into the MetaEngine to reduce code duplication
Changed paths:
common/achievements.h
engines/ags/achievements_tables.h
engines/ags/metaengine.cpp
engines/ags/metaengine.h
engines/metaengine.cpp
engines/metaengine.h
engines/twine/achievements_tables.h
engines/twine/metaengine.cpp
engines/wintermute/achievements_tables.h
engines/wintermute/metaengine.cpp
diff --git a/common/achievements.h b/common/achievements.h
index 0c9c5f5287..5860d84e52 100644
--- a/common/achievements.h
+++ b/common/achievements.h
@@ -79,6 +79,21 @@ struct AchievementsInfo {
AchievementsInfo() { platform = Common::UNK_ACHIEVEMENTS; }
};
+/**
+ * The meta engine returns an array of achievement descriptions
+ *
+ * @note This array (if not @c nullptr) must end on a terminating entry
+ * @sa ACHIEVEMENT_DESC_TABLE_END_MARKER
+ */
+struct AchievementDescriptionList {
+ const char *gameId;
+ Common::AchievementsPlatform platform;
+ const char *appId;
+};
+
+#define ACHIEVEMENT_DESC_TABLE_END_MARKER \
+ { nullptr, Common::AchievementsPlatform::UNK_ACHIEVEMENTS, nullptr }
+
/**
* Class for manipulating the achievements.
*
@@ -177,7 +192,7 @@ public:
float getAverageRateStatFloat(const String &id) const;
/**
- * Update an average rate statistic (float).
+ * Update an average rate statistic (float).
*
* @param[in] id Internal ID of the achievement.
* @param[in] count Value to which the statistic count is increased.
diff --git a/engines/ags/achievements_tables.h b/engines/ags/achievements_tables.h
index 2fd3c85424..5bfaeb9d03 100644
--- a/engines/ags/achievements_tables.h
+++ b/engines/ags/achievements_tables.h
@@ -23,15 +23,11 @@
#ifndef AGS_ACHIEVEMENTS_H
#define AGS_ACHIEVEMENTS_H
-namespace AGS {
+#include "common/achievements.h"
-struct AchievementDescriptionList {
- const char *gameId;
- Common::AchievementsPlatform platform;
- const char *appId;
-};
+namespace AGS {
-static const AchievementDescriptionList achievementDescriptionList[] = {
+static const Common::AchievementDescriptionList achievementDescriptionList[] = {
{"adateinthepark", Common::STEAM_ACHIEVEMENTS, "468530"},
{"alemmo", Common::STEAM_ACHIEVEMENTS, "296850"},
{"alum", Common::STEAM_ACHIEVEMENTS, "338420"},
@@ -94,7 +90,7 @@ static const AchievementDescriptionList achievementDescriptionList[] = {
{"whispersofamachine", Common::STEAM_ACHIEVEMENTS, "631570"},
{"zniwadventure", Common::STEAM_ACHIEVEMENTS, "904750"},
- {0, Common::UNK_ACHIEVEMENTS, 0}
+ ACHIEVEMENT_DESC_TABLE_END_MARKER
};
} // End of namespace AGS
diff --git a/engines/ags/metaengine.cpp b/engines/ags/metaengine.cpp
index 77999080a3..8d4e5a0eb1 100644
--- a/engines/ags/metaengine.cpp
+++ b/engines/ags/metaengine.cpp
@@ -153,27 +153,8 @@ SaveStateDescriptor AGSMetaEngine::querySaveMetaInfos(const char *target, int sl
return SaveStateDescriptor();
}
-const Common::AchievementsInfo AGSMetaEngine::getAchievementsInfo(const Common::String &target) const {
- Common::String gameId = ConfMan.get("gameid", target);
-
- Common::AchievementsPlatform platform = Common::UNK_ACHIEVEMENTS;
- Common::String extra = ConfMan.get("extra", target);
- if (extra.contains("GOG")) {
- platform = Common::GALAXY_ACHIEVEMENTS;
- } else if (extra.contains("Steam")) {
- platform = Common::STEAM_ACHIEVEMENTS;
- }
-
- // "(gameId, platform) -> result" search
- Common::AchievementsInfo result;
- for (const AGS::AchievementDescriptionList *i = AGS::achievementDescriptionList; i->gameId; i++) {
- if (i->gameId == gameId && i->platform == platform) {
- result.platform = i->platform;
- result.appId = i->appId;
- break;
- }
- }
- return result;
+const Common::AchievementDescriptionList* AGSMetaEngine::getAchievementDescriptionList() const {
+ return AGS::achievementDescriptionList;
}
#if PLUGIN_ENABLED_DYNAMIC(AGS)
diff --git a/engines/ags/metaengine.h b/engines/ags/metaengine.h
index fd5ca6e4b2..dabebe4885 100644
--- a/engines/ags/metaengine.h
+++ b/engines/ags/metaengine.h
@@ -23,6 +23,7 @@
#ifndef AGS_METAENGINE_H
#define AGS_METAENGINE_H
+#include "common/achievements.h"
#include "engines/advancedDetector.h"
class AGSMetaEngine : public AdvancedMetaEngine {
@@ -71,16 +72,7 @@ public:
*/
SaveStateDescriptor querySaveMetaInfos(const char *target, int slot) const override;
- /**
- * Return a list of achievement descriptions for the specified target.
- *
- * The default implementation returns an empty list.
- *
- * @param target Name of a config manager target.
- *
- * @return A list of achievement descriptions for an engine plugin and target.
- */
- const Common::AchievementsInfo getAchievementsInfo(const Common::String &target) const override;
+ const Common::AchievementDescriptionList* getAchievementDescriptionList() const override;
};
#endif
diff --git a/engines/metaengine.cpp b/engines/metaengine.cpp
index 03202ebbf5..bb30860b94 100644
--- a/engines/metaengine.cpp
+++ b/engines/metaengine.cpp
@@ -128,6 +128,34 @@ Common::KeymapArray MetaEngine::initKeymaps(const char *target) const {
return Keymap::arrayOf(engineKeyMap);
}
+const Common::AchievementsInfo MetaEngine::getAchievementsInfo(const Common::String &target) const {
+ const Common::AchievementDescriptionList* achievementDescriptionList = getAchievementDescriptionList();
+ if (achievementDescriptionList == nullptr) {
+ return Common::AchievementsInfo();
+ }
+
+ Common::String gameId = ConfMan.get("gameid", target);
+
+ Common::AchievementsPlatform platform = Common::UNK_ACHIEVEMENTS;
+ Common::String extra = ConfMan.get("extra", target);
+ if (extra.contains("GOG")) {
+ platform = Common::GALAXY_ACHIEVEMENTS;
+ } else if (extra.contains("Steam")) {
+ platform = Common::STEAM_ACHIEVEMENTS;
+ }
+
+ // "(gameId, platform) -> result" search
+ Common::AchievementsInfo result;
+ for (const Common::AchievementDescriptionList *i = achievementDescriptionList; i->gameId; i++) {
+ if (i->gameId == gameId && i->platform == platform) {
+ result.platform = i->platform;
+ result.appId = i->appId;
+ break;
+ }
+ }
+ return result;
+}
+
bool MetaEngine::hasFeature(MetaEngineFeature f) const {
return
(f == kSupportsListSaves) ||
diff --git a/engines/metaengine.h b/engines/metaengine.h
index 7cfbfe0487..21040f4093 100644
--- a/engines/metaengine.h
+++ b/engines/metaengine.h
@@ -495,14 +495,21 @@ public:
/**
* Return a list of achievement descriptions for the specified target.
*
- * The default implementation returns an empty list.
- *
* @param target Name of a config manager target.
*
* @return A list of achievement descriptions for an engine plugin and target.
*/
- virtual const Common::AchievementsInfo getAchievementsInfo(const Common::String &target) const {
- return Common::AchievementsInfo();
+ virtual const Common::AchievementsInfo getAchievementsInfo(const Common::String &target) const;
+
+ /**
+ * Return the achievement descriptions.
+ *
+ * @note The default implementation returns @c nullptr
+ *
+ * @return a list of achievement descriptions for an engine.
+ */
+ virtual const Common::AchievementDescriptionList* getAchievementDescriptionList() const {
+ return nullptr;
}
/**
diff --git a/engines/twine/achievements_tables.h b/engines/twine/achievements_tables.h
index 80317c79e3..ff63a60532 100644
--- a/engines/twine/achievements_tables.h
+++ b/engines/twine/achievements_tables.h
@@ -27,16 +27,10 @@
namespace TwinE {
-struct AchievementDescriptionList {
- const char *gameId;
- Common::AchievementsPlatform platform;
- const char *appId;
-};
-
-static const AchievementDescriptionList achievementDescriptionList[] = {
+static const Common::AchievementDescriptionList achievementDescriptionList[] = {
{"lba", Common::STEAM_ACHIEVEMENTS, "397330"},
- {0, Common::UNK_ACHIEVEMENTS, 0}
+ ACHIEVEMENT_DESC_TABLE_END_MARKER
};
} // namespace TwinE
diff --git a/engines/twine/metaengine.cpp b/engines/twine/metaengine.cpp
index eaea5cd56d..a5fd077dcb 100644
--- a/engines/twine/metaengine.cpp
+++ b/engines/twine/metaengine.cpp
@@ -62,7 +62,9 @@ public:
const ExtraGuiOptions getExtraGuiOptions(const Common::String &target) const override;
- const Common::AchievementsInfo getAchievementsInfo(const Common::String &target) const override;
+ const Common::AchievementDescriptionList* getAchievementDescriptionList() const override {
+ return TwinE::achievementDescriptionList;
+ }
void getSavegameThumbnail(Graphics::Surface &thumb) override;
};
@@ -182,27 +184,6 @@ const ExtraGuiOptions TwinEMetaEngine::getExtraGuiOptions(const Common::String &
return options;
}
-const Common::AchievementsInfo TwinEMetaEngine::getAchievementsInfo(const Common::String &target) const {
- Common::String gameId = ConfMan.get("gameid", target);
-
- Common::AchievementsPlatform platform = Common::UNK_ACHIEVEMENTS;
- Common::String extra = ConfMan.get("extra", target);
- if (extra.contains("Steam")) {
- platform = Common::STEAM_ACHIEVEMENTS;
- }
-
- // "(gameId, platform) -> result" search
- Common::AchievementsInfo result;
- for (const TwinE::AchievementDescriptionList *i = TwinE::achievementDescriptionList; i->gameId; ++i) {
- if (i->gameId == gameId && i->platform == platform) {
- result.platform = i->platform;
- result.appId = i->appId;
- break;
- }
- }
- return result;
-}
-
void TwinEMetaEngine::getSavegameThumbnail(Graphics::Surface &thumb) {
thumb.copyFrom(((TwinEEngine*)g_engine)->workVideoBuffer);
}
diff --git a/engines/wintermute/achievements_tables.h b/engines/wintermute/achievements_tables.h
index 8365295b98..a85f1ead7c 100644
--- a/engines/wintermute/achievements_tables.h
+++ b/engines/wintermute/achievements_tables.h
@@ -20,15 +20,14 @@
*
*/
-namespace Wintermute {
+#ifndef WINTERMUTE_ACHIEVEMENTS_H
+#define WINTERMUTE_ACHIEVEMENTS_H
-struct AchievementDescriptionList {
- const char *gameId;
- Common::AchievementsPlatform platform;
- const char *appId;
-};
+#include "common/achievements.h"
-static const AchievementDescriptionList achievementDescriptionList[] = {
+namespace Wintermute {
+
+static const Common::AchievementDescriptionList achievementDescriptionList[] = {
{"alphapolaris", Common::STEAM_ACHIEVEMENTS, "405780"},
{"carolreed10", Common::STEAM_ACHIEVEMENTS, "337130"},
{"carolreed11", Common::STEAM_ACHIEVEMENTS, "340370"},
@@ -47,7 +46,9 @@ static const AchievementDescriptionList achievementDescriptionList[] = {
{"sotv2", Common::STEAM_ACHIEVEMENTS, "378630"},
{"thelostcrowngha", Common::STEAM_ACHIEVEMENTS, "291710"},
- {0, Common::UNK_ACHIEVEMENTS, 0}
+ ACHIEVEMENT_DESC_TABLE_END_MARKER
};
} // End of namespace Wintermute
+
+#endif
diff --git a/engines/wintermute/metaengine.cpp b/engines/wintermute/metaengine.cpp
index 6e635cebb5..5e48d4a29f 100644
--- a/engines/wintermute/metaengine.cpp
+++ b/engines/wintermute/metaengine.cpp
@@ -131,24 +131,8 @@ public:
return retVal;
}
- const Common::AchievementsInfo getAchievementsInfo(const Common::String &target) const override {
- Common::String gameId = ConfMan.get("gameid", target);
-
- Common::AchievementsPlatform platform = Common::STEAM_ACHIEVEMENTS;
- if (ConfMan.get("extra", target).contains("GOG")) {
- platform = Common::GALAXY_ACHIEVEMENTS;
- }
-
- // "(gameId, platform) -> result" search
- Common::AchievementsInfo result;
- for (const AchievementDescriptionList *i = achievementDescriptionList; i->gameId; i++) {
- if (i->gameId == gameId && i->platform == platform) {
- result.platform = i->platform;
- result.appId = i->appId;
- break;
- }
- }
- return result;
+ const Common::AchievementDescriptionList* getAchievementDescriptionList() const override {
+ return Wintermute::achievementDescriptionList;
}
Common::KeymapArray initKeymaps(const char *target) const override {
More information about the Scummvm-git-logs
mailing list