aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
authorTorbjörn Andersson2006-08-23 04:26:01 +0000
committerTorbjörn Andersson2006-08-23 04:26:01 +0000
commitd4d2146a0a24949816b04fb47e8828da22fb4ded (patch)
treee477d5fed9d9bca4feae2c8e111112e4f1af9577 /engines
parenta69c0884de9195d5ae2d484900043f885fe8332e (diff)
downloadscummvm-rg350-d4d2146a0a24949816b04fb47e8828da22fb4ded.tar.gz
scummvm-rg350-d4d2146a0a24949816b04fb47e8828da22fb4ded.tar.bz2
scummvm-rg350-d4d2146a0a24949816b04fb47e8828da22fb4ded.zip
Run the game detector before creating the engine. This is based entirely on a
recent change to the CINE engine (which in turn was based on some other engine, I forget which), and should fix bug #1544796. Of course, given how primitive the Broken Sword 2 detector is, it's easy to fool it. There isn't really any need for it to be smart, though. svn-id: r23741
Diffstat (limited to 'engines')
-rw-r--r--engines/sword2/sword2.cpp24
1 files changed, 22 insertions, 2 deletions
diff --git a/engines/sword2/sword2.cpp b/engines/sword2/sword2.cpp
index be0f02a407..2f339545a5 100644
--- a/engines/sword2/sword2.cpp
+++ b/engines/sword2/sword2.cpp
@@ -111,9 +111,29 @@ DetectedGameList Engine_SWORD2_detectGames(const FSList &fslist) {
}
PluginError Engine_SWORD2_create(OSystem *syst, Engine **engine) {
+ assert(syst);
assert(engine);
- *engine = new Sword2::Sword2Engine(syst);
- return kNoError;
+
+ FSList fslist;
+ FilesystemNode dir(ConfMan.get("path"));
+ if (!dir.listDir(fslist, FilesystemNode::kListFilesOnly)) {
+ warning("Sword2Engine: invalid game path '%s'", dir.path().c_str());
+ return kInvalidPathError;
+ }
+
+ // Invoke the detector
+ Common::String gameid = ConfMan.get("gameid");
+ DetectedGameList detectedGames = Engine_SWORD2_detectGames(fslist);
+
+ for (uint i = 0; i < detectedGames.size(); i++) {
+ if (detectedGames[i].gameid == gameid) {
+ *engine = new Sword2::Sword2Engine(syst);
+ return kNoError;
+ }
+ }
+
+ warning("Sword2Engine: Unable to locate game data at path '%s'", dir.path().c_str());
+ return kNoGameDataFoundError;
}
REGISTER_PLUGIN(SWORD2, "Broken Sword 2", "Broken Sword Games (C) Revolution");