aboutsummaryrefslogtreecommitdiff
path: root/engines/sky
diff options
context:
space:
mode:
authorJordi Vilalta Prat2008-02-03 09:39:26 +0000
committerJordi Vilalta Prat2008-02-03 09:39:26 +0000
commitc070f0d04f72fd0274b8d2048ea2f3a656c4a0f4 (patch)
tree6d199a465abbed985441c8d24d8cc6eff8a4cded /engines/sky
parent53ef575dbacdedc021579a9d200396fd68326824 (diff)
downloadscummvm-rg350-c070f0d04f72fd0274b8d2048ea2f3a656c4a0f4.tar.gz
scummvm-rg350-c070f0d04f72fd0274b8d2048ea2f3a656c4a0f4.tar.bz2
scummvm-rg350-c070f0d04f72fd0274b8d2048ea2f3a656c4a0f4.zip
Converted queen and sky to use MetaEngine (forgot them because they don't use the AdvancedDetector).
svn-id: r30752
Diffstat (limited to 'engines/sky')
-rw-r--r--engines/sky/sky.cpp53
1 files changed, 39 insertions, 14 deletions
diff --git a/engines/sky/sky.cpp b/engines/sky/sky.cpp
index aa94661bd5..f3393ade6f 100644
--- a/engines/sky/sky.cpp
+++ b/engines/sky/sky.cpp
@@ -55,6 +55,8 @@
#include "sound/mididrv.h"
#include "sound/mixer.h"
+#include "engines/metaengine.h"
+
#ifdef _WIN32_WCE
extern bool toolbar_drawn;
@@ -81,18 +83,6 @@ extern bool draw_keyboard;
static const PlainGameDescriptor skySetting =
{"sky", "Beneath a Steel Sky" };
-GameList Engine_SKY_gameIDList() {
- GameList games;
- games.push_back(skySetting);
- return games;
-}
-
-GameDescriptor Engine_SKY_findGameID(const char *gameid) {
- if (0 == scumm_stricmp(gameid, skySetting.gameid))
- return skySetting;
- return GameDescriptor();
-}
-
struct SkyVersion {
int dinnerTableEntries;
int dataDiskSize;
@@ -114,7 +104,40 @@ static const SkyVersion skyVersions[] = {
{ 0, 0, 0, 0 }
};
-GameList Engine_SKY_detectGames(const FSList &fslist) {
+class SkyMetaEngine : public MetaEngine {
+public:
+ virtual const char *getName() const;
+ virtual const char *getCopyright() const;
+// virtual int getVersion() const { return 0; } // TODO!
+
+ virtual GameList getSupportedGames() const;
+ virtual GameDescriptor findGame(const char *gameid) const;
+ virtual GameList detectGames(const FSList &fslist) const;
+
+ virtual PluginError createInstance(OSystem *syst, Engine **engine) const;
+};
+
+const char *SkyMetaEngine::getName() const {
+ return "Beneath a Steel Sky";
+}
+
+const char *SkyMetaEngine::getCopyright() const {
+ return "Beneath a Steel Sky (C) Revolution";
+}
+
+GameList SkyMetaEngine::getSupportedGames() const {
+ GameList games;
+ games.push_back(skySetting);
+ return games;
+}
+
+GameDescriptor SkyMetaEngine::findGame(const char *gameid) const {
+ if (0 == scumm_stricmp(gameid, skySetting.gameid))
+ return skySetting;
+ return GameDescriptor();
+}
+
+GameList SkyMetaEngine::detectGames(const FSList &fslist) const {
GameList detectedGames;
bool hasSkyDsk = false;
bool hasSkyDnr = false;
@@ -166,12 +189,14 @@ GameList Engine_SKY_detectGames(const FSList &fslist) {
return detectedGames;
}
-PluginError Engine_SKY_create(OSystem *syst, Engine **engine) {
+PluginError SkyMetaEngine::createInstance(OSystem *syst, Engine **engine) const {
assert(engine);
*engine = new Sky::SkyEngine(syst);
return kNoError;
}
+META_COMPATIBLITY_WRAPPER(SKY, SkyMetaEngine);
+
REGISTER_PLUGIN(SKY, "Beneath a Steel Sky", "Beneath a Steel Sky (C) Revolution");