diff options
Diffstat (limited to 'engines/prince/detection.cpp')
-rw-r--r-- | engines/prince/detection.cpp | 38 |
1 files changed, 21 insertions, 17 deletions
diff --git a/engines/prince/detection.cpp b/engines/prince/detection.cpp index a8fa305332..2147c23116 100644 --- a/engines/prince/detection.cpp +++ b/engines/prince/detection.cpp @@ -21,9 +21,15 @@ */ #include "prince/prince.h" +#include "engines/advancedDetector.h" namespace Prince { +struct PrinceGameDescription { + ADGameDescription desc; + PrinceGameType gameType; +}; + int PrinceEngine::getGameType() const { return _gameDescription->gameType; } @@ -43,7 +49,7 @@ Common::Language PrinceEngine::getLanguage() const { } // End of namespace Prince static const PlainGameDescriptor princeGames[] = { - {"prince", "Prince Game"}, + {"prince", "The Prince and the Coward"}, {0, 0} }; @@ -52,11 +58,11 @@ static const PrinceGameDescription gameDescriptions[] = { { { "prince", - "Galador", + "Galador: Der Fluch des Prinzen", AD_ENTRY1s("databank.ptc", "5fa03833177331214ec1354761b1d2ee", 3565031), Common::DE_DEU, Common::kPlatformWindows, - ADGF_TESTING, + ADGF_USEEXTRAASTITLE | ADGF_TESTING, GUIO1(GUIO_NONE) }, kPrinceDataDE @@ -68,7 +74,7 @@ static const PrinceGameDescription gameDescriptions[] = { AD_ENTRY1s("databank.ptc", "48ec9806bda9d152acbea8ce31c93c49", 3435298), Common::PL_POL, Common::kPlatformWindows, - ADGF_TESTING, + ADGF_USEEXTRAASTITLE | ADGF_TESTING, GUIO1(GUIO_NONE) }, kPrinceDataPL @@ -76,11 +82,11 @@ static const PrinceGameDescription gameDescriptions[] = { { { "prince", - "Galador", + "", AD_ENTRY1s("talktxt.dat", "02bb2372f19aca3c65896ed81b2cefb3", 125702), Common::RU_RUS, Common::kPlatformWindows, - ADGF_TESTING, + ADGF_TESTING | GF_EXTRACTED, GUIO1(GUIO_NONE) }, kPrinceDataDE @@ -88,19 +94,19 @@ static const PrinceGameDescription gameDescriptions[] = { { { "prince", - "Galador", + "", AD_ENTRY1s("databank.ptc", "a67b55730f3d7064921bd2a59e1063a3", 3892982), Common::RU_RUS, Common::kPlatformWindows, - ADGF_TESTING, + ADGF_TESTING | GF_NOVOICES, GUIO1(GUIO_NONE) }, - kPrinceDataPL + kPrinceDataDE }, { { "prince", - "The Prince and the Coward", + "", { {"databank.ptc", 0, "5fa03833177331214ec1354761b1d2ee", 3565031}, {"prince_translation.dat", 0, 0, -1}, @@ -116,7 +122,7 @@ static const PrinceGameDescription gameDescriptions[] = { { { "prince", - "The Prince and the Coward", + "", { {"databank.ptc", 0, "48ec9806bda9d152acbea8ce31c93c49", 3435298}, {"prince_translation.dat", 0, 0, -1}, @@ -169,6 +175,7 @@ bool PrinceMetaEngine::hasFeature(MetaEngineFeature f) const { (f == kSavesSupportMetaInfo) || (f == kSavesSupportThumbnail) || (f == kSavesSupportCreationDate) || + (f == kSavesSupportPlayTime) || (f == kSupportsListSaves) || (f == kSupportsLoadingDuringStartup) || (f == kSimpleSavesNames); @@ -188,7 +195,6 @@ SaveStateList PrinceMetaEngine::listSaves(const char *target) const { pattern += ".###"; filenames = saveFileMan->listSavefiles(pattern); - sort(filenames.begin(), filenames.end()); // Sort (hopefully ensuring we are sorted numerically..) SaveStateList saveList; for (Common::StringArray::const_iterator filename = filenames.begin(); filename != filenames.end(); filename++) { @@ -209,10 +215,6 @@ SaveStateList PrinceMetaEngine::listSaves(const char *target) const { // Valid savegame if (Prince::PrinceEngine::readSavegameHeader(file, header)) { saveList.push_back(SaveStateDescriptor(slotNum, header.saveName)); - if (header.thumbnail) { - header.thumbnail->free(); - delete header.thumbnail; - } } } else { // Must be an original format savegame @@ -224,6 +226,7 @@ SaveStateList PrinceMetaEngine::listSaves(const char *target) const { } } + Common::sort(saveList.begin(), saveList.end(), SaveStateDescriptorSlotComparator()); return saveList; } @@ -239,7 +242,7 @@ SaveStateDescriptor PrinceMetaEngine::querySaveMetaInfos(const char *target, int f->read(buffer, kSavegameStrSize + 1); bool hasHeader = !strncmp(buffer, kSavegameStr, kSavegameStrSize + 1) && - Prince::PrinceEngine::readSavegameHeader(f, header); + Prince::PrinceEngine::readSavegameHeader(f, header, false); delete f; if (!hasHeader) { @@ -252,6 +255,7 @@ SaveStateDescriptor PrinceMetaEngine::querySaveMetaInfos(const char *target, int desc.setThumbnail(header.thumbnail); desc.setSaveDate(header.saveYear, header.saveMonth, header.saveDay); desc.setSaveTime(header.saveHour, header.saveMinutes); + desc.setPlayTime(header.playTime * 1000); return desc; } |