[Scummvm-cvs-logs] scummvm master -> a00c372f9eff8da8820cb06ed784fefb5cac247f

somaen einarjohants at gmail.com
Thu Apr 18 12:32:32 CEST 2013


This automated email contains information about 8 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
a8f4f20f38 WINTERMUTE: Avoid including BaseGame in BaseFrame.
7ee757366b WINTERMUTE: Avoid including BaseGame in BaseViewport.
8f25b651e8 WINTERMUTE: Split the timers from BaseGame into a separate class.
32ace5f9d2 WINTERMUTE: Avoid including BaseGame in BaseFader.
e5b2107704 WINTERMUTE: Avoid including BaseGame in BaseSoundManager.
a4f7763579 WINTERMUTE: Avoid including BaseGame in PartEmitter.
8bcaf3e06c WINTERMUTE: Use BaseEngine for Logging, not _gameRef in base-classes.
a00c372f9e WINTERMUTE: Get Renderer from BaseEngine, not BaseGame in BaseClasses.


Commit: a8f4f20f38bd577ae9b63a15dec7416523de2b16
    https://github.com/scummvm/scummvm/commit/a8f4f20f38bd577ae9b63a15dec7416523de2b16
Author: Einar Johan Trøan Sømåen (einarjohants at gmail.com)
Date: 2013-04-18T02:13:32-07:00

Commit Message:
WINTERMUTE: Avoid including BaseGame in BaseFrame.

Changed paths:
    engines/wintermute/base/base_engine.cpp
    engines/wintermute/base/base_engine.h
    engines/wintermute/base/base_frame.cpp



diff --git a/engines/wintermute/base/base_engine.cpp b/engines/wintermute/base/base_engine.cpp
index a13ca4d..3525b24 100644
--- a/engines/wintermute/base/base_engine.cpp
+++ b/engines/wintermute/base/base_engine.cpp
@@ -90,4 +90,12 @@ uint32 BaseEngine::randInt(int from, int to) {
 	return _rnd->getRandomNumberRng(from, to);
 }
 
+BaseSoundMgr *BaseEngine::getSoundMgr() {
+	if (instance()._gameRef) {
+		return _gameRef->_soundMgr;
+	} else {
+		return nullptr;
+	}
+}
+
 } // end of namespace Wintermute
