diff options
author | Paul Gilbert | 2017-06-17 13:39:13 -0400 |
---|---|---|
committer | Paul Gilbert | 2017-06-17 13:39:13 -0400 |
commit | 9dbd9c567e298f076be0b1ce0a87b3db5566e3c9 (patch) | |
tree | a5ff22ebc96c14e25978a7854d18b24cc7733222 /engines/titanic | |
parent | 9b09900a0745a016b0ca13ce88bb9a26ab6e0547 (diff) | |
download | scummvm-rg350-9dbd9c567e298f076be0b1ce0a87b3db5566e3c9.tar.gz scummvm-rg350-9dbd9c567e298f076be0b1ce0a87b3db5566e3c9.tar.bz2 scummvm-rg350-9dbd9c567e298f076be0b1ce0a87b3db5566e3c9.zip |
TITANIC: Fix maintaining total playtime for savegames
Diffstat (limited to 'engines/titanic')
-rw-r--r-- | engines/titanic/core/project_item.cpp | 3 | ||||
-rw-r--r-- | engines/titanic/events.cpp | 11 | ||||
-rw-r--r-- | engines/titanic/events.h | 13 |
3 files changed, 24 insertions, 3 deletions
diff --git a/engines/titanic/core/project_item.cpp b/engines/titanic/core/project_item.cpp index 1093a5c6e7..205eecfd2f 100644 --- a/engines/titanic/core/project_item.cpp +++ b/engines/titanic/core/project_item.cpp @@ -177,6 +177,7 @@ void CProjectItem::loadGame(int slotId) { TitanicSavegameHeader header; readSavegameHeader(&file, header); delete header._thumbnail; + g_vm->_events->setTotalPlayTicks(header._totalFrames); // Load the contents in CProjectItem *newProject = loadData(&file); @@ -545,7 +546,7 @@ void CProjectItem::writeSavegameHeader(SimpleFile *file, TitanicSavegameHeader & file->writeUint16LE(td.tm_mday); file->writeUint16LE(td.tm_hour); file->writeUint16LE(td.tm_min); - file->writeUint32LE(g_vm->_events->getFrameCounter()); + file->writeUint32LE(g_vm->_events->getTotalPlayTicks()); } Graphics::Surface *CProjectItem::createThumbnail() { diff --git a/engines/titanic/events.cpp b/engines/titanic/events.cpp index d29a19dec6..0d0fcaf753 100644 --- a/engines/titanic/events.cpp +++ b/engines/titanic/events.cpp @@ -31,7 +31,7 @@ namespace Titanic { Events::Events(TitanicEngine *vm): _vm(vm), _frameCounter(1), - _priorFrameTime(0), _specialButtons(0) { + _totalFrames(0), _priorFrameTime(0), _specialButtons(0) { } void Events::pollEvents() { @@ -109,6 +109,7 @@ bool Events::checkForNextFrameCounter() { uint32 milli = g_system->getMillis(); if ((milli - _priorFrameTime) >= GAME_FRAME_TIME) { ++_frameCounter; + ++_totalFrames; _priorFrameTime = milli; // Handle any idle updates @@ -130,6 +131,14 @@ uint32 Events::getTicksCount() const { return _frameCounter * GAME_FRAME_TIME; } +uint32 Events::getTotalPlayTicks() const { + return _totalFrames; +} + +void Events::setTotalPlayTicks(uint frames) { + _totalFrames = frames; +} + void Events::sleep(uint time) { uint32 delayEnd = g_system->getMillis() + time; diff --git a/engines/titanic/events.h b/engines/titanic/events.h index 52e900c2ef..e14fbd8637 100644 --- a/engines/titanic/events.h +++ b/engines/titanic/events.h @@ -91,6 +91,7 @@ private: Common::Stack<CEventTarget *> _eventTargets; uint32 _frameCounter; uint32 _priorFrameTime; + uint _totalFrames; Common::Point _mousePos; uint _specialButtons; @@ -147,11 +148,21 @@ public: uint32 getFrameCounter() const { return _frameCounter; } /** - * Get the elapsed playtime + * Return the current game ticks */ uint32 getTicksCount() const; /** + * Get the total number of playtime frames/ticks + */ + uint32 getTotalPlayTicks() const; + + /** + * Set the total number of frames/ticks played + */ + void setTotalPlayTicks(uint frames); + + /** * Sleep for a specified period of time */ void sleep(uint time); |