diff options
author | Torbjörn Andersson | 2006-08-23 04:26:01 +0000 |
---|---|---|
committer | Torbjörn Andersson | 2006-08-23 04:26:01 +0000 |
commit | d4d2146a0a24949816b04fb47e8828da22fb4ded (patch) | |
tree | e477d5fed9d9bca4feae2c8e111112e4f1af9577 /engines/sword2 | |
parent | a69c0884de9195d5ae2d484900043f885fe8332e (diff) | |
download | scummvm-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/sword2')
-rw-r--r-- | engines/sword2/sword2.cpp | 24 |
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"); |