From a85a98b867af5808f630d14c92526fff36c5d3b8 Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Tue, 13 Feb 2018 20:10:43 -0500 Subject: [PATCH] XEEN: Add detection for Clouds & Dark Side --- engines/xeen/detection.cpp | 4 +-- engines/xeen/detection_tables.h | 36 ++++++++++++++++++++++++ engines/xeen/files.cpp | 2 +- engines/xeen/map.cpp | 6 +++- engines/xeen/worldofxeen/worldofxeen.cpp | 4 +++ 5 files changed, 48 insertions(+), 4 deletions(-) diff --git a/engines/xeen/detection.cpp b/engines/xeen/detection.cpp index 0916c3965bb..b16c8d6d3aa 100644 --- a/engines/xeen/detection.cpp +++ b/engines/xeen/detection.cpp @@ -64,8 +64,8 @@ Common::Platform XeenEngine::getPlatform() const { static const PlainGameDescriptor XeenGames[] = { { "xeen", "Xeen" }, - { "clouds", "Clouds of Xeen" }, - { "darkside", "Dark Side of Xeen" }, + { "cloudsofxeen", "Clouds of Xeen" }, + { "darksideofxeen", "Dark Side of Xeen" }, { "worldofxeen", "World of Xeen" }, { "swordsofxeen", "Swords of Xeen" }, {0, 0} diff --git a/engines/xeen/detection_tables.h b/engines/xeen/detection_tables.h index 31a79f3d90e..07aeef5dc4c 100644 --- a/engines/xeen/detection_tables.h +++ b/engines/xeen/detection_tables.h @@ -80,6 +80,42 @@ static const XeenGameDescription gameDescriptions[] = { 0 }, + { + // Clouds of Xeen + { + "cloudsofxeen", + nullptr, + { + { "xeen.cc", 0, "0cffbab533d9afe140e69ec93096f43e", 13435646 }, + AD_LISTEND + }, + Common::EN_ANY, + Common::kPlatformDOS, + ADGF_NO_FLAGS, + GUIO1(GUIO_NONE) + }, + GType_Clouds, + 0 + }, + + { + // Dark Side of Xeen + { + "darksideofxeen", + nullptr, + { + { "dark.cc", 0, "df194483ecea6abc0511637d712ced7c", 11217676 }, + AD_LISTEND + }, + Common::EN_ANY, + Common::kPlatformDOS, + ADGF_NO_FLAGS, + GUIO1(GUIO_NONE) + }, + GType_DarkSide, + 0 + }, + { // Swords of Xeen (GOG) { diff --git a/engines/xeen/files.cpp b/engines/xeen/files.cpp index 6380199f516..89cc2c05842 100644 --- a/engines/xeen/files.cpp +++ b/engines/xeen/files.cpp @@ -249,7 +249,7 @@ FileManager::~FileManager() { void FileManager::setGameCc(int ccMode) { if (g_vm->getGameID() != GType_WorldOfXeen) - ccMode = 1; + ccMode = g_vm->getGameID() == GType_Clouds ? 0 : 1; File::setCurrentArchive(ccMode); _isDarkCc = ccMode != 0; diff --git a/engines/xeen/map.cpp b/engines/xeen/map.cpp index 16fce5843a5..8bb04b1eeb8 100644 --- a/engines/xeen/map.cpp +++ b/engines/xeen/map.cpp @@ -992,10 +992,14 @@ void Map::load(int mapId) { _sideTownPortal = _loadDarkSide ? 1 : 0; } - if (_vm->getGameID() == GType_Swords) { + if (_vm->getGameID() == GType_Swords || _vm->getGameID() == GType_DarkSide) { _animationInfo.load("dark.dat"); _monsterData.load("dark.mon"); _wallPicSprites.load("darkpic.dat"); + } else if (_vm->getGameID() == GType_Clouds) { + _animationInfo.load("clouds.dat"); + _monsterData.load("xeen.mon"); + _wallPicSprites.load("xeenpic.dat"); } else if (_vm->getGameID() == GType_WorldOfXeen) { files.setGameCc(1); diff --git a/engines/xeen/worldofxeen/worldofxeen.cpp b/engines/xeen/worldofxeen/worldofxeen.cpp index dcb87197f35..dbccf460ea5 100644 --- a/engines/xeen/worldofxeen/worldofxeen.cpp +++ b/engines/xeen/worldofxeen/worldofxeen.cpp @@ -44,6 +44,10 @@ void WorldOfXeenEngine::outerGameLoop() { _pendingAction = WOX_PLAY_GAME; while (!shouldQuit() && _pendingAction != WOX_QUIT) { + // TODO: Remove this once proper startup menus are added for Clouds & Dark Side + if (g_vm->getGameID() != GType_WorldOfXeen) + _pendingAction = WOX_PLAY_GAME; + WOXGameAction action = _pendingAction; _pendingAction = WOX_MENU; _quitMode = QMODE_NONE;