aboutsummaryrefslogtreecommitdiff
path: root/engines/sci/engine/savegame.cpp
diff options
context:
space:
mode:
authorColin Snover2016-01-14 10:54:27 -0600
committerColin Snover2016-01-14 16:13:22 -0600
commit76bd2eeb2e580a6a5d0b883dfc3e6b3c6e84e6b3 (patch)
treed6485ed38a1394ba2282d588c2be54a76b87dbdc /engines/sci/engine/savegame.cpp
parentfb891e4c081d5f0678cdda3855daa82728dc0ac0 (diff)
downloadscummvm-rg350-76bd2eeb2e580a6a5d0b883dfc3e6b3c6e84e6b3.tar.gz
scummvm-rg350-76bd2eeb2e580a6a5d0b883dfc3e6b3c6e84e6b3.tar.bz2
scummvm-rg350-76bd2eeb2e580a6a5d0b883dfc3e6b3c6e84e6b3.zip
SCI: Use tick-based timing more consistently
This means tick-based times are saved to save games, as in SCI32 engine, instead of seconds, which are not accurate enough. It also means places in SCI engine that need to access game ticks should do so through g_sci instead of g_system or g_engine.
Diffstat (limited to 'engines/sci/engine/savegame.cpp')
-rw-r--r--engines/sci/engine/savegame.cpp12
1 files changed, 10 insertions, 2 deletions
diff --git a/engines/sci/engine/savegame.cpp b/engines/sci/engine/savegame.cpp
index 3103be1463..481ae75907 100644
--- a/engines/sci/engine/savegame.cpp
+++ b/engines/sci/engine/savegame.cpp
@@ -273,7 +273,11 @@ static void sync_SavegameMetadata(Common::Serializer &s, SavegameMetadata &obj)
if (s.getVersion() >= 26)
s.syncAsUint32LE(obj.playTime);
} else {
- obj.playTime = g_engine->getTotalPlayTime() / 1000;
+ if (s.getVersion() >= 34) {
+ obj.playTime = g_sci->getTickCount();
+ } else {
+ obj.playTime = g_engine->getTotalPlayTime() / 1000;
+ }
s.syncAsUint32LE(obj.playTime);
}
}
@@ -1031,7 +1035,11 @@ void gamestate_restore(EngineState *s, Common::SeekableReadStream *fh) {
// Time state:
s->lastWaitTime = g_system->getMillis();
s->_screenUpdateTime = g_system->getMillis();
- g_engine->setTotalPlayTime(meta.playTime * 1000);
+ if (meta.version >= 34) {
+ g_sci->setTickCount(meta.playTime);
+ } else {
+ g_engine->setTotalPlayTime(meta.playTime * 1000);
+ }
if (g_sci->_gfxPorts)
g_sci->_gfxPorts->saveLoadWithSerializer(ser);