aboutsummaryrefslogtreecommitdiff
path: root/queen
diff options
context:
space:
mode:
authorMax Horn2003-10-17 23:16:53 +0000
committerMax Horn2003-10-17 23:16:53 +0000
commit0694eed27393ee7d1cbeccd20e8641fa261f5642 (patch)
treef050bac8eda4b451100bffbc6aebf416070d7f7d /queen
parent6eb03982170a625063c1e8be57e581a7f10d4cc9 (diff)
downloadscummvm-rg350-0694eed27393ee7d1cbeccd20e8641fa261f5642.tar.gz
scummvm-rg350-0694eed27393ee7d1cbeccd20e8641fa261f5642.tar.bz2
scummvm-rg350-0694eed27393ee7d1cbeccd20e8641fa261f5642.zip
moved game detection code out to the plugins
svn-id: r10882
Diffstat (limited to 'queen')
-rw-r--r--queen/queen.cpp41
1 files changed, 31 insertions, 10 deletions
diff --git a/queen/queen.cpp b/queen/queen.cpp
index 65ad09c926..18ef1a6bd4 100644
--- a/queen/queen.cpp
+++ b/queen/queen.cpp
@@ -20,17 +20,17 @@
*/
#include "stdafx.h"
-#include "queen/queen.h"
-#include "queen/cutaway.h"
-#include "queen/talk.h"
-#include "queen/walk.h"
-#include "queen/graphics.h"
-#include "common/config-manager.h"
-#include "common/file.h"
+#include "backends/fs/fs.h"
#include "base/gameDetector.h"
#include "base/plugins.h"
+#include "common/config-manager.h"
+#include "common/file.h"
+#include "queen/cutaway.h"
#include "queen/display.h"
#include "queen/graphics.h"
+#include "queen/queen.h"
+#include "queen/talk.h"
+#include "queen/walk.h"
extern uint16 _debugLevel;
@@ -47,15 +47,36 @@ static const GameSettings queen_settings[] = {
{ NULL, NULL, 0, 0, MDT_NONE, 0, NULL}
};
-const GameSettings *Engine_QUEEN_targetList() {
- return queen_settings;
+GameList Engine_QUEEN_gameList() {
+ const GameSettings *g = queen_settings;
+ GameList games;
+ while (g->gameName)
+ games.push_back(*g++);
+ return games;
+}
+
+GameList Engine_QUEEN_detectGames(const FSList &fslist) {
+ GameList detectedGames;
+ const GameSettings *g = &queen_settings[0];
+
+ // Iterate over all files in the given directory
+ for (FSList::ConstIterator file = fslist.begin(); file != fslist.end(); ++file) {
+ const char *gameName = file->displayName().c_str();
+
+ if (0 == scumm_stricmp(g->detectname, gameName)) {
+ // Match found, add to list of candidates, then abort inner loop.
+ detectedGames.push_back(*g);
+ break;
+ }
+ }
+ return detectedGames;
}
Engine *Engine_QUEEN_create(GameDetector *detector, OSystem *syst) {
return new Queen::QueenEngine(detector, syst);
}
-REGISTER_PLUGIN("Flight of the Amazon Queen", Engine_QUEEN_targetList, Engine_QUEEN_create);
+REGISTER_PLUGIN("Flight of the Amazon Queen", Engine_QUEEN_gameList, Engine_QUEEN_create, Engine_QUEEN_detectGames);
namespace Queen {