diff --git a/engines/wintermute/base/base_engine.h b/engines/wintermute/base/base_engine.h
index f04c594..63a8d23 100644
--- a/engines/wintermute/base/base_engine.h
+++ b/engines/wintermute/base/base_engine.h
@@ -39,6 +39,7 @@ namespace Wintermute {
 class BaseFileManager;
 class BaseRegistry;
 class BaseGame;
+class BaseSoundMgr;
 class SystemClassRegistry;
 class BaseEngine : public Common::Singleton<Wintermute::BaseEngine> {
 	void init(Common::Language lang);
@@ -60,6 +61,7 @@ public:
 	SystemClassRegistry *getClassRegistry() { return _classReg; }
 	BaseGame *getGameRef() { return _gameRef; }
 	BaseFileManager *getFileManager() { return _fileManager; }
+	BaseSoundMgr *getSoundMgr();
 	static void LOG(bool res, const char *fmt, ...);
 	const char *getGameId() { return _gameId.c_str(); }
 };
diff --git a/engines/wintermute/base/base_frame.cpp b/engines/wintermute/base/base_frame.cpp
index 8a190c7..382e8ac 100644
--- a/engines/wintermute/base/base_frame.cpp
+++ b/engines/wintermute/base/base_frame.cpp
@@ -27,8 +27,9 @@
  */
 
 #include "engines/wintermute/base/base_parser.h"
+#include "engines/wintermute/base/base_engine.h"
 #include "engines/wintermute/base/base_frame.h"
-#include "engines/wintermute/base/base_game.h"
+#include "engines/wintermute/base/base_object.h"
 #include "engines/wintermute/base/base_dynamic_buffer.h"
 #include "engines/wintermute/base/sound/base_sound_manager.h"
 #include "engines/wintermute/base/sound/base_sound.h"
@@ -264,8 +265,8 @@ bool BaseFrame::loadBuffer(byte *buffer, int lifeTime, bool keepLoaded) {
 			}
 			_sound = new BaseSound(_gameRef);
 			if (!_sound || DID_FAIL(_sound->setSound(params, Audio::Mixer::kSFXSoundType, false))) {
-				if (_gameRef->_soundMgr->_soundAvailable) {
-					_gameRef->LOG(0, "Error loading sound '%s'.", params);
+				if (BaseEngine::instance().getSoundMgr()->_soundAvailable) {
+					BaseEngine::LOG(0, "Error loading sound '%s'.", params);
 				}
 				delete _sound;
 				_sound = nullptr;
@@ -294,12 +295,12 @@ bool BaseFrame::loadBuffer(byte *buffer, int lifeTime, bool keepLoaded) {
 		}
 	}
 	if (cmd == PARSERR_TOKENNOTFOUND) {
-		_gameRef->LOG(0, "Syntax error in FRAME definition");
+		BaseEngine::LOG(0, "Syntax error in FRAME definition");
 		return STATUS_FAILED;
 	}
 
 	if (cmd == PARSERR_GENERIC) {
-		_gameRef->LOG(0, "Error loading FRAME definition");
+		BaseEngine::LOG(0, "Error loading FRAME definition");
 		return STATUS_FAILED;
 	}
 
@@ -314,7 +315,7 @@ bool BaseFrame::loadBuffer(byte *buffer, int lifeTime, bool keepLoaded) {
 
 		if (!sub->_surface) {
 			delete sub;
-			_gameRef->LOG(0, "Error loading SUBFRAME");
+			BaseEngine::LOG(0, "Error loading SUBFRAME");
 			return STATUS_FAILED;
 		}
 


Commit: 7ee757366b9aee0e6a59669d263e29b5fe20278e
    https://github.com/scummvm/scummvm/commit/7ee757366b9aee0e6a59669d263e29b5fe20278e
Author: Einar Johan Trøan Sømåen (einarjohants at gmail.com)
Date: 2013-04-18T02:19:26-07:00

Commit Message:
WINTERMUTE: Avoid including BaseGame in BaseViewport.

Changed paths:
    engines/wintermute/base/base_engine.cpp
    engines/wintermute/base/base_engine.h
    engines/wintermute/base/base_viewport.cpp
    engines/wintermute/base/base_viewport.h



diff --git a/engines/wintermute/base/base_engine.cpp b/engines/wintermute/base/base_engine.cpp
index 3525b24..f8dc5df 100644
--- a/engines/wintermute/base/base_engine.cpp
+++ b/engines/wintermute/base/base_engine.cpp
@@ -98,4 +98,12 @@ BaseSoundMgr *BaseEngine::getSoundMgr() {
 	}
 }
 
+BaseRenderer *BaseEngine::getRenderer() {
+	if (instance()._gameRef) {
+		return _gameRef->_renderer;
+	} else {
+		return nullptr;
+	}
+}
+
 } // end of namespace Wintermute
diff --git a/engines/wintermute/base/base_engine.h b/engines/wintermute/base/base_engine.h
index 63a8d23..aa23cdd 100644
--- a/engines/wintermute/base/base_engine.h
+++ b/engines/wintermute/base/base_engine.h
@@ -40,6 +40,7 @@ class BaseFileManager;
 class BaseRegistry;
 class BaseGame;
 class BaseSoundMgr;
+class BaseRenderer;
 class SystemClassRegistry;
 class BaseEngine : public Common::Singleton<Wintermute::BaseEngine> {
 	void init(Common::Language lang);
@@ -62,6 +63,7 @@ public:
 	BaseGame *getGameRef() { return _gameRef; }
 	BaseFileManager *getFileManager() { return _fileManager; }
 	BaseSoundMgr *getSoundMgr();
+	BaseRenderer *getRenderer();
 	static void LOG(bool res, const char *fmt, ...);
 	const char *getGameId() { return _gameId.c_str(); }
 };
diff --git a/engines/wintermute/base/base_viewport.cpp b/engines/wintermute/base/base_viewport.cpp
index b6c4eb5..4f62a4f 100644
--- a/engines/wintermute/base/base_viewport.cpp
+++ b/engines/wintermute/base/base_viewport.cpp
@@ -26,9 +26,10 @@
  * Copyright (c) 2011 Jan Nedoma
  */
 
-#include "engines/wintermute/base/base_game.h"
-#include "engines/wintermute/platform_osystem.h"
 #include "engines/wintermute/base/base_viewport.h"
+#include "engines/wintermute/base/base_engine.h"
+#include "engines/wintermute/base/base_persistence_manager.h"
+#include "engines/wintermute/platform_osystem.h"
 #include "engines/wintermute/base/gfx/base_renderer.h"
 
 namespace Wintermute {
@@ -68,8 +69,8 @@ bool BaseViewport::setRect(int left, int top, int right, int bottom, bool noChec
 	if (!noCheck) {
 		left = MAX(left, 0);
 		top = MAX(top, 0);
-		right = MIN(right, _gameRef->_renderer->getWidth());
-		bottom = MIN(bottom, _gameRef->_renderer->getHeight());
+		right = MIN(right, BaseEngine::instance().getRenderer()->getWidth());
+		bottom = MIN(bottom, BaseEngine::instance().getRenderer()->getHeight());
 	}
 
 	BasePlatform::setRect(&_rect, left, top, right, bottom);
diff --git a/engines/wintermute/base/base_viewport.h b/engines/wintermute/base/base_viewport.h
index c69682d..636c9c5 100644
--- a/engines/wintermute/base/base_viewport.h
+++ b/engines/wintermute/base/base_viewport.h
@@ -31,6 +31,8 @@
 
 
 #include "engines/wintermute/base/base.h"
+#include "engines/wintermute/math/rect32.h"
+#include "engines/wintermute/persistent.h"
 
 namespace Wintermute {
 class BaseObject;


Commit: 8f25b651e8fc05dc29e6ea5fff5eba1c8df78697
    https://github.com/scummvm/scummvm/commit/8f25b651e8fc05dc29e6ea5fff5eba1c8df78697
Author: Einar Johan Trøan Sømåen (einarjohants at gmail.com)
Date: 2013-04-18T03:10:40-07:00

Commit Message:
WINTERMUTE: Split the timers from BaseGame into a separate class.

Changed paths:
  A engines/wintermute/base/timer.cpp
  A engines/wintermute/base/timer.h
    engines/wintermute/ad/ad_actor.cpp
    engines/wintermute/ad/ad_entity.cpp
    engines/wintermute/ad/ad_item.cpp
    engines/wintermute/ad/ad_object.cpp
    engines/wintermute/ad/ad_scene.cpp
    engines/wintermute/ad/ad_sentence.cpp
    engines/wintermute/base/base_engine.cpp
    engines/wintermute/base/base_engine.h
    engines/wintermute/base/base_fader.cpp
    engines/wintermute/base/base_game.cpp
    engines/wintermute/base/base_game.h
    engines/wintermute/base/base_game_music.cpp
    engines/wintermute/base/base_parser.cpp
    engines/wintermute/base/base_sprite.cpp
    engines/wintermute/base/base_surface_storage.cpp
    engines/wintermute/base/gfx/base_surface.cpp
    engines/wintermute/base/particles/part_emitter.cpp
    engines/wintermute/base/scriptables/script.cpp
    engines/wintermute/base/scriptables/script_engine.cpp
    engines/wintermute/module.mk
    engines/wintermute/video/video_theora_player.cpp



diff --git a/engines/wintermute/ad/ad_actor.cpp b/engines/wintermute/ad/ad_actor.cpp
index d0d0476..9879cc9 100644
--- a/engines/wintermute/ad/ad_actor.cpp
+++ b/engines/wintermute/ad/ad_actor.cpp
@@ -752,7 +752,7 @@ bool AdActor::update() {
 			_tempSprite2 = _sentence->_currentSprite;
 		}
 
-		bool timeIsUp = (_sentence->_sound && _sentence->_soundStarted && (!_sentence->_sound->isPlaying() && !_sentence->_sound->isPaused())) || (!_sentence->_sound && _sentence->_duration <= _gameRef->_timer - _sentence->_startTime);
+		bool timeIsUp = (_sentence->_sound && _sentence->_soundStarted && (!_sentence->_sound->isPlaying() && !_sentence->_sound->isPaused())) || (!_sentence->_sound && _sentence->_duration <= _gameRef->getTimer()->getTime() - _sentence->_startTime);
 		if (_tempSprite2 == nullptr || _tempSprite2->isFinished() || (/*_tempSprite2->_looping &&*/ timeIsUp)) {
 			if (timeIsUp) {
 				_sentence->finish();
diff --git a/engines/wintermute/ad/ad_entity.cpp b/engines/wintermute/ad/ad_entity.cpp
index 259b68f..6e47d0f 100644
--- a/engines/wintermute/ad/ad_entity.cpp
+++ b/engines/wintermute/ad/ad_entity.cpp
@@ -627,7 +627,7 @@ bool AdEntity::update() {
 			_tempSprite2 = _sentence->_currentSprite;
 		}
 
-		bool timeIsUp = (_sentence->_sound && _sentence->_soundStarted && (!_sentence->_sound->isPlaying() && !_sentence->_sound->isPaused())) || (!_sentence->_sound && _sentence->_duration <= _gameRef->_timer - _sentence->_startTime);
+		bool timeIsUp = (_sentence->_sound && _sentence->_soundStarted && (!_sentence->_sound->isPlaying() && !_sentence->_sound->isPaused())) || (!_sentence->_sound && _sentence->_duration <= _gameRef->getTimer()->getTime() - _sentence->_startTime);
 		if (_tempSprite2 == nullptr || _tempSprite2->isFinished() || (/*_tempSprite2->_looping &&*/ timeIsUp)) {
 			if (timeIsUp) {
 				_sentence->finish();
diff --git a/engines/wintermute/ad/ad_item.cpp b/engines/wintermute/ad/ad_item.cpp
index 8534956..5781051 100644
--- a/engines/wintermute/ad/ad_item.cpp
+++ b/engines/wintermute/ad/ad_item.cpp
@@ -378,7 +378,7 @@ bool AdItem::update() {
 			_tempSprite2 = _sentence->_currentSprite;
 		}
 
-		bool timeIsUp = (_sentence->_sound && _sentence->_soundStarted && (!_sentence->_sound->isPlaying() && !_sentence->_sound->isPaused())) || (!_sentence->_sound && _sentence->_duration <= _gameRef->_timer - _sentence->_startTime);
+		bool timeIsUp = (_sentence->_sound && _sentence->_soundStarted && (!_sentence->_sound->isPlaying() && !_sentence->_sound->isPaused())) || (!_sentence->_sound && _sentence->_duration <= _gameRef->getTimer()->getTime() - _sentence->_startTime);
 		if (_tempSprite2 == nullptr || _tempSprite2->isFinished() || (/*_tempSprite2->_looping &&*/ timeIsUp)) {
 			if (timeIsUp) {
 				_sentence->finish();
diff --git a/engines/wintermute/ad/ad_object.cpp b/engines/wintermute/ad/ad_object.cpp
index 5a61184..9026b28 100644
--- a/engines/wintermute/ad/ad_object.cpp
+++ b/engines/wintermute/ad/ad_object.cpp
@@ -904,7 +904,7 @@ void AdObject::talk(const char *text, const char *sound, uint32 duration, const
 	_sentence->setStances(stances);
 	_sentence->_duration = duration;
 	_sentence->_align = Align;
-	_sentence->_startTime = _gameRef->_timer;
+	_sentence->_startTime = _gameRef->getTimer()->getTime();
 	_sentence->_currentStance = -1;
 	_sentence->_font = _font == nullptr ? _gameRef->getSystemFont() : _font;
 	_sentence->_freezable = _freezable;
diff --git a/engines/wintermute/ad/ad_scene.cpp b/engines/wintermute/ad/ad_scene.cpp
index f7a6fdc..699ef06 100644
--- a/engines/wintermute/ad/ad_scene.cpp
+++ b/engines/wintermute/ad/ad_scene.cpp
@@ -931,13 +931,13 @@ bool AdScene::traverseNodes(bool doUpdate) {
 
 		if (_autoScroll) {
 			// adjust horizontal scroll
-			if (_gameRef->_timer - _lastTimeH >= _scrollTimeH) {
-				int timesMissed = (_gameRef->_timer - _lastTimeH) / _scrollTimeH;
+			if (_gameRef->getTimer()->getTime() - _lastTimeH >= _scrollTimeH) {
+				int timesMissed = (_gameRef->getTimer()->getTime() - _lastTimeH) / _scrollTimeH;
 				// Cap the amount of catch-up to avoid jittery characters.
 				if (timesMissed > 2) {
 					timesMissed = 2;
 				}
-				_lastTimeH = _gameRef->_timer;
+				_lastTimeH = _gameRef->getTimer()->getTime();
 				if (_offsetLeft < _targetOffsetLeft) {
 					_offsetLeft += _scrollPixelsH * timesMissed;
 					_offsetLeft = MIN(_offsetLeft, _targetOffsetLeft);
@@ -948,13 +948,13 @@ bool AdScene::traverseNodes(bool doUpdate) {
 			}
 
 			// adjust vertical scroll
-			if (_gameRef->_timer - _lastTimeV >= _scrollTimeV) {
-				int timesMissed = (_gameRef->_timer - _lastTimeV) / _scrollTimeV;
+			if (_gameRef->getTimer()->getTime() - _lastTimeV >= _scrollTimeV) {
+				int timesMissed = (_gameRef->getTimer()->getTime() - _lastTimeV) / _scrollTimeV;
 				// Cap the amount of catch-up to avoid jittery characters.
 				if (timesMissed > 2) {
 					timesMissed = 2;
 				}
-				_lastTimeV = _gameRef->_timer;
+				_lastTimeV = _gameRef->getTimer()->getTime();
 				if (_offsetTop < _targetOffsetTop) {
 					_offsetTop += _scrollPixelsV * timesMissed;
 					_offsetTop = MIN(_offsetTop, _targetOffsetTop);
diff --git a/engines/wintermute/ad/ad_sentence.cpp b/engines/wintermute/ad/ad_sentence.cpp
index 69101fe..9192b74 100644
--- a/engines/wintermute/ad/ad_sentence.cpp
+++ b/engines/wintermute/ad/ad_sentence.cpp
@@ -314,9 +314,9 @@ bool AdSentence::update(TDirection dir) {
 
 	/*
 	if (_sound) CurrentTime = _sound->GetPositionTime();
-	else CurrentTime = _gameRef->_timer - _startTime;
+	else CurrentTime = _gameRef->getTimer()->getTime() - _startTime;
 	*/
-	currentTime = _gameRef->_timer - _startTime;
+	currentTime = _gameRef->getTimer()->getTime() - _startTime;
 
 	bool talkNodeFound = false;
 	for (uint32 i = 0; i < _talkDef->_nodes.size(); i++) {
@@ -355,7 +355,7 @@ bool AdSentence::update(TDirection dir) {
 //////////////////////////////////////////////////////////////////////////
 bool AdSentence::canSkip() {
 	// prevent accidental sentence skipping (TODO make configurable)
-	return (_gameRef->_timer - _startTime) > 300;
+	return (_gameRef->getTimer()->getTime() - _startTime) > 300;
 }
 
 } // end of namespace Wintermute
diff --git a/engines/wintermute/base/base_engine.cpp b/engines/wintermute/base/base_engine.cpp
index f8dc5df..2dcf2d6 100644
--- a/engines/wintermute/base/base_engine.cpp
+++ b/engines/wintermute/base/base_engine.cpp
@@ -106,4 +106,20 @@ BaseRenderer *BaseEngine::getRenderer() {
 	}
 }
 
+const Timer *BaseEngine::getTimer() {
+	if (instance()._gameRef) {
+		return instance()._gameRef->getTimer();
+	} else {
+		return nullptr;
+	}
+}
+
+const Timer *BaseEngine::getLiveTimer() {
+	if (instance()._gameRef) {
+		return instance()._gameRef->getLiveTimer();
+	} else {
+		return nullptr;
+	}
+}
+
 } // end of namespace Wintermute
diff --git a/engines/wintermute/base/base_engine.h b/engines/wintermute/base/base_engine.h
index aa23cdd..e460711 100644
--- a/engines/wintermute/base/base_engine.h
+++ b/engines/wintermute/base/base_engine.h
@@ -42,6 +42,7 @@ class BaseGame;
 class BaseSoundMgr;
 class BaseRenderer;
 class SystemClassRegistry;
+class Timer;
 class BaseEngine : public Common::Singleton<Wintermute::BaseEngine> {
 	void init(Common::Language lang);
 	BaseFileManager *_fileManager;
@@ -64,6 +65,8 @@ public:
 	BaseFileManager *getFileManager() { return _fileManager; }
 	BaseSoundMgr *getSoundMgr();
 	BaseRenderer *getRenderer();
+	static const Timer *getTimer();
+	static const Timer *getLiveTimer();
 	static void LOG(bool res, const char *fmt, ...);
 	const char *getGameId() { return _gameId.c_str(); }
 };
diff --git a/engines/wintermute/base/base_fader.cpp b/engines/wintermute/base/base_fader.cpp
index 8f74d71..0793045 100644
--- a/engines/wintermute/base/base_fader.cpp
+++ b/engines/wintermute/base/base_fader.cpp
@@ -71,7 +71,7 @@ bool BaseFader::update() {
 	if (_system) {
 		time = g_system->getMillis() - _startTime;
 	} else {
-		time = _gameRef->_timer - _startTime;
+		time = _gameRef->getTimer()->getTime() - _startTime;
 	}
 
 	if (time >= _duration) {
@@ -129,7 +129,7 @@ bool BaseFader::fadeIn(uint32 sourceColor, uint32 duration, bool system) {
 	if (_system) {
 		_startTime = g_system->getMillis();
 	} else {
-		_startTime = _gameRef->_timer;
+		_startTime = _gameRef->getTimer()->getTime();
 	}
 
 	return STATUS_OK;
@@ -155,7 +155,7 @@ bool BaseFader::fadeOut(uint32 targetColor, uint32 duration, bool system) {
 	if (_system) {
 		_startTime = g_system->getMillis();
 	} else {
-		_startTime = _gameRef->_timer;
+		_startTime = _gameRef->getTimer()->getTime();
 	}
 
 
diff --git a/engines/wintermute/base/base_game.cpp b/engines/wintermute/base/base_game.cpp
index 9ae4417..4f8d099 100644
--- a/engines/wintermute/base/base_game.cpp
+++ b/engines/wintermute/base/base_game.cpp
@@ -81,7 +81,7 @@ IMPLEMENT_PERSISTENT(BaseGame, true)
 
 
 //////////////////////////////////////////////////////////////////////
-BaseGame::BaseGame(const Common::String &gameId) : BaseObject(this), _gameId(gameId) {
+BaseGame::BaseGame(const Common::String &gameId) : BaseObject(this), _gameId(gameId), _timerNormal(), _timerLive() {
 	_shuttingDown = false;
 
 	_state = GAME_RUNNING;
@@ -122,14 +122,6 @@ BaseGame::BaseGame(const Common::String &gameId) : BaseObject(this), _gameId(gam
 	_subtitles = true;
 	_videoSubtitles = true;
 
-	_timer = 0;
-	_timerDelta = 0;
-	_timerLast = 0;
-
-	_liveTimer = 0;
-	_liveTimerDelta = 0;
-	_liveTimerLast = 0;
-
 	_sequence = 0;
 
 	_mousePos.x = _mousePos.y = 0;
@@ -561,16 +553,12 @@ bool BaseGame::initLoop() {
 	_lastTime  = _currentTime;
 	_fpsTime += _deltaTime;
 
-	_liveTimerDelta = _liveTimer - _liveTimerLast;
-	_liveTimerLast = _liveTimer;
-	_liveTimer += MIN((uint32)1000, _deltaTime);
+	_timerLive.updateTime(_deltaTime, 1000);
 
 	if (_state != GAME_FROZEN) {
-		_timerDelta = _timer - _timerLast;
-		_timerLast = _timer;
-		_timer += MIN((uint32)1000, _deltaTime);
+		_timerNormal.updateTime(_deltaTime, 1000);
 	} else {
-		_timerDelta = 0;
+		_timerNormal.setTimeDelta(0);
 	}
 
 	_framesRendered++;
@@ -1985,7 +1973,7 @@ ScValue *BaseGame::scGetProperty(const Common::String &name) {
 	// CurrentTime (RO)
 	//////////////////////////////////////////////////////////////////////////
 	else if (name == "CurrentTime") {
-		_scValue->setInt((int)_timer);
+		_scValue->setInt((int)getTimer()->getTime());
 		return _scValue;
 	}
 
@@ -3104,13 +3092,8 @@ bool BaseGame::persist(BasePersistenceManager *persistMgr) {
 	persistMgr->transfer(TMEMBER(_videoFont));
 	persistMgr->transfer(TMEMBER(_videoSubtitles));
 
-	persistMgr->transfer(TMEMBER(_timer));
-	persistMgr->transfer(TMEMBER(_timerDelta));
-	persistMgr->transfer(TMEMBER(_timerLast));
-
-	persistMgr->transfer(TMEMBER(_liveTimer));
-	persistMgr->transfer(TMEMBER(_liveTimerDelta));
-	persistMgr->transfer(TMEMBER(_liveTimerLast));
+	_timerNormal.persist(persistMgr);
+	_timerLive.persist(persistMgr);
 
 	_renderer->persistSaveLoadImages(persistMgr);
 
@@ -3777,7 +3760,7 @@ bool BaseGame::displayDebugInfo() {
 		_systemFont->drawText((byte *)str, 0, 70, _renderer->getWidth(), TAL_RIGHT);
 
 
-		sprintf(str, "Timer: %d", _timer);
+		sprintf(str, "Timer: %d", getTimer()->getTime());
 		_gameRef->_systemFont->drawText((byte *)str, 0, 130, _renderer->getWidth(), TAL_RIGHT);
 
 		if (_activeObject != nullptr) {
diff --git a/engines/wintermute/base/base_game.h b/engines/wintermute/base/base_game.h
index f3496f7..a0af216 100644
--- a/engines/wintermute/base/base_game.h
+++ b/engines/wintermute/base/base_game.h
@@ -30,6 +30,7 @@
 #define WINTERMUTE_BASE_GAME_H
 
 #include "engines/wintermute/base/base_object.h"
+#include "engines/wintermute/base/timer.h"
 #include "engines/wintermute/persistent.h"
 #include "engines/wintermute/coll_templ.h"
 #include "engines/wintermute/math/rect32.h"
@@ -214,14 +215,13 @@ public:
 	TGameState _state;
 	TGameState _origState;
 	bool _origInteractive;
-	uint32 _timer;
-	uint32 _timerDelta;
-	uint32 _timerLast;
-
-	uint32 _liveTimer;
-	uint32 _liveTimerDelta;
-	uint32 _liveTimerLast;
 
+	const Timer *getTimer() const { return &_timerNormal; }
+	const Timer *getLiveTimer() const { return &_timerLive; }
+private:
+	Timer _timerNormal;
+	Timer _timerLive;
+public:
 	BaseObject *_capturedObject;
 	Point32 _mousePos;
 	bool validObject(BaseObject *object);
diff --git a/engines/wintermute/base/base_game_music.cpp b/engines/wintermute/base/base_game_music.cpp
index 8dff41d..a39deb8 100644
--- a/engines/wintermute/base/base_game_music.cpp
+++ b/engines/wintermute/base/base_game_music.cpp
@@ -177,7 +177,7 @@ bool BaseGameMusic::updateMusicCrossfade() {
 		_music[_musicCrossfadeChannel2]->play();
 	}
 	
-	uint32 currentTime = _gameRef->_liveTimer - _musicCrossfadeStartTime;
+	uint32 currentTime = _gameRef->getLiveTimer()->getTime() - _musicCrossfadeStartTime;
 	
 	if (currentTime >= _musicCrossfadeLength) {
 		_musicCrossfadeRunning = false;
@@ -469,7 +469,7 @@ bool BaseGameMusic::scCallMethod(ScScript *script, ScStack *stack, ScStack *this
 			return STATUS_OK;
 		}
 		
-		_musicCrossfadeStartTime = _gameRef->_liveTimer;
+		_musicCrossfadeStartTime = _gameRef->getLiveTimer()->getTime();
 		_musicCrossfadeChannel1 = channel1;
 		_musicCrossfadeChannel2 = channel2;
 		_musicCrossfadeLength = fadeLength;
diff --git a/engines/wintermute/base/base_parser.cpp b/engines/wintermute/base/base_parser.cpp
index 7f18c1f..aaa376f 100644
--- a/engines/wintermute/base/base_parser.cpp
+++ b/engines/wintermute/base/base_parser.cpp
@@ -27,8 +27,8 @@
  */
 
 #include "engines/wintermute/base/base_parser.h"
-#include "engines/wintermute/base/base_game.h"
 #include "engines/wintermute/base/base_engine.h"
+#include "engines/wintermute/base/base_game.h"
 #include "engines/wintermute/platform_osystem.h"
 #include "common/str.h"
 #include "common/util.h"
diff --git a/engines/wintermute/base/base_sprite.cpp b/engines/wintermute/base/base_sprite.cpp
index 4f55e47..ecc878d 100644
--- a/engines/wintermute/base/base_sprite.cpp
+++ b/engines/wintermute/base/base_sprite.cpp
@@ -365,9 +365,9 @@ bool BaseSprite::getCurrentFrame(float zoomX, float zoomY) {
 
 	uint32 timer;
 	if (_owner && _owner->_freezable) {
-		timer = _gameRef->_timer;
+		timer = _gameRef->getTimer()->getTime();
 	} else {
-		timer = _gameRef->_liveTimer;
+		timer = _gameRef->getLiveTimer()->getTime();
 	}
 
 	int lastFrame = _currentFrame;
diff --git a/engines/wintermute/base/base_surface_storage.cpp b/engines/wintermute/base/base_surface_storage.cpp
index 08d2d2f..9c9b7dc 100644
--- a/engines/wintermute/base/base_surface_storage.cpp
+++ b/engines/wintermute/base/base_surface_storage.cpp
@@ -66,15 +66,15 @@ bool BaseSurfaceStorage::cleanup(bool warn) {
 
 //////////////////////////////////////////////////////////////////////////
 bool BaseSurfaceStorage::initLoop() {
-	if (_gameRef->_smartCache && _gameRef->_liveTimer - _lastCleanupTime >= _gameRef->_surfaceGCCycleTime) {
-		_lastCleanupTime = _gameRef->_liveTimer;
+	if (_gameRef->_smartCache && _gameRef->getLiveTimer()->getTime() - _lastCleanupTime >= _gameRef->_surfaceGCCycleTime) {
+		_lastCleanupTime = _gameRef->getLiveTimer()->getTime();
 		sortSurfaces();
 		for (uint32 i = 0; i < _surfaces.size(); i++) {
 			if (_surfaces[i]->_lifeTime <= 0) {
 				break;
 			}
 
-			if (_surfaces[i]->_lifeTime > 0 && _surfaces[i]->_valid && (int)(_gameRef->_liveTimer - _surfaces[i]->_lastUsedTime) >= _surfaces[i]->_lifeTime) {
+			if (_surfaces[i]->_lifeTime > 0 && _surfaces[i]->_valid && (int)(_gameRef->getLiveTimer()->getTime() - _surfaces[i]->_lastUsedTime) >= _surfaces[i]->_lifeTime) {
 				//_gameRef->QuickMessageForm("Invalidating: %s", _surfaces[i]->_filename);
 				_surfaces[i]->invalidate();
 			}
diff --git a/engines/wintermute/base/gfx/base_surface.cpp b/engines/wintermute/base/gfx/base_surface.cpp
index d882adf..2002463 100644
--- a/engines/wintermute/base/gfx/base_surface.cpp
+++ b/engines/wintermute/base/gfx/base_surface.cpp
@@ -129,7 +129,7 @@ bool BaseSurface::invalidate() {
 
 //////////////////////////////////////////////////////////////////////////
 bool BaseSurface::prepareToDraw() {
-	_lastUsedTime = _gameRef->_liveTimer;
+	_lastUsedTime = _gameRef->getLiveTimer()->getTime();
 
 	if (!_valid) {
 		//_gameRef->LOG(0, "Reviving: %s", _filename);
diff --git a/engines/wintermute/base/particles/part_emitter.cpp b/engines/wintermute/base/particles/part_emitter.cpp
index 1026969..1a89417 100644
--- a/engines/wintermute/base/particles/part_emitter.cpp
+++ b/engines/wintermute/base/particles/part_emitter.cpp
@@ -252,7 +252,7 @@ bool PartEmitter::update() {
 	if (!_running) {
 		return STATUS_OK;
 	} else {
-		return updateInternal(_gameRef->_timer, _gameRef->_timerDelta);
+		return updateInternal(_gameRef->getTimer()->getTime(), _gameRef->getTimer()->getTimeDelta());
 	}
 }
 
@@ -353,7 +353,7 @@ bool PartEmitter::start() {
 	if (_overheadTime > 0) {
 		uint32 delta = 500;
 		int steps = _overheadTime / delta;
-		uint32 currentTime = _gameRef->_timer - _overheadTime;
+		uint32 currentTime = _gameRef->getTimer()->getTime() - _overheadTime;
 
 		for (int i = 0; i < steps; i++) {
 			updateInternal(currentTime, delta);
diff --git a/engines/wintermute/base/scriptables/script.cpp b/engines/wintermute/base/scriptables/script.cpp
index 23c452b..56ffbf7 100644
--- a/engines/wintermute/base/scriptables/script.cpp
+++ b/engines/wintermute/base/scriptables/script.cpp
@@ -1194,7 +1194,7 @@ bool ScScript::sleep(uint32 duration) {
 		_waitTime = g_system->getMillis() + duration;
 		_waitFrozen = true;
 	} else {
-		_waitTime = _gameRef->_timer + duration;
+		_waitTime = _gameRef->getTimer()->getTime() + duration;
 		_waitFrozen = false;
 	}
 	return STATUS_OK;
diff --git a/engines/wintermute/base/scriptables/script_engine.cpp b/engines/wintermute/base/scriptables/script_engine.cpp
index d5c5797..d8f38f2 100644
--- a/engines/wintermute/base/scriptables/script_engine.cpp
+++ b/engines/wintermute/base/scriptables/script_engine.cpp
@@ -285,7 +285,7 @@ bool ScEngine::tick() {
 					_scripts[i]->run();
 				}
 			} else {
-				if (_scripts[i]->_waitTime <= _gameRef->_timer) {
+				if (_scripts[i]->_waitTime <= _gameRef->getTimer()->getTime()) {
 					_scripts[i]->run();
 				}
 			}
diff --git a/engines/wintermute/base/timer.cpp b/engines/wintermute/base/timer.cpp
new file mode 100644
index 0000000..590dba4
--- /dev/null
+++ b/engines/wintermute/base/timer.cpp
@@ -0,0 +1,74 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ 
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+/*
+ * This file is based on WME Lite.
+ * http://dead-code.org/redir.php?target=wmelite
+ * Copyright (c) 2011 Jan Nedoma
+ */
+
+#include "engines/wintermute/base/timer.h"
+#include "engines/wintermute/base/base_persistence_manager.h"
+#include "engines/wintermute/persistent.h"
+
+namespace Wintermute {
+Timer::Timer() : _timer(0), _timerDelta(0), _timerLast(0) {
+
+}
+
+void Timer::setTime(uint32 time) {
+	_timer = time;
+}
+
+void Timer::setTimeDelta(uint32 timeDelta) {
+	_timerDelta = timeDelta;
+}
+
+void Timer::setTimeLast(uint32 timeLast) {
+	_timerLast = timeLast;
+}
+
+void Timer::updateTime(uint32 delta, uint32 max) {
+	_timerDelta = _timer - _timerLast;
+	_timerLast = _timer;
+	_timer += MIN((uint32)max, delta);
+}
+
+uint32 Timer::getTime() const {
+	return _timer;
+}
+
+uint32 Timer::getTimeDelta() const {
+	return _timerDelta;
+}
+
+uint32 Timer::getTimeLast() const {
+	return _timerLast;
+}
+
+void Timer::persist(BasePersistenceManager *persistMgr) {
+	persistMgr->transfer(TMEMBER(_timer));
+	persistMgr->transfer(TMEMBER(_timerDelta));
+	persistMgr->transfer(TMEMBER(_timerLast));
+}
+
+} // End of namespace Wintermute
\ No newline at end of file
diff --git a/engines/wintermute/base/timer.h b/engines/wintermute/base/timer.h
new file mode 100644
index 0000000..8353b08
--- /dev/null
+++ b/engines/wintermute/base/timer.h
@@ -0,0 +1,57 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ 
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+/*
+ * This file is based on WME Lite.
+ * http://dead-code.org/redir.php?target=wmelite
+ * Copyright (c) 2011 Jan Nedoma
+ */
+
+#ifndef WINTERMUTE_TIMER_H
+#define WINTERMUTE_TIMER_H
+
+#include "common/scummsys.h"
+
+namespace Wintermute {
+
+class BasePersistenceManager;
+
+class Timer {
+	uint32 _timer;
+	uint32 _timerDelta;
+	uint32 _timerLast;
+public:
+	Timer();
+	void setTime(uint32 time);
+	void setTimeDelta(uint32 timeDelta);
+	void setTimeLast(uint32 timeLast);
+	void updateTime(uint32 delta, uint32 max);
+	uint32 getTime() const;
+	uint32 getTimeDelta() const;
+	uint32 getTimeLast() const;
+	void persist(BasePersistenceManager *persistMgr);
+};
+
+	
+} // End of namespace Wintermute
+
+#endif
\ No newline at end of file
diff --git a/engines/wintermute/module.mk b/engines/wintermute/module.mk
index 9c2f36f..32931bf 100644
--- a/engines/wintermute/module.mk
+++ b/engines/wintermute/module.mk
@@ -87,6 +87,7 @@ MODULE_OBJS := \
 	base/base_viewport.o \
 	base/saveload.o \
 	base/save_thumb_helper.o \
+	base/timer.o \
 	detection.o \
 	graphics/transparent_surface.o \
 	math/math_util.o \
diff --git a/engines/wintermute/video/video_theora_player.cpp b/engines/wintermute/video/video_theora_player.cpp
index 3777eed..f03be96 100644
--- a/engines/wintermute/video/video_theora_player.cpp
+++ b/engines/wintermute/video/video_theora_player.cpp
@@ -274,7 +274,7 @@ bool VideoTheoraPlayer::stop() {
 
 //////////////////////////////////////////////////////////////////////////
 bool VideoTheoraPlayer::update() {
-	_currentTime = _freezeGame ? _gameRef->_liveTimer : _gameRef->_timer;
+	_currentTime = _freezeGame ? _gameRef->getLiveTimer()->getTime() : _gameRef->getTimer()->getTime();
 
 	if (!isPlaying()) {
 		return STATUS_OK;


Commit: 32ace5f9d204e746ab8503220749e194ab91508c
    https://github.com/scummvm/scummvm/commit/32ace5f9d204e746ab8503220749e194ab91508c
Author: Einar Johan Trøan Sømåen (einarjohants at gmail.com)
Date: 2013-04-18T03:13:12-07:00

Commit Message:
WINTERMUTE: Avoid including BaseGame in BaseFader.

Changed paths:
    engines/wintermute/base/base_engine.cpp
    engines/wintermute/base/base_engine.h
    engines/wintermute/base/base_fader.cpp



diff --git a/engines/wintermute/base/base_engine.cpp b/engines/wintermute/base/base_engine.cpp
index 2dcf2d6..d4b17a0 100644
--- a/engines/wintermute/base/base_engine.cpp
+++ b/engines/wintermute/base/base_engine.cpp
@@ -100,7 +100,7 @@ BaseSoundMgr *BaseEngine::getSoundMgr() {
 
 BaseRenderer *BaseEngine::getRenderer() {
 	if (instance()._gameRef) {
-		return _gameRef->_renderer;
+		return instance()._gameRef->_renderer;
 	} else {
 		return nullptr;
 	}
diff --git a/engines/wintermute/base/base_engine.h b/engines/wintermute/base/base_engine.h
index e460711..d972e6e 100644
--- a/engines/wintermute/base/base_engine.h
+++ b/engines/wintermute/base/base_engine.h
@@ -64,7 +64,7 @@ public:
 	BaseGame *getGameRef() { return _gameRef; }
 	BaseFileManager *getFileManager() { return _fileManager; }
 	BaseSoundMgr *getSoundMgr();
-	BaseRenderer *getRenderer();
+	static BaseRenderer *getRenderer();
 	static const Timer *getTimer();
 	static const Timer *getLiveTimer();
 	static void LOG(bool res, const char *fmt, ...);
diff --git a/engines/wintermute/base/base_fader.cpp b/engines/wintermute/base/base_fader.cpp
index 0793045..0d17b07 100644
--- a/engines/wintermute/base/base_fader.cpp
+++ b/engines/wintermute/base/base_fader.cpp
@@ -27,7 +27,8 @@
  */
 
 #include "engines/wintermute/base/base_fader.h"
-#include "engines/wintermute/base/base_game.h"
+#include "engines/wintermute/base/base_engine.h"
+#include "engines/wintermute/base/timer.h"
 #include "engines/wintermute/base/gfx/base_renderer.h"
 #include "common/util.h"
 
@@ -71,7 +72,7 @@ bool BaseFader::update() {
 	if (_system) {
 		time = g_system->getMillis() - _startTime;
 	} else {
-		time = _gameRef->getTimer()->getTime() - _startTime;
+		time = BaseEngine::getTimer()->getTime() - _startTime;
 	}
 
 	if (time >= _duration) {
@@ -97,7 +98,7 @@ bool BaseFader::display() {
 	}
 
 	if (_currentAlpha > 0x00) {
-		_gameRef->_renderer->fadeToColor(_red, _green, _blue, _currentAlpha);
+		BaseEngine::getRenderer()->fadeToColor(_red, _green, _blue, _currentAlpha);
 	}
 	return STATUS_OK;
 }
@@ -129,7 +130,7 @@ bool BaseFader::fadeIn(uint32 sourceColor, uint32 duration, bool system) {
 	if (_system) {
 		_startTime = g_system->getMillis();
 	} else {
-		_startTime = _gameRef->getTimer()->getTime();
+		_startTime = BaseEngine::getTimer()->getTime();
 	}
 
 	return STATUS_OK;
@@ -155,7 +156,7 @@ bool BaseFader::fadeOut(uint32 targetColor, uint32 duration, bool system) {
 	if (_system) {
 		_startTime = g_system->getMillis();
 	} else {
-		_startTime = _gameRef->getTimer()->getTime();
+		_startTime = BaseEngine::getTimer()->getTime();
 	}
 
 


Commit: e5b210770418c46b30e01c2ae2ed5b3ebf9b3223
    https://github.com/scummvm/scummvm/commit/e5b210770418c46b30e01c2ae2ed5b3ebf9b3223
Author: Einar Johan Trøan Sømåen (einarjohants at gmail.com)
Date: 2013-04-18T03:15:05-07:00

Commit Message:
WINTERMUTE: Avoid including BaseGame in BaseSoundManager.

Changed paths:
    engines/wintermute/base/sound/base_sound_manager.cpp



diff --git a/engines/wintermute/base/sound/base_sound_manager.cpp b/engines/wintermute/base/sound/base_sound_manager.cpp
index e3f5fdc..f3e7bfb 100644
--- a/engines/wintermute/base/sound/base_sound_manager.cpp
+++ b/engines/wintermute/base/sound/base_sound_manager.cpp
@@ -30,7 +30,6 @@
 #include "engines/wintermute/base/base_engine.h"
 #include "engines/wintermute/utils/path_util.h"
 #include "engines/wintermute/utils/string_util.h"
-#include "engines/wintermute/base/base_game.h"
 #include "engines/wintermute/base/base_file_manager.h"
 #include "engines/wintermute/base/gfx/base_renderer.h"
 #include "engines/wintermute/base/sound/base_sound_buffer.h"
@@ -123,7 +122,7 @@ BaseSoundBuffer *BaseSoundMgr::addSound(const Common::String &filename, Audio::M
 
 	bool res = sound->loadFromFile(useFilename);
 	if (DID_FAIL(res)) {
-		_gameRef->LOG(res, "Error loading sound '%s'", useFilename.c_str());
+		BaseEngine::LOG(res, "Error loading sound '%s'", useFilename.c_str());
 		delete sound;
 		return nullptr;
 	}
@@ -280,7 +279,7 @@ bool BaseSoundMgr::resumeAll() {
 
 //////////////////////////////////////////////////////////////////////////
 float BaseSoundMgr::posToPan(int x, int y) {
-	float relPos = (float)x / ((float)_gameRef->_renderer->getWidth());
+	float relPos = (float)x / ((float)BaseEngine::getRenderer()->getWidth());
 
 	float minPan = -0.7f;
 	float maxPan = 0.7f;


Commit: a4f77635793ebb1fe0fc3b1b8ded6834762362c6
    https://github.com/scummvm/scummvm/commit/a4f77635793ebb1fe0fc3b1b8ded6834762362c6
Author: Einar Johan Trøan Sømåen (einarjohants at gmail.com)
Date: 2013-04-18T03:17:58-07:00

Commit Message:
WINTERMUTE: Avoid including BaseGame in PartEmitter.

Changed paths:
    engines/wintermute/base/particles/part_emitter.cpp



diff --git a/engines/wintermute/base/particles/part_emitter.cpp b/engines/wintermute/base/particles/part_emitter.cpp
index 1a89417..d09f221 100644
--- a/engines/wintermute/base/particles/part_emitter.cpp
+++ b/engines/wintermute/base/particles/part_emitter.cpp
@@ -32,7 +32,8 @@
 #include "engines/wintermute/math/matrix4.h"
 #include "engines/wintermute/base/scriptables/script_value.h"
 #include "engines/wintermute/base/scriptables/script_stack.h"
-#include "engines/wintermute/base/base_game.h"
+#include "engines/wintermute/base/base_engine.h"
+#include "engines/wintermute/base/timer.h"
 #include "engines/wintermute/base/base_region.h"
 #include "engines/wintermute/base/base_file_manager.h"
 #include "engines/wintermute/base/gfx/base_renderer.h"
@@ -131,7 +132,7 @@ bool PartEmitter::addSprite(const char *filename) {
 	// check if file exists
 	Common::SeekableReadStream *File = BaseFileManager::getEngineInstance()->openFile(filename);
 	if (!File) {
-		_gameRef->LOG(0, "Sprite '%s' not found", filename);
+		BaseEngine::LOG(0, "Sprite '%s' not found", filename);
 		return STATUS_FAILED;
 	} else {
 		BaseFileManager::getEngineInstance()->closeFile(File);
@@ -252,7 +253,7 @@ bool PartEmitter::update() {
 	if (!_running) {
 		return STATUS_OK;
 	} else {
-		return updateInternal(_gameRef->getTimer()->getTime(), _gameRef->getTimer()->getTimeDelta());
+		return updateInternal(BaseEngine::getTimer()->getTime(), BaseEngine::getTimer()->getTimeDelta());
 	}
 }
 
@@ -321,7 +322,7 @@ bool PartEmitter::updateInternal(uint32 currentTime, uint32 timerDelta) {
 //////////////////////////////////////////////////////////////////////////
 bool PartEmitter::display(BaseRegion *region) {
 	if (_sprites.size() <= 1) {
-		_gameRef->_renderer->startSpriteBatch();
+		BaseEngine::getRenderer()->startSpriteBatch();
 	}
 
 	for (uint32 i = 0; i < _particles.size(); i++) {
@@ -335,7 +336,7 @@ bool PartEmitter::display(BaseRegion *region) {
 	}
 
 	if (_sprites.size() <= 1) {
-		_gameRef->_renderer->endSpriteBatch();
+		BaseEngine::getRenderer()->endSpriteBatch();
 	}
 
 	return STATUS_OK;
@@ -353,7 +354,7 @@ bool PartEmitter::start() {
 	if (_overheadTime > 0) {
 		uint32 delta = 500;
 		int steps = _overheadTime / delta;
-		uint32 currentTime = _gameRef->getTimer()->getTime() - _overheadTime;
+		uint32 currentTime = BaseEngine::getTimer()->getTime() - _overheadTime;
 
 		for (int i = 0; i < steps; i++) {
 			updateInternal(currentTime, delta);


Commit: 8bcaf3e06c5c61d82686be4cbf5699f71db3e4a3
    https://github.com/scummvm/scummvm/commit/8bcaf3e06c5c61d82686be4cbf5699f71db3e4a3
Author: Einar Johan Trøan Sømåen (einarjohants at gmail.com)
Date: 2013-04-18T03:24:42-07:00

Commit Message:
WINTERMUTE: Use BaseEngine for Logging, not _gameRef in base-classes.

Changed paths:
    engines/wintermute/base/base.cpp
    engines/wintermute/base/base_script_holder.cpp
    engines/wintermute/base/base_scriptable.cpp
    engines/wintermute/base/base_sprite.cpp
    engines/wintermute/base/base_string_table.cpp
    engines/wintermute/base/base_sub_frame.cpp
    engines/wintermute/base/base_surface_storage.cpp
    engines/wintermute/base/saveload.cpp



diff --git a/engines/wintermute/base/base.cpp b/engines/wintermute/base/base.cpp
index c0459b0..d01972b 100644
--- a/engines/wintermute/base/base.cpp
+++ b/engines/wintermute/base/base.cpp
@@ -28,6 +28,7 @@
 
 #include "engines/wintermute/base/base.h"
 #include "engines/wintermute/base/base_game.h"
+#include "engines/wintermute/base/base_engine.h"
 #include "engines/wintermute/base/base_parser.h"
 #include "engines/wintermute/base/base_dynamic_buffer.h"
 
@@ -105,7 +106,7 @@ bool BaseClass::parseEditorProperty(byte *buffer, bool complete) {
 
 	if (complete) {
 		if (parser.getCommand((char **)&buffer, commands, (char **)&params) != TOKEN_EDITOR_PROPERTY) {
-			_gameRef->LOG(0, "'EDITOR_PROPERTY' keyword expected.");
+			BaseEngine::LOG(0, "'EDITOR_PROPERTY' keyword expected.");
 			return STATUS_FAILED;
 		}
 		buffer = params;
@@ -143,7 +144,7 @@ bool BaseClass::parseEditorProperty(byte *buffer, bool complete) {
 		delete[] propValue;
 		propName = nullptr;
 		propValue = nullptr;
-		_gameRef->LOG(0, "Syntax error in EDITOR_PROPERTY definition");
+		BaseEngine::LOG(0, "Syntax error in EDITOR_PROPERTY definition");
 		return STATUS_FAILED;
 	}
 	if (cmd == PARSERR_GENERIC || propName == nullptr || propValue == nullptr) {
@@ -151,7 +152,7 @@ bool BaseClass::parseEditorProperty(byte *buffer, bool complete) {
 		delete[] propValue;
 		propName = nullptr;
 		propValue = nullptr;
-		_gameRef->LOG(0, "Error loading EDITOR_PROPERTY definition");
+		BaseEngine::LOG(0, "Error loading EDITOR_PROPERTY definition");
 		return STATUS_FAILED;
 	}
 
diff --git a/engines/wintermute/base/base_script_holder.cpp b/engines/wintermute/base/base_script_holder.cpp
index d1a9d4a..036bac1 100644
--- a/engines/wintermute/base/base_script_holder.cpp
+++ b/engines/wintermute/base/base_script_holder.cpp
@@ -29,6 +29,7 @@
 #include "engines/wintermute/ad/ad_game.h"
 #include "engines/wintermute/base/base_script_holder.h"
 #include "engines/wintermute/base/base_parser.h"
+#include "engines/wintermute/base/base_engine.h"
 #include "engines/wintermute/base/scriptables/script_value.h"
 #include "engines/wintermute/base/scriptables/script_engine.h"
 #include "engines/wintermute/base/scriptables/script.h"
@@ -301,7 +302,7 @@ bool BaseScriptHolder::addScript(const char *filename) {
 	for (uint32 i = 0; i < _scripts.size(); i++) {
 		if (scumm_stricmp(_scripts[i]->_filename, filename) == 0) {
 			if (_scripts[i]->_state != SCRIPT_FINISHED) {
-				_gameRef->LOG(0, "BaseScriptHolder::AddScript - trying to add script '%s' mutiple times (obj: '%s')", filename, getName());
+				BaseEngine::LOG(0, "BaseScriptHolder::AddScript - trying to add script '%s' mutiple times (obj: '%s')", filename, getName());
 				return STATUS_OK;
 			}
 		}
@@ -382,7 +383,7 @@ bool BaseScriptHolder::parseProperty(byte *buffer, bool complete) {
 
 	if (complete) {
 		if (parser.getCommand((char **)&buffer, commands, (char **)&params) != TOKEN_PROPERTY) {
-			_gameRef->LOG(0, "'PROPERTY' keyword expected.");
+			BaseEngine::LOG(0, "'PROPERTY' keyword expected.");
 			return STATUS_FAILED;
 		}
 		buffer = params;
@@ -420,7 +421,7 @@ bool BaseScriptHolder::parseProperty(byte *buffer, bool complete) {
 		delete[] propValue;
 		propName = nullptr;
 		propValue = nullptr;
-		_gameRef->LOG(0, "Syntax error in PROPERTY definition");
+		BaseEngine::LOG(0, "Syntax error in PROPERTY definition");
 		return STATUS_FAILED;
 	}
 	if (cmd == PARSERR_GENERIC || propName == nullptr || propValue == nullptr) {
@@ -428,7 +429,7 @@ bool BaseScriptHolder::parseProperty(byte *buffer, bool complete) {
 		delete[] propValue;
 		propName = nullptr;
 		propValue = nullptr;
-		_gameRef->LOG(0, "Error loading PROPERTY definition");
+		BaseEngine::LOG(0, "Error loading PROPERTY definition");
 		return STATUS_FAILED;
 	}
 
diff --git a/engines/wintermute/base/base_scriptable.cpp b/engines/wintermute/base/base_scriptable.cpp
index 7dbcd72..fca1df4 100644
--- a/engines/wintermute/base/base_scriptable.cpp
+++ b/engines/wintermute/base/base_scriptable.cpp
@@ -52,7 +52,7 @@ BaseScriptable::BaseScriptable(BaseGame *inGame, bool noValue, bool persistable)
 
 //////////////////////////////////////////////////////////////////////////
 BaseScriptable::~BaseScriptable() {
-	//if (_refCount>0) _gameRef->LOG(0, "Warning: Destroying object, _refCount=%d", _refCount);
+	//if (_refCount>0) BaseEngine::LOG(0, "Warning: Destroying object, _refCount=%d", _refCount);
 	delete _scValue;
 	delete _scProp;
 	_scValue = nullptr;
diff --git a/engines/wintermute/base/base_sprite.cpp b/engines/wintermute/base/base_sprite.cpp
index ecc878d..3f809f7 100644
--- a/engines/wintermute/base/base_sprite.cpp
+++ b/engines/wintermute/base/base_sprite.cpp
@@ -32,6 +32,7 @@
 #include "engines/wintermute/base/base_dynamic_buffer.h"
 #include "engines/wintermute/base/gfx/base_surface.h"
 #include "engines/wintermute/base/base_game.h"
+#include "engines/wintermute/base/base_engine.h"
 #include "engines/wintermute/base/base_frame.h"
 #include "engines/wintermute/base/sound/base_sound.h"
 #include "engines/wintermute/base/base_sub_frame.h"
@@ -133,7 +134,7 @@ bool BaseSprite::isFinished() {
 bool BaseSprite::loadFile(const Common::String &filename, int lifeTime, TSpriteCacheType cacheType) {
 	Common::SeekableReadStream *file = BaseFileManager::getEngineInstance()->openFile(filename);
 	if (!file) {
-		_gameRef->LOG(0, "BaseSprite::LoadFile failed for file '%s'", filename.c_str());
+		BaseEngine::LOG(0, "BaseSprite::LoadFile failed for file '%s'", filename.c_str());
 		if (_gameRef->_debugDebugMode) {
 			return loadFile("invalid_debug.bmp", lifeTime, cacheType);
 		} else {
@@ -155,7 +156,7 @@ bool BaseSprite::loadFile(const Common::String &filename, int lifeTime, TSpriteC
 		BaseSubFrame *subframe = new BaseSubFrame(_gameRef);
 		subframe->setSurface(filename, true, 0, 0, 0, lifeTime, true);
 		if (subframe->_surface == nullptr) {
-			_gameRef->LOG(0, "Error loading simple sprite '%s'", filename.c_str());
+			BaseEngine::LOG(0, "Error loading simple sprite '%s'", filename.c_str());
 			ret = STATUS_FAILED;
 			delete frame;
 			delete subframe;
@@ -170,7 +171,7 @@ bool BaseSprite::loadFile(const Common::String &filename, int lifeTime, TSpriteC
 		byte *buffer = BaseFileManager::getEngineInstance()->readWholeFile(filename);
 		if (buffer) {
 			if (DID_FAIL(ret = loadBuffer(buffer, true, lifeTime, cacheType))) {
-				_gameRef->LOG(0, "Error parsing SPRITE file '%s'", filename.c_str());
+				BaseEngine::LOG(0, "Error parsing SPRITE file '%s'", filename.c_str());
 			} else {
 				ret = STATUS_OK;
 			}
@@ -231,7 +232,7 @@ bool BaseSprite::loadBuffer(byte *buffer, bool complete, int lifeTime, TSpriteCa
 
 	if (complete) {
 		if (parser.getCommand((char **)&buffer, commands, (char **)&params) != TOKEN_SPRITE) {
-			_gameRef->LOG(0, "'SPRITE' keyword expected.");
+			BaseEngine::LOG(0, "'SPRITE' keyword expected.");
 			return STATUS_FAILED;
 		}
 		buffer = params;
@@ -311,7 +312,7 @@ bool BaseSprite::loadBuffer(byte *buffer, bool complete, int lifeTime, TSpriteCa
 
 			if (DID_FAIL(frame->loadBuffer(params, frameLifeTime, _streamedKeepLoaded))) {
 				delete frame;
-				_gameRef->LOG(0, "Error parsing frame %d", frameCount);
+				BaseEngine::LOG(0, "Error parsing frame %d", frameCount);
 				return STATUS_FAILED;
 			}
 
@@ -330,7 +331,7 @@ bool BaseSprite::loadBuffer(byte *buffer, bool complete, int lifeTime, TSpriteCa
 	}
 
 	if (cmd == PARSERR_TOKENNOTFOUND) {
-		_gameRef->LOG(0, "Syntax error in SPRITE definition");
+		BaseEngine::LOG(0, "Syntax error in SPRITE definition");
 		return STATUS_FAILED;
 	}
 	_canBreak = !_continuous;
diff --git a/engines/wintermute/base/base_string_table.cpp b/engines/wintermute/base/base_string_table.cpp
index 11ec7b0..8207c32 100644
--- a/engines/wintermute/base/base_string_table.cpp
+++ b/engines/wintermute/base/base_string_table.cpp
@@ -29,6 +29,7 @@
 #include "engines/wintermute/platform_osystem.h"
 #include "engines/wintermute/base/base_file_manager.h"
 #include "engines/wintermute/base/base_game.h"
+#include "engines/wintermute/base/base_engine.h"
 #include "engines/wintermute/base/base_string_table.h"
 #include "common/str.h"
 
@@ -64,7 +65,7 @@ bool BaseStringTable::addString(const char *key, const char *val, bool reportDup
 
 	StringsIter it = _strings.find(finalKey);
 	if (it != _strings.end() && reportDuplicities) {
-		_gameRef->LOG(0, "  Warning: Duplicate definition of string '%s'.", finalKey.c_str());
+		BaseEngine::LOG(0, "  Warning: Duplicate definition of string '%s'.", finalKey.c_str());
 	}
 
 	_strings[finalKey] = val;
@@ -185,7 +186,7 @@ const char *BaseStringTable::expandStatic(const char *string) const {
 
 //////////////////////////////////////////////////////////////////////////
 bool BaseStringTable::loadFile(const char *filename, bool clearOld) {
-	_gameRef->LOG(0, "Loading string table...");
+	BaseEngine::LOG(0, "Loading string table...");
 
 	if (clearOld) {
 		_strings.clear();
@@ -194,7 +195,7 @@ bool BaseStringTable::loadFile(const char *filename, bool clearOld) {
 	uint32 size;
 	byte *buffer = BaseFileManager::getEngineInstance()->readWholeFile(filename, &size);
 	if (buffer == nullptr) {
-		_gameRef->LOG(0, "BaseStringTable::LoadFile failed for file '%s'", filename);
+		BaseEngine::LOG(0, "BaseStringTable::LoadFile failed for file '%s'", filename);
 		return STATUS_FAILED;
 	}
 
@@ -205,7 +206,7 @@ bool BaseStringTable::loadFile(const char *filename, bool clearOld) {
 		if (_gameRef->_textEncoding != TEXT_UTF8) {
 			_gameRef->_textEncoding = TEXT_UTF8;
 			//_gameRef->_textEncoding = TEXT_ANSI;
-			_gameRef->LOG(0, "  UTF8 file detected, switching to UTF8 text encoding");
+			BaseEngine::LOG(0, "  UTF8 file detected, switching to UTF8 text encoding");
 		}
 	} else {
 		_gameRef->_textEncoding = TEXT_ANSI;
@@ -247,7 +248,7 @@ bool BaseStringTable::loadFile(const char *filename, bool clearOld) {
 
 	delete[] buffer;
 
-	_gameRef->LOG(0, "  %d strings loaded", _strings.size());
+	BaseEngine::LOG(0, "  %d strings loaded", _strings.size());
 
 	return STATUS_OK;
 }
diff --git a/engines/wintermute/base/base_sub_frame.cpp b/engines/wintermute/base/base_sub_frame.cpp
index c8c0773..f71935b 100644
--- a/engines/wintermute/base/base_sub_frame.cpp
+++ b/engines/wintermute/base/base_sub_frame.cpp
@@ -33,6 +33,7 @@
 #include "engines/wintermute/base/gfx/base_surface.h"
 #include "engines/wintermute/base/base_surface_storage.h"
 #include "engines/wintermute/base/base_game.h"
+#include "engines/wintermute/base/base_engine.h"
 #include "engines/wintermute/platform_osystem.h"
 #include "engines/wintermute/base/gfx/base_renderer.h"
 #include "engines/wintermute/base/scriptables/script_value.h"
@@ -180,7 +181,7 @@ bool BaseSubFrame::loadBuffer(byte *buffer, int lifeTime, bool keepLoaded) {
 		}
 	}
 	if (cmd == PARSERR_TOKENNOTFOUND) {
-		_gameRef->LOG(0, "Syntax error in SUBFRAME definition");
+		BaseEngine::LOG(0, "Syntax error in SUBFRAME definition");
 		return STATUS_FAILED;
 	}
 
@@ -200,7 +201,7 @@ bool BaseSubFrame::loadBuffer(byte *buffer, int lifeTime, bool keepLoaded) {
 	/*
 	if (_surface == nullptr)
 	{
-	    _gameRef->LOG(0, "Error parsing sub-frame. Image not set.");
+	    BaseEngine::LOG(0, "Error parsing sub-frame. Image not set.");
 	    return STATUS_FAILED;
 	}
 	*/
diff --git a/engines/wintermute/base/base_surface_storage.cpp b/engines/wintermute/base/base_surface_storage.cpp
index 9c9b7dc..d0e6042 100644
--- a/engines/wintermute/base/base_surface_storage.cpp
+++ b/engines/wintermute/base/base_surface_storage.cpp
@@ -30,6 +30,7 @@
 #include "engines/wintermute/base/gfx/base_surface.h"
 #include "engines/wintermute/base/gfx/base_renderer.h"
 #include "engines/wintermute/base/base_game.h"
+#include "engines/wintermute/base/base_engine.h"
 #include "engines/wintermute/base/base_file_manager.h"
 #include "engines/wintermute/platform_osystem.h"
 #include "common/str.h"
@@ -54,7 +55,7 @@ BaseSurfaceStorage::~BaseSurfaceStorage() {
 bool BaseSurfaceStorage::cleanup(bool warn) {
 	for (uint32 i = 0; i < _surfaces.size(); i++) {
 		if (warn) {
-			_gameRef->LOG(0, "BaseSurfaceStorage warning: purging surface '%s', usage:%d", _surfaces[i]->getFileName(), _surfaces[i]->_referenceCount);
+			BaseEngine::LOG(0, "BaseSurfaceStorage warning: purging surface '%s', usage:%d", _surfaces[i]->getFileName(), _surfaces[i]->_referenceCount);
 		}
 		delete _surfaces[i];
 	}
@@ -111,7 +112,7 @@ BaseSurface *BaseSurfaceStorage::addSurface(const Common::String &filename, bool
 
 	if (!BaseFileManager::getEngineInstance()->hasFile(filename)) {
 		if (filename.size()) {
-			_gameRef->LOG(0, "Missing image: '%s'", filename.c_str());
+			BaseEngine::LOG(0, "Missing image: '%s'", filename.c_str());
 		}
 		if (_gameRef->_debugDebugMode) {
 			return addSurface("invalid_debug.bmp", defaultCK, ckRed, ckGreen, ckBlue, lifeTime, keepLoaded);
@@ -144,7 +145,7 @@ bool BaseSurfaceStorage::restoreAll() {
 	for (uint32 i = 0; i < _surfaces.size(); i++) {
 		ret = _surfaces[i]->restore();
 		if (ret != STATUS_OK) {
-			_gameRef->LOG(0, "BaseSurfaceStorage::RestoreAll failed");
+			BaseEngine::LOG(0, "BaseSurfaceStorage::RestoreAll failed");
 			return ret;
 		}
 	}
diff --git a/engines/wintermute/base/saveload.cpp b/engines/wintermute/base/saveload.cpp
index 465684a..1b7dfd4 100644
--- a/engines/wintermute/base/saveload.cpp
+++ b/engines/wintermute/base/saveload.cpp
@@ -75,7 +75,7 @@ bool SaveLoad::loadGame(const Common::String &filename, BaseGame *gameRef) {
 
 	gameRef->_renderer->endSaveLoad();
 
-	//_gameRef->LOG(0, "Load end %d", BaseUtils::GetUsedMemMB());
+	//BaseEngine::LOG(0, "Load end %d", BaseUtils::GetUsedMemMB());
 	// AdGame:
 	if (DID_SUCCEED(ret)) {
 		SystemClassRegistry::getInstance()->enumInstances(SaveLoad::afterLoadRegion, "AdRegion", nullptr);


Commit: a00c372f9eff8da8820cb06ed784fefb5cac247f
    https://github.com/scummvm/scummvm/commit/a00c372f9eff8da8820cb06ed784fefb5cac247f
Author: Einar Johan Trøan Sømåen (einarjohants at gmail.com)
Date: 2013-04-18T03:31:27-07:00

Commit Message:
WINTERMUTE: Get Renderer from BaseEngine, not BaseGame in BaseClasses.

Changed paths:
    engines/wintermute/base/base_active_rect.cpp
    engines/wintermute/base/base_sub_frame.cpp
    engines/wintermute/base/base_surface_storage.cpp
    engines/wintermute/base/base_transition_manager.cpp



diff --git a/engines/wintermute/base/base_active_rect.cpp b/engines/wintermute/base/base_active_rect.cpp
index 4c62cf9..7a91854 100644
--- a/engines/wintermute/base/base_active_rect.cpp
+++ b/engines/wintermute/base/base_active_rect.cpp
@@ -28,6 +28,7 @@
 
 #include "engines/wintermute/base/base_active_rect.h"
 #include "engines/wintermute/base/base_game.h"
+#include "engines/wintermute/base/base_engine.h"
 #include "engines/wintermute/base/base_region.h"
 #include "engines/wintermute/base/gfx/base_renderer.h"
 #include "engines/wintermute/platform_osystem.h"
@@ -89,7 +90,7 @@ void BaseActiveRect::clipRect() {
 	Rect32 rc;
 	bool customViewport;
 	_gameRef->getCurrentViewportRect(&rc, &customViewport);
-	BaseRenderer *Rend = _gameRef->_renderer;
+	BaseRenderer *Rend = BaseEngine::getRenderer();
 
 	if (!customViewport) {
 		rc.left -= Rend->_drawOffsetX;
diff --git a/engines/wintermute/base/base_sub_frame.cpp b/engines/wintermute/base/base_sub_frame.cpp
index f71935b..d93cf66 100644
--- a/engines/wintermute/base/base_sub_frame.cpp
+++ b/engines/wintermute/base/base_sub_frame.cpp
@@ -239,9 +239,9 @@ bool BaseSubFrame::draw(int x, int y, BaseObject *registerOwner, float zoomX, fl
 
 	if (registerOwner != nullptr && !_decoration) {
 		if (zoomX == 100 && zoomY == 100) {
-			_gameRef->_renderer->addRectToList(new BaseActiveRect(_gameRef,  registerOwner, this, x - _hotspotX + getRect().left, y  - _hotspotY + getRect().top, getRect().right - getRect().left, getRect().bottom - getRect().top, zoomX, zoomY, precise));
+			BaseEngine::getRenderer()->addRectToList(new BaseActiveRect(_gameRef,  registerOwner, this, x - _hotspotX + getRect().left, y  - _hotspotY + getRect().top, getRect().right - getRect().left, getRect().bottom - getRect().top, zoomX, zoomY, precise));
 		} else {
-			_gameRef->_renderer->addRectToList(new BaseActiveRect(_gameRef,  registerOwner, this, (int)(x - (_hotspotX + getRect().left) * (zoomX / 100)), (int)(y - (_hotspotY + getRect().top) * (zoomY / 100)), (int)((getRect().right - getRect().left) * (zoomX / 100)), (int)((getRect().bottom - getRect().top) * (zoomY / 100)), zoomX, zoomY, precise));
+			BaseEngine::getRenderer()->addRectToList(new BaseActiveRect(_gameRef,  registerOwner, this, (int)(x - (_hotspotX + getRect().left) * (zoomX / 100)), (int)(y - (_hotspotY + getRect().top) * (zoomY / 100)), (int)((getRect().right - getRect().left) * (zoomX / 100)), (int)((getRect().bottom - getRect().top) * (zoomY / 100)), zoomX, zoomY, precise));
 		}
 	}
 	if (_gameRef->getSuspendedRendering()) {
diff --git a/engines/wintermute/base/base_surface_storage.cpp b/engines/wintermute/base/base_surface_storage.cpp
index d0e6042..8dbd6a6 100644
--- a/engines/wintermute/base/base_surface_storage.cpp
+++ b/engines/wintermute/base/base_surface_storage.cpp
@@ -122,7 +122,7 @@ BaseSurface *BaseSurfaceStorage::addSurface(const Common::String &filename, bool
 	}
 
 	BaseSurface *surface;
-	surface = _gameRef->_renderer->createSurface();
+	surface = BaseEngine::getRenderer()->createSurface();
 
 	if (!surface) {
 		return nullptr;
diff --git a/engines/wintermute/base/base_transition_manager.cpp b/engines/wintermute/base/base_transition_manager.cpp
index 6ae51d8..1c869e6 100644
--- a/engines/wintermute/base/base_transition_manager.cpp
+++ b/engines/wintermute/base/base_transition_manager.cpp
@@ -28,6 +28,7 @@
 
 #include "engines/wintermute/base/base_transition_manager.h"
 #include "engines/wintermute/base/base_game.h"
+#include "engines/wintermute/base/base_engine.h"
 #include "engines/wintermute/base/gfx/base_renderer.h"
 
 namespace Wintermute {
@@ -103,7 +104,7 @@ bool BaseTransitionMgr::update() {
 		uint32 time = g_system->getMillis() - _lastTime;
 		int alpha = (int)(255 - (float)time / (float)FADE_DURATION * 255);
 		alpha = MIN(255, MAX(alpha, 0));
-		_gameRef->_renderer->fade((uint16)alpha);
+		BaseEngine::getRenderer()->fade((uint16)alpha);
 
 		if (time > FADE_DURATION) {
 			_state = TRANS_MGR_READY;
@@ -115,7 +116,7 @@ bool BaseTransitionMgr::update() {
 		uint32 time = g_system->getMillis() - _lastTime;
 		int alpha = (int)((float)time / (float)FADE_DURATION * 255);
 		alpha = MIN(255, MAX(alpha, 0));
-		_gameRef->_renderer->fade((uint16)alpha);
+		BaseEngine::getRenderer()->fade((uint16)alpha);
 
 		if (time > FADE_DURATION) {
 			_state = TRANS_MGR_READY;






More information about the Scummvm-git-logs mailing list