aboutsummaryrefslogtreecommitdiff
path: root/engines/queen/queen.cpp
diff options
context:
space:
mode:
authorD G Turner2013-05-30 03:53:54 +0100
committerD G Turner2013-10-05 06:24:42 +0100
commitb61c770d0f72db388cc0b3300065492ddf6b6d40 (patch)
treee1d37d6231c08ba305b23558cb5f0ccc4e910c37 /engines/queen/queen.cpp
parent79b60c8ee8c3fd8f08605d1ee245acb3ec554f0a (diff)
downloadscummvm-rg350-b61c770d0f72db388cc0b3300065492ddf6b6d40.tar.gz
scummvm-rg350-b61c770d0f72db388cc0b3300065492ddf6b6d40.tar.bz2
scummvm-rg350-b61c770d0f72db388cc0b3300065492ddf6b6d40.zip
QUEEN: Move current detection code into separate source file.
Diffstat (limited to 'engines/queen/queen.cpp')
-rw-r--r--engines/queen/queen.cpp175
1 files changed, 1 insertions, 174 deletions
diff --git a/engines/queen/queen.cpp b/engines/queen/queen.cpp
index 08fc594560..3fb7f68dfb 100644
--- a/engines/queen/queen.cpp
+++ b/engines/queen/queen.cpp
@@ -23,14 +23,12 @@
#include "base/plugins.h"
#include "common/config-manager.h"
+#include "common/events.h"
#include "common/file.h"
#include "common/fs.h"
-#include "common/gui_options.h"
#include "common/savefile.h"
#include "common/system.h"
-#include "common/events.h"
#include "common/textconsole.h"
-#include "common/translation.h"
#include "engines/util.h"
@@ -49,177 +47,6 @@
#include "queen/talk.h"
#include "queen/walk.h"
-#include "engines/metaengine.h"
-
-static const PlainGameDescriptor queenGameDescriptor = {
- "queen", "Flight of the Amazon Queen"
-};
-
-static const ExtraGuiOption queenExtraGuiOption = {
- _s("Alternative intro"),
- _s("Use an alternative game intro (CD version only)"),
- "alt_intro",
- false
-};
-
-class QueenMetaEngine : public MetaEngine {
-public:
- virtual const char *getName() const;
- virtual const char *getOriginalCopyright() const;
-
- virtual bool hasFeature(MetaEngineFeature f) const;
- virtual GameList getSupportedGames() const;
- virtual const ExtraGuiOptions getExtraGuiOptions(const Common::String &target) const;
- virtual GameDescriptor findGame(const char *gameid) const;
- virtual GameList detectGames(const Common::FSList &fslist) const;
- virtual SaveStateList listSaves(const char *target) const;
- virtual int getMaximumSaveSlot() const;
- virtual void removeSaveState(const char *target, int slot) const;
-
- virtual Common::Error createInstance(OSystem *syst, Engine **engine) const;
-};
-
-const char *QueenMetaEngine::getName() const {
- return "Queen";
-}
-
-const char *QueenMetaEngine::getOriginalCopyright() const {
- return "Flight of the Amazon Queen (C) John Passfield and Steve Stamatiadis";
-}
-
-bool QueenMetaEngine::hasFeature(MetaEngineFeature f) const {
- return
- (f == kSupportsListSaves) ||
- (f == kSupportsLoadingDuringStartup) ||
- (f == kSupportsDeleteSave);
-}
-
-bool Queen::QueenEngine::hasFeature(EngineFeature f) const {
- return
- (f == kSupportsRTL) ||
- (f == kSupportsLoadingDuringRuntime) ||
- (f == kSupportsSavingDuringRuntime) ||
- (f == kSupportsSubtitleOptions);
-}
-
-GameList QueenMetaEngine::getSupportedGames() const {
- GameList games;
- games.push_back(queenGameDescriptor);
- return games;
-}
-
-int QueenMetaEngine::getMaximumSaveSlot() const { return 99; }
-
-const ExtraGuiOptions QueenMetaEngine::getExtraGuiOptions(const Common::String &target) const {
- Common::String guiOptions;
- ExtraGuiOptions options;
-
- if (target.empty()) {
- options.push_back(queenExtraGuiOption);
- return options;
- }
-
- if (ConfMan.hasKey("guioptions", target)) {
- guiOptions = ConfMan.get("guioptions", target);
- guiOptions = parseGameGUIOptions(guiOptions);
- }
-
- if (!guiOptions.contains(GUIO_NOSPEECH))
- options.push_back(queenExtraGuiOption);
- return options;
-}
-
-GameDescriptor QueenMetaEngine::findGame(const char *gameid) const {
- if (0 == scumm_stricmp(gameid, queenGameDescriptor.gameid)) {
- return queenGameDescriptor;
- }
- return GameDescriptor();
-}
-
-GameList QueenMetaEngine::detectGames(const Common::FSList &fslist) const {
- GameList detectedGames;
-
- // Iterate over all files in the given directory
- for (Common::FSList::const_iterator file = fslist.begin(); file != fslist.end(); ++file) {
- if (file->isDirectory()) {
- continue;
- }
- if (file->getName().equalsIgnoreCase("queen.1") || file->getName().equalsIgnoreCase("queen.1c")) {
- Common::File dataFile;
- if (!dataFile.open(*file)) {
- continue;
- }
- Queen::DetectedGameVersion version;
- if (Queen::Resource::detectVersion(&version, &dataFile)) {
- GameDescriptor dg(queenGameDescriptor.gameid, queenGameDescriptor.description, version.language, version.platform);
- if (version.features & Queen::GF_DEMO) {
- dg.updateDesc("Demo");
- dg.setGUIOptions(GUIO_NOSPEECH);
- } else if (version.features & Queen::GF_INTERVIEW) {
- dg.updateDesc("Interview");
- dg.setGUIOptions(GUIO_NOSPEECH);
- } else if (version.features & Queen::GF_FLOPPY) {
- dg.updateDesc("Floppy");
- dg.setGUIOptions(GUIO_NOSPEECH);
- } else if (version.features & Queen::GF_TALKIE) {
- dg.updateDesc("Talkie");
- }
- detectedGames.push_back(dg);
- break;
- }
- }
- }
- return detectedGames;
-}
-
-SaveStateList QueenMetaEngine::listSaves(const char *target) const {
- Common::SaveFileManager *saveFileMan = g_system->getSavefileManager();
- Common::StringArray filenames;
- char saveDesc[32];
- Common::String pattern("queen.s??");
-
- filenames = saveFileMan->listSavefiles(pattern);
- sort(filenames.begin(), filenames.end()); // Sort (hopefully ensuring we are sorted numerically..)
-
- SaveStateList saveList;
- for (Common::StringArray::const_iterator file = filenames.begin(); file != filenames.end(); ++file) {
- // Obtain the last 2 digits of the filename, since they correspond to the save slot
- int slotNum = atoi(file->c_str() + file->size() - 2);
-
- if (slotNum >= 0 && slotNum <= 99) {
- Common::InSaveFile *in = saveFileMan->openForLoading(*file);
- if (in) {
- for (int i = 0; i < 4; i++)
- in->readUint32BE();
- in->read(saveDesc, 32);
- saveList.push_back(SaveStateDescriptor(slotNum, saveDesc));
- delete in;
- }
- }
- }
-
- return saveList;
-}
-
-void QueenMetaEngine::removeSaveState(const char *target, int slot) const {
- Common::String filename = target;
- filename += Common::String::format(".s%02d", slot);
-
- g_system->getSavefileManager()->removeSavefile(filename);
-}
-
-Common::Error QueenMetaEngine::createInstance(OSystem *syst, Engine **engine) const {
- assert(engine);
- *engine = new Queen::QueenEngine(syst);
- return Common::kNoError;
-}
-
-#if PLUGIN_ENABLED_DYNAMIC(QUEEN)
- REGISTER_PLUGIN_DYNAMIC(QUEEN, PLUGIN_TYPE_ENGINE, QueenMetaEngine);
-#else
- REGISTER_PLUGIN_STATIC(QUEEN, PLUGIN_TYPE_ENGINE, QueenMetaEngine);
-#endif
-
namespace Queen {
QueenEngine::QueenEngine(OSystem *syst)