diff options
| -rw-r--r-- | engines/kyra/kyra_hof.h | 4 | ||||
| -rw-r--r-- | engines/kyra/kyra_lok.h | 4 | ||||
| -rw-r--r-- | engines/kyra/kyra_mr.h | 5 | ||||
| -rw-r--r-- | engines/kyra/kyra_v1.cpp | 5 | ||||
| -rw-r--r-- | engines/kyra/kyra_v1.h | 2 | ||||
| -rw-r--r-- | engines/kyra/kyra_v2.cpp | 17 | ||||
| -rw-r--r-- | engines/kyra/kyra_v2.h | 3 | 
7 files changed, 40 insertions, 0 deletions
| diff --git a/engines/kyra/kyra_hof.h b/engines/kyra/kyra_hof.h index fe4b6390b7..4eac124c45 100644 --- a/engines/kyra/kyra_hof.h +++ b/engines/kyra/kyra_hof.h @@ -182,6 +182,10 @@ public:  	KyraEngine_HoF(OSystem *system, const GameFlags &flags);  	~KyraEngine_HoF(); +	//TODO: proper extended implementation of KyraEngine_v2::pauseEngineIntern. +	// Here we need to take care of the seqeunce play code (LordHoto *thinks*), +	// item animation, idle animation and tim player. +  	Screen *screen() { return _screen; }  	Screen_v2 *screen_v2() const { return _screen; }  	GUI_v2 *gui_v2() const { return _gui; } diff --git a/engines/kyra/kyra_lok.h b/engines/kyra/kyra_lok.h index ad425eee8c..6bae169a77 100644 --- a/engines/kyra/kyra_lok.h +++ b/engines/kyra/kyra_lok.h @@ -113,6 +113,10 @@ public:  	KyraEngine_LoK(OSystem *system, const GameFlags &flags);  	~KyraEngine_LoK(); +	//TODO: proper extended implementation of KyraEngine_v1::pauseEngineIntern. +	// _sprites and _seqplayer should be paused here too, to avoid some animation glitches, +	// also parts of the hardcoded Malcolm fight might need some special handling. +  	Screen *screen() { return _screen; }  	Animator_LoK *animator() { return _animator; }  	virtual Movie *createWSAMovie(); diff --git a/engines/kyra/kyra_mr.h b/engines/kyra/kyra_mr.h index 4ec02c7849..5af138373c 100644 --- a/engines/kyra/kyra_mr.h +++ b/engines/kyra/kyra_mr.h @@ -50,6 +50,11 @@ public:  	KyraEngine_MR(OSystem *system, const GameFlags &flags);  	~KyraEngine_MR(); +	//TODO: proper extended implementation of KyraEngine_v2::pauseEngineIntern. +	// Idle animation time, item animations and album animations should be taken +	// care of, but since those would just produce minor glitches it's not that +	// important. +  	Screen *screen() { return _screen; }  	Screen_v2 *screen_v2() const { return _screen; }  	GUI_v2 *gui_v2() const { return _gui; } diff --git a/engines/kyra/kyra_v1.cpp b/engines/kyra/kyra_v1.cpp index a3d18f7713..1cc1d728bf 100644 --- a/engines/kyra/kyra_v1.cpp +++ b/engines/kyra/kyra_v1.cpp @@ -87,6 +87,11 @@ KyraEngine_v1::KyraEngine_v1(OSystem *system, const GameFlags &flags)  	return _debugger;  } +void KyraEngine_v1::pauseEngineIntern(bool pause) { +	Engine::pauseEngineIntern(pause); +	_timer->pause(pause); +} +  int KyraEngine_v1::init() {  	registerDefaultSettings(); diff --git a/engines/kyra/kyra_v1.h b/engines/kyra/kyra_v1.h index 919d853dfb..2278cc81df 100644 --- a/engines/kyra/kyra_v1.h +++ b/engines/kyra/kyra_v1.h @@ -109,6 +109,8 @@ public:  	::GUI::Debugger *getDebugger(); +	virtual void pauseEngineIntern(bool pause); +  	bool quit() const { return _quitFlag; }  	uint8 game() const { return _flags.gameID; } diff --git a/engines/kyra/kyra_v2.cpp b/engines/kyra/kyra_v2.cpp index e987496ddb..054fab4569 100644 --- a/engines/kyra/kyra_v2.cpp +++ b/engines/kyra/kyra_v2.cpp @@ -68,6 +68,8 @@ KyraEngine_v2::KyraEngine_v2(OSystem *system, const GameFlags &flags, const Engi  	memset(&_mainCharacter, 0, sizeof(_mainCharacter));  	memset(&_mainCharacter.inventory, -1, sizeof(_mainCharacter.inventory)); + +	_pauseStart = 0;  }  KyraEngine_v2::~KyraEngine_v2() { @@ -93,6 +95,21 @@ KyraEngine_v2::~KyraEngine_v2() {  	delete[] _screenBuffer;  } +void KyraEngine_v2::pauseEngineIntern(bool pause) { +	KyraEngine_v1::pauseEngineIntern(pause); + +	if (!pause) { +		for (int i = 0; i < ARRAYSIZE(_sceneSpecialScriptsTimer); ++i) { +			if (_sceneSpecialScriptsTimer[i]) +				_sceneSpecialScriptsTimer[i] += _pauseStart; +		} + +		_pauseStart = 0; +	} else { +		_pauseStart = _system->getMillis(); +	} +} +  void KyraEngine_v2::delay(uint32 amount, bool updateGame, bool isMainLoop) {  	debugC(9, kDebugLevelMain, "KyraEngine_v2::delay(%u, %d, %d)", amount, updateGame, isMainLoop); diff --git a/engines/kyra/kyra_v2.h b/engines/kyra/kyra_v2.h index f75fd89234..24f7aad614 100644 --- a/engines/kyra/kyra_v2.h +++ b/engines/kyra/kyra_v2.h @@ -75,6 +75,8 @@ public:  	KyraEngine_v2(OSystem *system, const GameFlags &flags, const EngineDesc &desc);  	~KyraEngine_v2(); +	virtual void pauseEngineIntern(bool pause); +  	virtual Screen_v2 *screen_v2() const = 0;  	virtual GUI *gui_v2() const = 0; @@ -85,6 +87,7 @@ protected:  	EngineDesc _desc;  	// run +	uint32 _pauseStart;  	bool _runFlag;  	bool _showOutro; | 
