aboutsummaryrefslogtreecommitdiff
path: root/engines/xeen/detection.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/xeen/detection.cpp')
-rw-r--r--engines/xeen/detection.cpp21
1 files changed, 20 insertions, 1 deletions
diff --git a/engines/xeen/detection.cpp b/engines/xeen/detection.cpp
index 2b30478808..3bd4c22f97 100644
--- a/engines/xeen/detection.cpp
+++ b/engines/xeen/detection.cpp
@@ -21,6 +21,9 @@
*/
#include "xeen/xeen.h"
+#include "xeen/clouds/clouds_game.h"
+#include "xeen/darkside/darkside_game.h"
+#include "xeen/worldofxeen/worldofxeen_game.h"
#include "base/plugins.h"
#include "common/savefile.h"
@@ -62,6 +65,8 @@ Common::Platform XeenEngine::getPlatform() const {
static const PlainGameDescriptor XeenGames[] = {
{ "xeen", "Xeen" },
+ { "clouds", "Clouds of Xeen" },
+ { "darkside", "Dark Side of Xeen" },
{ "worldofxeen", "World of Xeen" },
{0, 0}
};
@@ -108,7 +113,21 @@ bool Xeen::XeenEngine::hasFeature(EngineFeature f) const {
bool XeenMetaEngine::createInstance(OSystem *syst, Engine **engine, const ADGameDescription *desc) const {
const Xeen::XeenGameDescription *gd = (const Xeen::XeenGameDescription *)desc;
- *engine = new Xeen::XeenEngine(syst, gd);
+
+ switch (gd->gameID) {
+ case Xeen::GType_Clouds:
+ *engine = new Xeen::CloudsEngine(syst, gd);
+ break;
+ case Xeen::GType_DarkSide:
+ *engine = new Xeen::DarkSideEngine(syst, gd);
+ break;
+ case Xeen::GType_WorldOfXeen:
+ *engine = new Xeen::WorldOfXeenEngine(syst, gd);
+ break;
+ default:
+ break;
+ }
+
return gd != 0;
}