diff options
Diffstat (limited to 'engines/sword1/control.cpp')
-rw-r--r-- | engines/sword1/control.cpp | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/engines/sword1/control.cpp b/engines/sword1/control.cpp index ce237fe9f9..40854e1b4e 100644 --- a/engines/sword1/control.cpp +++ b/engines/sword1/control.cpp @@ -1117,7 +1117,9 @@ void Control::saveGameToFile(uint8 slot) { outf->writeUint32BE(saveDate); outf->writeUint16BE(saveTime); - // TODO: played time + + uint32 currentTime = _system->getMillis() / 1000; + outf->writeUint32BE(currentTime - SwordEngine::_systemVars.engineStartTime); _objMan->saveLiveList(liveBuf); for (cnt = 0; cnt < TOTAL_SECTIONS; cnt++) @@ -1165,7 +1167,7 @@ bool Control::restoreGameFromFile(uint8 slot) { inf->skip(40); // skip description uint8 saveVersion = inf->readByte(); - if (saveVersion != SAVEGAME_VERSION) { + if (saveVersion > SAVEGAME_VERSION) { warning("Different save game version"); return false; } @@ -1183,7 +1185,13 @@ bool Control::restoreGameFromFile(uint8 slot) { inf->readUint32BE(); // save date inf->readUint16BE(); // save time - // TODO: played time + + if (saveVersion < 2) { // Before version 2 we didn't had play time feature + SwordEngine::_systemVars.engineStartTime = _system->getMillis() / 1000; // Start counting + } else { + uint32 currentTime = _system->getMillis() / 1000; + SwordEngine::_systemVars.engineStartTime = currentTime - inf->readUint32BE(); // Engine start time + } _restoreBuf = (uint8*)malloc( TOTAL_SECTIONS * 2 + @@ -1281,7 +1289,7 @@ bool Control::convertSaveGame(uint8 slot, char* desc) { newSave->writeUint32BE(saveDate); newSave->writeUint16BE(saveTime); - // TODO: played time + newSave->writeUint32BE(0); // We don't have playtime info when converting, so we start from 0. newSave->write(saveData, dataSize); |