diff options
author | uruk | 2013-06-20 08:32:58 +0200 |
---|---|---|
committer | uruk | 2013-06-20 08:32:58 +0200 |
commit | b916ab6f0247a0e9da36442d8dd6fd6834cd0ee4 (patch) | |
tree | 298ae6acb793eec4381b9835464c593f2ab9acbe /engines/avalanche | |
parent | cf8057379942eaba99bd4b98f2986910e90b6e86 (diff) | |
download | scummvm-rg350-b916ab6f0247a0e9da36442d8dd6fd6834cd0ee4.tar.gz scummvm-rg350-b916ab6f0247a0e9da36442d8dd6fd6834cd0ee4.tar.bz2 scummvm-rg350-b916ab6f0247a0e9da36442d8dd6fd6834cd0ee4.zip |
AVALANCHE: Messing around with GameDescription.
Diffstat (limited to 'engines/avalanche')
-rw-r--r-- | engines/avalanche/avalanche.cpp | 2 | ||||
-rw-r--r-- | engines/avalanche/avalanche.h | 8 | ||||
-rw-r--r-- | engines/avalanche/detection.cpp | 268 |
3 files changed, 144 insertions, 134 deletions
diff --git a/engines/avalanche/avalanche.cpp b/engines/avalanche/avalanche.cpp index d1a19b89d2..f66e293aed 100644 --- a/engines/avalanche/avalanche.cpp +++ b/engines/avalanche/avalanche.cpp @@ -41,7 +41,7 @@ namespace Avalanche { AvalancheEngine *AvalancheEngine::s_Engine = 0; - AvalancheEngine::AvalancheEngine(OSystem *syst, const ADGameDescription *gd) : Engine(syst), _gameDescription(gd) { + AvalancheEngine::AvalancheEngine(OSystem *syst, const AvalancheGameDescription *gd) : Engine(syst), _gameDescription(gd) { _system = syst; _console = new AvalancheConsole(this); _rnd = 0; diff --git a/engines/avalanche/avalanche.h b/engines/avalanche/avalanche.h index b0b42ac409..6837ea5aa7 100644 --- a/engines/avalanche/avalanche.h +++ b/engines/avalanche/avalanche.h @@ -38,11 +38,13 @@ class RandomSource; namespace Avalanche { +struct AvalancheGameDescription; + static const int kSavegameVersion = 1; class AvalancheEngine : public Engine { public: - AvalancheEngine(OSystem *syst, const ADGameDescription *gd); + AvalancheEngine(OSystem *syst, const AvalancheGameDescription *gd); ~AvalancheEngine(); OSystem *_system; @@ -51,11 +53,11 @@ public: Common::RandomSource *_rnd; - const ADGameDescription *_gameDescription; + const AvalancheGameDescription *_gameDescription; uint32 getFeatures() const; const char *getGameId() const; - void initGame(const ADGameDescription *gd); + void initGame(const AvalancheGameDescription *gd); Common::Platform getPlatform() const; diff --git a/engines/avalanche/detection.cpp b/engines/avalanche/detection.cpp index 7ab4101844..10d23bbb7e 100644 --- a/engines/avalanche/detection.cpp +++ b/engines/avalanche/detection.cpp @@ -34,16 +34,24 @@ namespace Avalanche { +struct AvalancheGameDescription { + ADGameDescription desc; +}; + uint32 AvalancheEngine::getFeatures() const { - return _gameDescription->flags; + return _gameDescription->desc.flags; } const char *AvalancheEngine::getGameId() const { - return _gameDescription->gameid; + return _gameDescription->desc.gameid; } +static const PlainGameDescriptor avalancheGames[] = { + {"avalot", "Lord Avalot d'Argent"}, + {0, 0} +}; + static const ADGameDescription gameDescriptions[] = { - // Avalanche English { "Avalanche", 0, { @@ -52,7 +60,7 @@ static const ADGameDescription gameDescriptions[] = { AD_LISTEND }, Common::EN_ANY, - Common::kPlatformPCEngine, + Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO0() }, @@ -62,7 +70,7 @@ static const ADGameDescription gameDescriptions[] = { class AvalancheMetaEngine : public AdvancedMetaEngine { public: - AvalancheMetaEngine() : AdvancedMetaEngine(gameDescriptions, sizeof(ADGameDescription), 0) { + AvalancheMetaEngine() : AdvancedMetaEngine(gameDescriptions, sizeof(AvalancheGameDescription), avalancheGames) { } const char *getName() const { @@ -76,135 +84,135 @@ public: bool createInstance(OSystem *syst, Engine **engine, const ADGameDescription *gd) const; bool hasFeature(MetaEngineFeature f) const; - int getMaximumSaveSlot() const; + /*int getMaximumSaveSlot() const; SaveStateList listSaves(const char *target) const; SaveStateDescriptor querySaveMetaInfos(const char *target, int slot) const; - void removeSaveState(const char *target, int slot) const; + void removeSaveState(const char *target, int slot) const;*/ }; bool AvalancheMetaEngine::createInstance(OSystem *syst, Engine **engine, const ADGameDescription *gd) const { - if (gd) { - *engine = new AvalancheEngine(syst, (const ADGameDescription *)gd); - ((AvalancheEngine *)*engine)->initGame((const ADGameDescription *)gd); - } + if (gd) /*{*/ + *engine = new AvalancheEngine(syst, (const AvalancheGameDescription *)gd); + /* ((AvalancheEngine *)*engine)->initGame((const ADGameDescription *)gd); + }*/ return gd != 0; } bool AvalancheMetaEngine::hasFeature(MetaEngineFeature f) const { - return - (f == kSupportsListSaves) || - (f == kSupportsLoadingDuringStartup) || - (f == kSupportsDeleteSave) || - (f == kSavesSupportMetaInfo) || - (f == kSavesSupportThumbnail) || - (f == kSavesSupportCreationDate); -} - -int AvalancheMetaEngine::getMaximumSaveSlot() const { return 99; } - -SaveStateList AvalancheMetaEngine::listSaves(const char *target) const { - Common::SaveFileManager *saveFileMan = g_system->getSavefileManager(); - Common::StringArray filenames; - Common::String pattern = target; - pattern += "-??.SAV"; - - filenames = saveFileMan->listSavefiles(pattern); - sort(filenames.begin(), filenames.end()); // Sort (hopefully ensuring we are sorted numerically..) - - SaveStateList saveList; - char slot[3]; - int slotNum = 0; - for (Common::StringArray::const_iterator filename = filenames.begin(); filename != filenames.end(); ++filename) { - slot[0] = filename->c_str()[filename->size() - 6]; - slot[1] = filename->c_str()[filename->size() - 5]; - slot[2] = '\0'; - // Obtain the last 2 digits of the filename (without extension), since they correspond to the save slot - slotNum = atoi(slot); - if (slotNum >= 0 && slotNum <= getMaximumSaveSlot()) { - Common::InSaveFile *file = saveFileMan->openForLoading(*filename); - if (file) { - int saveVersion = file->readByte(); - - if (saveVersion != kSavegameVersion) { - warning("Savegame of incompatible version"); - delete file; - continue; - } - - // read name - uint16 nameSize = file->readUint16BE(); - if (nameSize >= 255) { - delete file; - continue; - } - char name[256]; - file->read(name, nameSize); - name[nameSize] = 0; - - saveList.push_back(SaveStateDescriptor(slotNum, name)); - delete file; - } - } - } - - return saveList; + return false; + /*(f == kSupportsListSaves) || + (f == kSupportsLoadingDuringStartup) || + (f == kSupportsDeleteSave) || + (f == kSavesSupportMetaInfo) || + (f == kSavesSupportThumbnail) || + (f == kSavesSupportCreationDate);*/ } -SaveStateDescriptor AvalancheMetaEngine::querySaveMetaInfos(const char *target, int slot) const { - Common::String fileName = Common::String::format("%s-%02d.SAV", target, slot); - Common::InSaveFile *file = g_system->getSavefileManager()->openForLoading(fileName); - - if (file) { - int saveVersion = file->readByte(); - - if (saveVersion != kSavegameVersion) { - warning("Savegame of incompatible version"); - delete file; - return SaveStateDescriptor(); - } - - uint32 saveNameLength = file->readUint16BE(); - char saveName[256]; - file->read(saveName, saveNameLength); - saveName[saveNameLength] = 0; - - SaveStateDescriptor desc(slot, saveName); - - Graphics::Surface *const thumbnail = Graphics::loadThumbnail(*file); - desc.setThumbnail(thumbnail); - - desc.setDeletableFlag(true); - desc.setWriteProtectedFlag(false); - - uint32 saveDate = file->readUint32BE(); - uint16 saveTime = file->readUint16BE(); - - int day = (saveDate >> 24) & 0xFF; - int month = (saveDate >> 16) & 0xFF; - int year = saveDate & 0xFFFF; - - desc.setSaveDate(year, month, day); - - int hour = (saveTime >> 8) & 0xFF; - int minutes = saveTime & 0xFF; - - desc.setSaveTime(hour, minutes); - - // Slot 0 is used for the 'restart game' save in all Avalanche games, thus - // we prevent it from being deleted. - desc.setDeletableFlag(slot != 0); - desc.setWriteProtectedFlag(slot == 0); - - delete file; - return desc; - } - return SaveStateDescriptor(); -} - -void AvalancheMetaEngine::removeSaveState(const char *target, int slot) const { - Common::String fileName = Common::String::format("%s-%02d.SAV", target, slot); - g_system->getSavefileManager()->removeSavefile(fileName); -} +//int AvalancheMetaEngine::getMaximumSaveSlot() const { return 99; } +// +//SaveStateList AvalancheMetaEngine::listSaves(const char *target) const { +// Common::SaveFileManager *saveFileMan = g_system->getSavefileManager(); +// Common::StringArray filenames; +// Common::String pattern = target; +// pattern += "-??.SAV"; +// +// filenames = saveFileMan->listSavefiles(pattern); +// sort(filenames.begin(), filenames.end()); // Sort (hopefully ensuring we are sorted numerically..) +// +// SaveStateList saveList; +// char slot[3]; +// int slotNum = 0; +// for (Common::StringArray::const_iterator filename = filenames.begin(); filename != filenames.end(); ++filename) { +// slot[0] = filename->c_str()[filename->size() - 6]; +// slot[1] = filename->c_str()[filename->size() - 5]; +// slot[2] = '\0'; +// // Obtain the last 2 digits of the filename (without extension), since they correspond to the save slot +// slotNum = atoi(slot); +// if (slotNum >= 0 && slotNum <= getMaximumSaveSlot()) { +// Common::InSaveFile *file = saveFileMan->openForLoading(*filename); +// if (file) { +// int saveVersion = file->readByte(); +// +// if (saveVersion != kSavegameVersion) { +// warning("Savegame of incompatible version"); +// delete file; +// continue; +// } +// +// // read name +// uint16 nameSize = file->readUint16BE(); +// if (nameSize >= 255) { +// delete file; +// continue; +// } +// char name[256]; +// file->read(name, nameSize); +// name[nameSize] = 0; +// +// saveList.push_back(SaveStateDescriptor(slotNum, name)); +// delete file; +// } +// } +// } +// +// return saveList; +//} +// +//SaveStateDescriptor AvalancheMetaEngine::querySaveMetaInfos(const char *target, int slot) const { +// Common::String fileName = Common::String::format("%s-%02d.SAV", target, slot); +// Common::InSaveFile *file = g_system->getSavefileManager()->openForLoading(fileName); +// +// if (file) { +// int saveVersion = file->readByte(); +// +// if (saveVersion != kSavegameVersion) { +// warning("Savegame of incompatible version"); +// delete file; +// return SaveStateDescriptor(); +// } +// +// uint32 saveNameLength = file->readUint16BE(); +// char saveName[256]; +// file->read(saveName, saveNameLength); +// saveName[saveNameLength] = 0; +// +// SaveStateDescriptor desc(slot, saveName); +// +// Graphics::Surface *const thumbnail = Graphics::loadThumbnail(*file); +// desc.setThumbnail(thumbnail); +// +// desc.setDeletableFlag(true); +// desc.setWriteProtectedFlag(false); +// +// uint32 saveDate = file->readUint32BE(); +// uint16 saveTime = file->readUint16BE(); +// +// int day = (saveDate >> 24) & 0xFF; +// int month = (saveDate >> 16) & 0xFF; +// int year = saveDate & 0xFFFF; +// +// desc.setSaveDate(year, month, day); +// +// int hour = (saveTime >> 8) & 0xFF; +// int minutes = saveTime & 0xFF; +// +// desc.setSaveTime(hour, minutes); +// +// // Slot 0 is used for the 'restart game' save in all Avalanche games, thus +// // we prevent it from being deleted. +// desc.setDeletableFlag(slot != 0); +// desc.setWriteProtectedFlag(slot == 0); +// +// delete file; +// return desc; +// } +// return SaveStateDescriptor(); +//} +// +//void AvalancheMetaEngine::removeSaveState(const char *target, int slot) const { +// Common::String fileName = Common::String::format("%s-%02d.SAV", target, slot); +// g_system->getSavefileManager()->removeSavefile(fileName); +//} } // End of namespace Avalanche @@ -214,10 +222,10 @@ REGISTER_PLUGIN_DYNAMIC(AVALANCHE, PLUGIN_TYPE_ENGINE, Avalanche::AvalancheMetaE REGISTER_PLUGIN_STATIC(AVALANCHE, PLUGIN_TYPE_ENGINE, Avalanche::AvalancheMetaEngine); #endif -namespace Avalanche { - -void AvalancheEngine::initGame(const ADGameDescription *gd) { - _platform = gd->platform; -} - -} // End of namespace Avalanche +//namespace Avalanche { +// +//void AvalancheEngine::initGame(const ADGameDescription *gd) { +// _platform = gd->platform; +//} +// +//} // End of namespace Avalanche |