diff options
author | Borja Lorente | 2016-08-21 16:42:19 +0200 |
---|---|---|
committer | Borja Lorente | 2016-08-21 16:42:19 +0200 |
commit | b7b258474f0a135f626ec3d46d19b4f54926f50f (patch) | |
tree | a5a29122eb8dfc74b08f95768c2f0c3546a5e27e /engines | |
parent | 0d868742d4016f8f50a8135c20115d911d920cf5 (diff) | |
download | scummvm-rg350-b7b258474f0a135f626ec3d46d19b4f54926f50f.tar.gz scummvm-rg350-b7b258474f0a135f626ec3d46d19b4f54926f50f.tar.bz2 scummvm-rg350-b7b258474f0a135f626ec3d46d19b4f54926f50f.zip |
MACVENTURE: Add creation date and playtime to savegames
Diffstat (limited to 'engines')
-rw-r--r-- | engines/macventure/detection.cpp | 4 | ||||
-rw-r--r-- | engines/macventure/saveload.cpp | 46 |
2 files changed, 48 insertions, 2 deletions
diff --git a/engines/macventure/detection.cpp b/engines/macventure/detection.cpp index 801cc599cd..10676d5b25 100644 --- a/engines/macventure/detection.cpp +++ b/engines/macventure/detection.cpp @@ -84,7 +84,9 @@ bool MacVentureMetaEngine::hasFeature(MetaEngineFeature f) const { (f == kSupportsLoadingDuringStartup) || (f == kSupportsDeleteSave) || (f == kSavesSupportMetaInfo) || - (f == kSavesSupportThumbnail); + (f == kSavesSupportThumbnail) || + (f == kSavesSupportCreationDate) || + (f == kSavesSupportPlayTime); } bool MacVentureEngine::hasFeature(EngineFeature f) const { diff --git a/engines/macventure/saveload.cpp b/engines/macventure/saveload.cpp index a1a5e3c244..53736302d2 100644 --- a/engines/macventure/saveload.cpp +++ b/engines/macventure/saveload.cpp @@ -68,19 +68,63 @@ SaveStateDescriptor loadMetaData(Common::SeekableReadStream *s, int slot) { } desc.setDescription(name); + // Load date + uint32 saveDate = s->readUint32LE(); + int day = (saveDate >> 24) & 0xFF; + int month = (saveDate >> 16) & 0xFF; + int year = saveDate & 0xFFFF; + desc.setSaveDate(year, month, day); + + uint16 saveTime = s->readUint16LE(); + int hour = (saveTime >> 8) & 0xFF; + int minutes = saveTime & 0xFF; + desc.setSaveTime(hour, minutes); + + // Load playtime + uint32 playTime = s->readUint32LE(); + desc.setPlayTime(playTime * 1000); + return desc; } +uint saveCurrentDate(Common::OutSaveFile *file) { + TimeDate curTime; + g_system->getTimeAndDate(curTime); + + uint32 saveDate = ((curTime.tm_mday & 0xFF) << 24) | (((curTime.tm_mon + 1) & 0xFF) << 16) | ((curTime.tm_year + 1900) & 0xFFFF); + uint16 saveTime = ((curTime.tm_hour & 0xFF) << 8) | ((curTime.tm_min) & 0xFF); + + file->writeUint32LE(saveDate); + file->writeUint16LE(saveTime); + + // Return the number of bytes occupied + return 6; +} + +uint savePlayTime(Common::OutSaveFile *file) { + uint32 playTime = g_engine->getTotalPlayTime() / 1000; + file->writeUint32LE(playTime); + // Return the number of bytes occupied + return 4; +} + void writeMetaData(Common::OutSaveFile *file, Common::String desc) { + + // Write thumbnail uint thumbSize = file->pos(); Graphics::saveThumbnail(*file); thumbSize = file->pos() - thumbSize; + // Write description file->writeUint32BE(desc.size()); file->writeString(desc); + + uint dateSize = saveCurrentDate(file); + uint playTimeSize = savePlayTime(file); + file->writeUint32BE(MACVENTURE_SAVE_HEADER); file->writeByte(MACVENTURE_SAVE_VERSION); - file->writeUint32BE(4 + desc.size() + thumbSize); + file->writeUint32BE(4 + desc.size() + dateSize + playTimeSize + thumbSize); } Common::Error MacVentureEngine::loadGameState(int slot) { |