mirror of
https://github.com/libretro/scummvm.git
synced 2024-12-13 12:39:56 +00:00
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
This commit is contained in:
parent
a69c0884de
commit
d4d2146a0a
@ -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");
|
||||
|
Loading…
Reference in New Issue
Block a user