diff options
author | Thierry Crozat | 2013-09-01 22:04:20 +0100 |
---|---|---|
committer | Thierry Crozat | 2013-09-01 22:04:30 +0100 |
commit | 8216e6dabfb2f460ff92fd7d04688fb0b34072fa (patch) | |
tree | 51b297efb6f6b2bcda5e481eb2d3c6682202ba56 | |
parent | 3ab88c464aed6ec81f1b9596914b17ffb4e4ab99 (diff) | |
download | scummvm-rg350-8216e6dabfb2f460ff92fd7d04688fb0b34072fa.tar.gz scummvm-rg350-8216e6dabfb2f460ff92fd7d04688fb0b34072fa.tar.bz2 scummvm-rg350-8216e6dabfb2f460ff92fd7d04688fb0b34072fa.zip |
MORTEVIELLE: Freeze clock in game when pausing the game
-rw-r--r-- | engines/mortevielle/mortevielle.cpp | 20 | ||||
-rw-r--r-- | engines/mortevielle/mortevielle.h | 2 |
2 files changed, 22 insertions, 0 deletions
diff --git a/engines/mortevielle/mortevielle.cpp b/engines/mortevielle/mortevielle.cpp index f13f8cb65b..d434150977 100644 --- a/engines/mortevielle/mortevielle.cpp +++ b/engines/mortevielle/mortevielle.cpp @@ -63,6 +63,7 @@ MortevielleEngine::MortevielleEngine(OSystem *system, const MortevielleGameDescr _mouseClick = false; _inMainGameLoop = false; _quitGame = false; + _pauseStartTime = -1; _roomPresenceLuc = false; _roomPresenceIda = false; @@ -165,6 +166,25 @@ Common::String MortevielleEngine::generateSaveFilename(const Common::String &tar } /** + * Pause the game. + */ +void MortevielleEngine::pauseEngineIntern(bool pause) { + Engine::pauseEngineIntern(pause); + if (pause) { + if (_pauseStartTime == -1) + _pauseStartTime = readclock(); + } else { + if (_pauseStartTime != -1) { + int pauseEndTime = readclock(); + _currentTime += (pauseEndTime - _pauseStartTime); + if (_uptodatePresence) + _startTime += (pauseEndTime - _pauseStartTime); + } + _pauseStartTime = -1; + } +} + +/** * Initialize the game state */ Common::ErrorCode MortevielleEngine::initialize() { diff --git a/engines/mortevielle/mortevielle.h b/engines/mortevielle/mortevielle.h index cf49be1cf9..fc4961be8c 100644 --- a/engines/mortevielle/mortevielle.h +++ b/engines/mortevielle/mortevielle.h @@ -230,6 +230,7 @@ private: int _y; int _currentHourCount; int _currentTime; + int _pauseStartTime; Common::String _hintPctMessage; byte *_cfiecBuffer; @@ -446,6 +447,7 @@ public: virtual Common::Error loadGameState(int slot); virtual Common::Error saveGameState(int slot, const Common::String &desc); virtual Common::Error run(); + virtual void pauseEngineIntern(bool pause); uint32 getGameFlags() const; Common::Language getLanguage() const; Common::Language getOriginalLanguage() const; |