diff options
Diffstat (limited to 'engines/glk/tads')
-rw-r--r-- | engines/glk/tads/detection.cpp | 40 | ||||
-rw-r--r-- | engines/glk/tads/detection_tables.h | 17 |
2 files changed, 37 insertions, 20 deletions
diff --git a/engines/glk/tads/detection.cpp b/engines/glk/tads/detection.cpp index 9206193f63..9e1eb0833d 100644 --- a/engines/glk/tads/detection.cpp +++ b/engines/glk/tads/detection.cpp @@ -31,15 +31,27 @@ namespace Glk { namespace TADS { void TADSMetaEngine::getSupportedGames(PlainGameList &games) { - for (const GameDescriptor *pd = TADS_GAME_LIST; pd->_gameId; ++pd) { + for (const PlainGameDescriptor *pd = TADS2_GAME_LIST; pd->gameId; ++pd) + games.push_back(*pd); + for (const PlainGameDescriptor *pd = TADS3_GAME_LIST; pd->gameId; ++pd) games.push_back(*pd); - } } GameDescriptor TADSMetaEngine::findGame(const char *gameId) { - for (const GameDescriptor *pd = TADS_GAME_LIST; pd->_gameId; ++pd) { - if (!strcmp(gameId, pd->_gameId)) - return *pd; + for (const PlainGameDescriptor *pd = TADS2_GAME_LIST; pd->gameId; ++pd) { + if (!strcmp(gameId, pd->gameId)) { + GameDescriptor gd = *pd; + gd._options = OPTION_TADS2; + return gd; + } + } + + for (const PlainGameDescriptor *pd = TADS3_GAME_LIST; pd->gameId; ++pd) { + if (!strcmp(gameId, pd->gameId)) { + GameDescriptor gd = *pd; + gd._options = OPTION_TADS3; + return gd; + } } return GameDescriptor::empty(); @@ -81,10 +93,9 @@ bool TADSMetaEngine::detectGames(const Common::FSList &fslist, DetectedGames &ga debug("ENTRY0(\"%s\", \"%s\", %u),", fname.c_str(), md5.c_str(), (uint)filesize); } - const GameDescriptor &desc = TADS_GAME_LIST[0]; + const GameDescriptor &desc = TADS2_GAME_LIST[0]; gd = DetectedGame(desc._gameId, desc._description, Common::UNK_LANG, Common::kPlatformUnknown); - } - else { + } else { PlainGameDescriptor gameDesc = findGame(p->_gameId); gd = DetectedGame(p->_gameId, gameDesc.description, p->_language, Common::kPlatformUnknown, p->_extra); } @@ -97,10 +108,15 @@ bool TADSMetaEngine::detectGames(const Common::FSList &fslist, DetectedGames &ga } void TADSMetaEngine::detectClashes(Common::StringMap &map) { - for (const GameDescriptor *pd = TADS_GAME_LIST; pd->_gameId; ++pd) { - if (map.contains(pd->_gameId)) - error("Duplicate game Id found - %s", pd->_gameId); - map[pd->_gameId] = ""; + for (const PlainGameDescriptor *pd = TADS2_GAME_LIST; pd->gameId; ++pd) { + if (map.contains(pd->gameId)) + error("Duplicate game Id found - %s", pd->gameId); + map[pd->gameId] = ""; + } + for (const PlainGameDescriptor *pd = TADS3_GAME_LIST; pd->gameId; ++pd) { + if (map.contains(pd->gameId)) + error("Duplicate game Id found - %s", pd->gameId); + map[pd->gameId] = ""; } } diff --git a/engines/glk/tads/detection_tables.h b/engines/glk/tads/detection_tables.h index 322c9dbb91..e9b4dc1aca 100644 --- a/engines/glk/tads/detection_tables.h +++ b/engines/glk/tads/detection_tables.h @@ -38,14 +38,15 @@ struct TADSGameDescription { Common::Language _language; }; -const GameDescriptor TADS_GAME_LIST[] = { - // TADS 2 Games - { "tads2", "TADS 2 Game", OPTION_TADS2 }, - { "oncefuture", "Once and Future", OPTION_TADS2 }, - - // TADS 3 Games - { "tads3", "TADS 3 Game", OPTION_TADS3 }, - { nullptr, nullptr, 0 } +const PlainGameDescriptor TADS2_GAME_LIST[] = { + { "tads2", "TADS 2 Game" }, + { "oncefuture", "Once and Future" }, + { nullptr, nullptr } +}; + +const PlainGameDescriptor TADS3_GAME_LIST[] = { + { "tads3", "TADS 3 Game" }, + { nullptr, nullptr } }; #define ENTRY0(ID, MD5, FILESIZE) { ID, "", MD5, FILESIZE, Common::EN_ANY } |