aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
authorFilippos Karapetis2012-11-11 23:32:07 +0200
committerFilippos Karapetis2012-11-11 23:32:07 +0200
commitfaa7579241b1abcedf1f177124c301d6eeafbf9f (patch)
tree9bbc7c88263a20575013f44625aa64a9086e101e /engines
parent1b5e96f42903b0cf3a5456e85a09c2c01eef0538 (diff)
downloadscummvm-rg350-faa7579241b1abcedf1f177124c301d6eeafbf9f.tar.gz
scummvm-rg350-faa7579241b1abcedf1f177124c301d6eeafbf9f.tar.bz2
scummvm-rg350-faa7579241b1abcedf1f177124c301d6eeafbf9f.zip
SAGA: Add support for played time
Diffstat (limited to 'engines')
-rw-r--r--engines/saga/detection.cpp8
-rw-r--r--engines/saga/saga.cpp2
-rw-r--r--engines/saga/saveload.cpp11
3 files changed, 16 insertions, 5 deletions
diff --git a/engines/saga/detection.cpp b/engines/saga/detection.cpp
index 9c178559f2..f6872c41ad 100644
--- a/engines/saga/detection.cpp
+++ b/engines/saga/detection.cpp
@@ -156,7 +156,8 @@ bool SagaMetaEngine::hasFeature(MetaEngineFeature f) const {
(f == kSupportsDeleteSave) ||
(f == kSavesSupportMetaInfo) ||
(f == kSavesSupportThumbnail) ||
- (f == kSavesSupportCreationDate);
+ (f == kSavesSupportCreationDate) ||
+ (f == kSavesSupportPlayTime);
}
bool Saga::SagaEngine::hasFeature(EngineFeature f) const {
@@ -270,7 +271,10 @@ SaveStateDescriptor SagaMetaEngine::querySaveMetaInfos(const char *target, int s
desc.setSaveTime(hour, minutes);
- // TODO: played time
+ if (version >= 8) {
+ uint32 playTime = in->readUint32BE();
+ desc.setPlayTime(playTime * 1000);
+ }
}
delete in;
diff --git a/engines/saga/saga.cpp b/engines/saga/saga.cpp
index 6e272d37c0..239a3be9db 100644
--- a/engines/saga/saga.cpp
+++ b/engines/saga/saga.cpp
@@ -202,6 +202,8 @@ SagaEngine::~SagaEngine() {
}
Common::Error SagaEngine::run() {
+ setTotalPlayTime(0);
+
// Assign default values to the config manager, in case settings are missing
ConfMan.registerDefault("talkspeed", "255");
ConfMan.registerDefault("subtitles", "true");
diff --git a/engines/saga/saveload.cpp b/engines/saga/saveload.cpp
index 6a5a7d8e14..3cd44eba40 100644
--- a/engines/saga/saveload.cpp
+++ b/engines/saga/saveload.cpp
@@ -34,7 +34,7 @@
#include "saga/scene.h"
#include "saga/script.h"
-#define CURRENT_SAGA_VER 7
+#define CURRENT_SAGA_VER 8
namespace Saga {
@@ -204,10 +204,11 @@ void SagaEngine::save(const char *fileName, const char *saveName) {
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);
+ uint32 playTime = g_engine->getTotalPlayTime() / 1000;
out->writeUint32BE(saveDate);
out->writeUint16BE(saveTime);
- // TODO: played time
+ out->writeUint32BE(playTime);
// Surrounding scene
out->writeSint32LE(_scene->getOutsetSceneNumber());
@@ -299,7 +300,11 @@ void SagaEngine::load(const char *fileName) {
in->readUint32BE(); // save date
in->readUint16BE(); // save time
- // TODO: played time
+
+ if (_saveHeader.version >= 8) {
+ uint32 playTime = in->readUint32BE();
+ g_engine->setTotalPlayTime(playTime * 1000);
+ }
}
// Clear pending events here, and don't process queued music events