aboutsummaryrefslogtreecommitdiff
path: root/engines/gnap/detection.cpp
diff options
context:
space:
mode:
authorStrangerke2016-05-19 00:13:01 +0200
committerStrangerke2016-05-19 00:13:01 +0200
commit3bf35331abd506805bbc64537d6fb9b7969d10e4 (patch)
treea4cab5d4144651f528a62962eb612324f594ac62 /engines/gnap/detection.cpp
parent931846182baf040101886d8d1ea228f28345adf5 (diff)
downloadscummvm-rg350-3bf35331abd506805bbc64537d6fb9b7969d10e4.tar.gz
scummvm-rg350-3bf35331abd506805bbc64537d6fb9b7969d10e4.tar.bz2
scummvm-rg350-3bf35331abd506805bbc64537d6fb9b7969d10e4.zip
GNAP: Add thumbnails, rewrite partially querySaveMetaInfos.
Gnap's hand and device are in the middle of the screen, there's place for improvement
Diffstat (limited to 'engines/gnap/detection.cpp')
-rw-r--r--engines/gnap/detection.cpp38
1 files changed, 18 insertions, 20 deletions
diff --git a/engines/gnap/detection.cpp b/engines/gnap/detection.cpp
index 616c26b04b..b68d64c4ed 100644
--- a/engines/gnap/detection.cpp
+++ b/engines/gnap/detection.cpp
@@ -88,10 +88,8 @@ bool GnapMetaEngine::hasFeature(MetaEngineFeature f) const {
(f == kSupportsLoadingDuringStartup) ||
(f == kSupportsDeleteSave) ||
(f == kSavesSupportMetaInfo) ||
- (f == kSavesSupportCreationDate);
-#if 0
(f == kSavesSupportThumbnail) ||
-#endif
+ (f == kSavesSupportCreationDate);
}
bool Gnap::GnapEngine::hasFeature(EngineFeature f) const {
@@ -147,35 +145,35 @@ SaveStateDescriptor GnapMetaEngine::querySaveMetaInfos(const char *target, int s
Common::String fileName = Common::String::format("%s.%03d", target, slot);
Common::InSaveFile *file = g_system->getSavefileManager()->openForLoading(fileName);
if (file) {
+ char saveIdentBuffer[5];
+ file->read(saveIdentBuffer, 5);
- int32 version = file->readSint32BE();
- if (version != GNAP_SAVEGAME_VERSION) {
+ int32 version = file->readByte();
+ if (version > GNAP_SAVEGAME_VERSION) {
delete file;
return SaveStateDescriptor();
}
- uint32 saveNameLength = file->readUint16BE();
char saveName[256];
- file->read(saveName, saveNameLength);
- saveName[saveNameLength] = 0;
+ char ch;
+ int i = 0;
+ while ((ch = (char)file->readByte()) != '\0')
+ saveName[i++] = ch;
SaveStateDescriptor desc(slot, saveName);
- Graphics::Surface *const thumbnail = Graphics::loadThumbnail(*file);
- desc.setThumbnail(thumbnail);
-
- uint32 saveDate = file->readUint32BE();
- uint16 saveTime = file->readUint16BE();
+ if (version != 1) {
+ Graphics::Surface *const thumbnail = Graphics::loadThumbnail(*file);
+ desc.setThumbnail(thumbnail);
+ }
- int day = (saveDate >> 24) & 0xFF;
- int month = (saveDate >> 16) & 0xFF;
- int year = saveDate & 0xFFFF;
+ int year = file->readSint16LE();
+ int month = file->readSint16LE();
+ int day = file->readSint16LE();
+ int hour = file->readSint16LE();
+ int minutes = file->readSint16LE();
desc.setSaveDate(year, month, day);
-
- int hour = (saveTime >> 8) & 0xFF;
- int minutes = saveTime & 0xFF;
-
desc.setSaveTime(hour, minutes);
delete file;