aboutsummaryrefslogtreecommitdiff
path: root/engines/macventure
diff options
context:
space:
mode:
authorBorja Lorente2016-08-21 16:42:19 +0200
committerBorja Lorente2016-08-21 16:42:19 +0200
commitb7b258474f0a135f626ec3d46d19b4f54926f50f (patch)
treea5a29122eb8dfc74b08f95768c2f0c3546a5e27e /engines/macventure
parent0d868742d4016f8f50a8135c20115d911d920cf5 (diff)
downloadscummvm-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/macventure')
-rw-r--r--engines/macventure/detection.cpp4
-rw-r--r--engines/macventure/saveload.cpp46
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) {