aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMax Horn2006-12-19 23:59:26 +0000
committerMax Horn2006-12-19 23:59:26 +0000
commitdc30c2304c808dd25920e5f9a179533eb7a45555 (patch)
treea1302c9991a0dcb533ae733f5ff90d1309cc349b
parente0ee3fd06d9d547715139d89f896dda96561df12 (diff)
downloadscummvm-rg350-dc30c2304c808dd25920e5f9a179533eb7a45555.tar.gz
scummvm-rg350-dc30c2304c808dd25920e5f9a179533eb7a45555.tar.bz2
scummvm-rg350-dc30c2304c808dd25920e5f9a179533eb7a45555.zip
Changed Engine_KYRA_detectGames to use ADVANCED_DETECTOR_DETECT_GAMES_FUNCTION, and removed the ADGameDescription::gameid abuse
svn-id: r24898
-rw-r--r--engines/kyra/plugin.cpp51
1 files changed, 23 insertions, 28 deletions
diff --git a/engines/kyra/plugin.cpp b/engines/kyra/plugin.cpp
index 3b8f45d96c..f033f3e800 100644
--- a/engines/kyra/plugin.cpp
+++ b/engines/kyra/plugin.cpp
@@ -41,7 +41,6 @@ enum {
struct KYRAGameDescription {
Common::ADGameDescription desc;
- const char *id;
GameFlags flags;
};
@@ -129,26 +128,26 @@ const ADGameFileDescription kyra3CD1[] = {
#define KYRA3_CD_FLAGS FLAGS(false, false, false, true, GI_KYRA3)
-const KYRAGameDescription adGameDescs[] = {
- { { "The Legend of Kyrandia", 0, kyra1EnglishFloppy1, EN_ANY, kPlatformPC }, "kyra1", KYRA1_FLOPPY_FLAGS },
- { { "The Legend of Kyrandia", 0, kyra1EnglishFloppy2, EN_ANY, kPlatformPC }, "kyra1", KYRA1_FLOPPY_FLAGS },
- { { "The Legend of Kyrandia", 0, kyra1FrenchFloppy1 , FR_FRA, kPlatformPC }, "kyra1", KYRA1_FLOPPY_FLAGS },
- { { "The Legend of Kyrandia", 0, kyra1GermanFloppy1 , DE_DEU, kPlatformPC }, "kyra1", KYRA1_FLOPPY_FLAGS },
- { { "The Legend of Kyrandia", 0, kyra1GermanFloppy2 , DE_DEU, kPlatformPC }, "kyra1", KYRA1_FLOPPY_FLAGS }, // from Arne.F
- { { "The Legend of Kyrandia", 0, kyra1SpanishFloppy1, ES_ESP, kPlatformPC }, "kyra1", KYRA1_FLOPPY_FLAGS }, // from VooD
- { { "The Legend of Kyrandia", 0, kyra1SpanishFloppy2, ES_ESP, kPlatformPC }, "kyra1", KYRA1_FLOPPY_FLAGS }, // floppy 1.8 from clemmy
- { { "The Legend of Kyrandia", 0, kyra1ItalianFloppy1, IT_ITA, kPlatformPC }, "kyra1", KYRA1_FLOPPY_FLAGS }, // from gourry
+static const KYRAGameDescription adGameDescs[] = {
+ { { "kyra1", 0, kyra1EnglishFloppy1, EN_ANY, kPlatformPC }, KYRA1_FLOPPY_FLAGS },
+ { { "kyra1", 0, kyra1EnglishFloppy2, EN_ANY, kPlatformPC }, KYRA1_FLOPPY_FLAGS },
+ { { "kyra1", 0, kyra1FrenchFloppy1 , FR_FRA, kPlatformPC }, KYRA1_FLOPPY_FLAGS },
+ { { "kyra1", 0, kyra1GermanFloppy1 , DE_DEU, kPlatformPC }, KYRA1_FLOPPY_FLAGS },
+ { { "kyra1", 0, kyra1GermanFloppy2 , DE_DEU, kPlatformPC }, KYRA1_FLOPPY_FLAGS }, // from Arne.F
+ { { "kyra1", 0, kyra1SpanishFloppy1, ES_ESP, kPlatformPC }, KYRA1_FLOPPY_FLAGS }, // from VooD
+ { { "kyra1", 0, kyra1SpanishFloppy2, ES_ESP, kPlatformPC }, KYRA1_FLOPPY_FLAGS }, // floppy 1.8 from clemmy
+ { { "kyra1", 0, kyra1ItalianFloppy1, IT_ITA, kPlatformPC }, KYRA1_FLOPPY_FLAGS }, // from gourry
- { { "The Legend of Kyrandia", "CD", kyra1EnglishCD1, EN_ANY, kPlatformPC }, "kyra1", KYRA1_CD_FLAGS },
- { { "The Legend of Kyrandia", "CD", kyra1GermanCD1 , DE_DEU, kPlatformPC }, "kyra1", KYRA1_CD_FLAGS },
- { { "The Legend of Kyrandia", "CD", kyra1FrenchCD1 , FR_FRA, kPlatformPC }, "kyra1", KYRA1_CD_FLAGS },
+ { { "kyra1", "CD", kyra1EnglishCD1, EN_ANY, kPlatformPC }, KYRA1_CD_FLAGS },
+ { { "kyra1", "CD", kyra1GermanCD1 , DE_DEU, kPlatformPC }, KYRA1_CD_FLAGS },
+ { { "kyra1", "CD", kyra1FrenchCD1 , FR_FRA, kPlatformPC }, KYRA1_CD_FLAGS },
- { { "The Legend of Kyrandia", "Demo", kyra1EnglishDemo1, EN_ANY, kPlatformPC }, "kyra1", KYRA1_DEMO_FLAGS },
+ { { "kyra1", "Demo", kyra1EnglishDemo1, EN_ANY, kPlatformPC }, KYRA1_DEMO_FLAGS },
- { { "The Legend of Kyrandia: The Hand of Fate", 0, kyra2UnknownUnknown1, UNK_LANG, kPlatformPC }, "kyra2", KYRA2_UNK_FLAGS }, // check this! (cd version?)
+ { { "kyra2", 0, kyra2UnknownUnknown1, UNK_LANG, kPlatformPC }, KYRA2_UNK_FLAGS }, // check this! (cd version?)
- { { "The Legend of Kyrandia: Malcolm's Revenge", 0, kyra3CD1, UNK_LANG, kPlatformPC }, "kyra3", KYRA3_CD_FLAGS },
- { { NULL, NULL, NULL, UNK_LANG, kPlatformUnknown }, NULL, KYRA2_UNK_FLAGS }
+ { { "kyra3", 0, kyra3CD1, UNK_LANG, kPlatformPC }, KYRA3_CD_FLAGS },
+ { { NULL, NULL, NULL, UNK_LANG, kPlatformUnknown }, KYRA2_UNK_FLAGS }
};
static ADList detectKyraGames(const FSList &fslist) {
@@ -227,17 +226,13 @@ GameDescriptor Engine_KYRA_findGameID(const char *gameid) {
}
DetectedGameList Engine_KYRA_detectGames(const FSList &fslist) {
- DetectedGameList detectedGames;
- ADList games = detectKyraGames(fslist);
-
- for (ADList::const_iterator pos = games.begin(); pos != games.end(); ++pos) {
- // FIXME: The 'gameid' field is being abused as a description field here!
- DetectedGame game(adGameDescs[*pos].id, adGameDescs[*pos].desc.gameid, adGameDescs[*pos].desc.language, adGameDescs[*pos].desc.platform);
- game.updateDesc(adGameDescs[*pos].desc.extra);
- detectedGames.push_back(game);
- }
-
- return detectedGames;
+ return Common::ADVANCED_DETECTOR_DETECT_GAMES_FUNCTION(
+ fslist,
+ (const byte *)adGameDescs,
+ sizeof(KYRAGameDescription),
+ kMD5FileSizeLimit,
+ gameList
+ );
}
PluginError Engine_KYRA_create(OSystem *syst, Engine **engine) {