aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThierry Crozat2013-09-01 22:04:20 +0100
committerThierry Crozat2013-09-01 22:04:30 +0100
commit8216e6dabfb2f460ff92fd7d04688fb0b34072fa (patch)
tree51b297efb6f6b2bcda5e481eb2d3c6682202ba56
parent3ab88c464aed6ec81f1b9596914b17ffb4e4ab99 (diff)
downloadscummvm-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.cpp20
-rw-r--r--engines/mortevielle/mortevielle.h2
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;