[Scummvm-git-logs] scummvm master -> 831087f77720574e4e3491b55a8fcd4d05607809

aquadran noreply at scummvm.org
Wed Sep 3 19:22:17 UTC 2025


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

Summary:
831087f777 WINTERMUTE: Restore original code related timer


Commit: 831087f77720574e4e3491b55a8fcd4d05607809
    https://github.com/scummvm/scummvm/commit/831087f77720574e4e3491b55a8fcd4d05607809
Author: Paweł Kołodziejski (aquadran at gmail.com)
Date: 2025-09-03T21:22:12+02:00

Commit Message:
WINTERMUTE: Restore original code related timer

Changed paths:
  R engines/wintermute/base/timer.cpp
  R engines/wintermute/base/timer.h
    engines/wintermute/ad/ad_actor.cpp
    engines/wintermute/ad/ad_actor_3dx.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_fader.cpp
    engines/wintermute/base/base_game.cpp
    engines/wintermute/base/base_game.h
    engines/wintermute/base/base_sprite.cpp
    engines/wintermute/base/base_surface_storage.cpp
    engines/wintermute/base/gfx/base_surface.cpp
    engines/wintermute/base/gfx/osystem/base_surface_osystem.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 4fda047016b..4296087c18c 100644
--- a/engines/wintermute/ad/ad_actor.cpp
+++ b/engines/wintermute/ad/ad_actor.cpp
@@ -755,7 +755,7 @@ bool AdActor::update() {
 			_tempSprite2 = _sentence->_currentSprite;
 		}
 
-		bool timeIsUp = (_sentence->_sound && _sentence->_soundStarted && (!_sentence->_sound->isPlaying() && !_sentence->_sound->isPaused())) || (!_sentence->_sound && _sentence->_duration <= _game->getTimer()->getTime() - _sentence->_startTime);
+		bool timeIsUp = (_sentence->_sound && _sentence->_soundStarted && (!_sentence->_sound->isPlaying() && !_sentence->_sound->isPaused())) || (!_sentence->_sound && _sentence->_duration <= _game->_timer - _sentence->_startTime);
 		if (_tempSprite2 == nullptr || _tempSprite2->_finished || (/*_tempSprite2->_looping &&*/ timeIsUp)) {
 			if (timeIsUp) {
 				_sentence->finish();
diff --git a/engines/wintermute/ad/ad_actor_3dx.cpp b/engines/wintermute/ad/ad_actor_3dx.cpp
index 9de4eb36201..e482d6be673 100644
--- a/engines/wintermute/ad/ad_actor_3dx.cpp
+++ b/engines/wintermute/ad/ad_actor_3dx.cpp
@@ -288,7 +288,7 @@ bool AdActor3DX::update() {
 			_tempSkelAnim = _sentence->_currentSkelAnim;
 		}
 
-		bool timeIsUp = (_sentence->_sound && _sentence->_soundStarted && (!_sentence->_sound->isPlaying() && !_sentence->_sound->isPaused())) || (!_sentence->_sound && _sentence->_duration <= _game->getTimer()->getTime() - _sentence->_startTime);
+		bool timeIsUp = (_sentence->_sound && _sentence->_soundStarted && (!_sentence->_sound->isPlaying() && !_sentence->_sound->isPaused())) || (!_sentence->_sound && _sentence->_duration <= _game->_timer - _sentence->_startTime);
 		if (_tempSkelAnim == nullptr || !_xmodel->isAnimPending(0, _tempSkelAnim) || timeIsUp) {
 			if (timeIsUp) {
 				_sentence->finish();
diff --git a/engines/wintermute/ad/ad_entity.cpp b/engines/wintermute/ad/ad_entity.cpp
index 7343c8172b5..f75129bf6ce 100644
--- a/engines/wintermute/ad/ad_entity.cpp
+++ b/engines/wintermute/ad/ad_entity.cpp
@@ -650,7 +650,7 @@ bool AdEntity::update() {
 			_tempSprite2 = _sentence->_currentSprite;
 		}
 
-		bool timeIsUp = (_sentence->_sound && _sentence->_soundStarted && (!_sentence->_sound->isPlaying() && !_sentence->_sound->isPaused())) || (!_sentence->_sound && _sentence->_duration <= _game->getTimer()->getTime() - _sentence->_startTime);
+		bool timeIsUp = (_sentence->_sound && _sentence->_soundStarted && (!_sentence->_sound->isPlaying() && !_sentence->_sound->isPaused())) || (!_sentence->_sound && _sentence->_duration <= _game->_timer - _sentence->_startTime);
 		if (_tempSprite2 == nullptr || _tempSprite2->_finished || (/*_tempSprite2->_looping &&*/ timeIsUp)) {
 			if (timeIsUp) {
 				_sentence->finish();
diff --git a/engines/wintermute/ad/ad_item.cpp b/engines/wintermute/ad/ad_item.cpp
index 43f803afb4b..e22fa57ca1a 100644
--- a/engines/wintermute/ad/ad_item.cpp
+++ b/engines/wintermute/ad/ad_item.cpp
@@ -375,7 +375,7 @@ bool AdItem::update() {
 			_tempSprite2 = _sentence->_currentSprite;
 		}
 
-		bool timeIsUp = (_sentence->_sound && _sentence->_soundStarted && (!_sentence->_sound->isPlaying() && !_sentence->_sound->isPaused())) || (!_sentence->_sound && _sentence->_duration <= _game->getTimer()->getTime() - _sentence->_startTime);
+		bool timeIsUp = (_sentence->_sound && _sentence->_soundStarted && (!_sentence->_sound->isPlaying() && !_sentence->_sound->isPaused())) || (!_sentence->_sound && _sentence->_duration <= _game->_timer - _sentence->_startTime);
 		if (_tempSprite2 == nullptr || _tempSprite2->_finished || (/*_tempSprite2->_looping &&*/ timeIsUp)) {
 			if (timeIsUp) {
 				_sentence->finish();
diff --git a/engines/wintermute/ad/ad_object.cpp b/engines/wintermute/ad/ad_object.cpp
index 1c87279fb81..db2afd5c4cf 100644
--- a/engines/wintermute/ad/ad_object.cpp
+++ b/engines/wintermute/ad/ad_object.cpp
@@ -870,7 +870,7 @@ int32 AdObject::getHeight() {
 }
 
 //////////////////////////////////////////////////////////////////////////
-void AdObject::talk(const char *text, const char *sound, uint32 duration, const char *stances, TTextAlign Align) {
+void AdObject::talk(const char *text, const char *sound, uint32 duration, const char *stances, TTextAlign align) {
 	if (!_sentence) {
 		_sentence = new AdSentence(_game);
 	}
@@ -889,8 +889,8 @@ void AdObject::talk(const char *text, const char *sound, uint32 duration, const
 	_game->expandStringByStringTable(&_sentence->_text);
 	_sentence->setStances(stances);
 	_sentence->_duration = duration;
-	_sentence->_align = Align;
-	_sentence->_startTime = _game->getTimer()->getTime();
+	_sentence->_align = align;
+	_sentence->_startTime = _game->_timer;
 	_sentence->_currentStance = -1;
 	_sentence->_font = _font == nullptr ? _game->_systemFont : _font;
 	_sentence->_freezable = _freezable;
diff --git a/engines/wintermute/ad/ad_scene.cpp b/engines/wintermute/ad/ad_scene.cpp
index 9c1258bec3b..e8ecb3b89d2 100644
--- a/engines/wintermute/ad/ad_scene.cpp
+++ b/engines/wintermute/ad/ad_scene.cpp
@@ -1091,15 +1091,15 @@ bool AdScene::traverseNodes(bool doUpdate) {
 
 		if (_autoScroll) {
 			// adjust horizontal scroll
-			if (_game->getTimer()->getTime() - _lastTimeH >= _scrollTimeH) {
+			if (_game->_timer - _lastTimeH >= _scrollTimeH) {
 
 				// Cap the amount of catch-up to avoid jittery characters.
-				int timesMissed = (_game->getTimer()->getTime() - _lastTimeH) / _scrollTimeH;
+				int timesMissed = (_game->_timer - _lastTimeH) / _scrollTimeH;
 				if (timesMissed > 2) {
 					timesMissed = 2;
 				}
 
-				_lastTimeH = _game->getTimer()->getTime();
+				_lastTimeH = _game->_timer;
 				if (_offsetLeft < _targetOffsetLeft) {
 					_offsetLeft += _scrollPixelsH * timesMissed;
 					_offsetLeft = MIN(_offsetLeft, _targetOffsetLeft);
@@ -1110,15 +1110,15 @@ bool AdScene::traverseNodes(bool doUpdate) {
 			}
 
 			// adjust vertical scroll
-			if (_game->getTimer()->getTime() - _lastTimeV >= _scrollTimeV) {
+			if (_game->_timer - _lastTimeV >= _scrollTimeV) {
 
 				// Cap the amount of catch-up to avoid jittery characters.
-				int timesMissed = (_game->getTimer()->getTime() - _lastTimeV) / _scrollTimeV;
+				int timesMissed = (_game->_timer - _lastTimeV) / _scrollTimeV;
 				if (timesMissed > 2) {
 					timesMissed = 2;
 				}
 
-				_lastTimeV = _game->getTimer()->getTime();
+				_lastTimeV = _game->_timer;
 				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 83894086168..bd8ec04edd1 100644
--- a/engines/wintermute/ad/ad_sentence.cpp
+++ b/engines/wintermute/ad/ad_sentence.cpp
@@ -301,10 +301,10 @@ bool AdSentence::update(TDirection dir) {
 	// if sound is available, synchronize with sound, otherwise use timer
 
 	/*
-	if (_sound) CurrentTime = _sound->GetPositionTime();
-	else CurrentTime = _game->getTimer()->getTime() - _startTime;
+	if (_sound) currentTime = _sound->getPositionTime();
+	else currentTime = _game->_timer - _startTime;
 	*/
-	currentTime = _game->getTimer()->getTime() - _startTime;
+	currentTime = _game->_timer - _startTime;
 
 	bool talkNodeFound = false;
 	for (int32 i = 0; i < _talkDef->_nodes.getSize(); i++) {
@@ -343,7 +343,7 @@ bool AdSentence::update(TDirection dir) {
 //////////////////////////////////////////////////////////////////////////
 bool AdSentence::canSkip() {
 	// prevent accidental sentence skipping (TODO make configurable)
-	return (_game->getTimer()->getTime() - _startTime) > 300;
+	return (_game->_timer - _startTime) > 300;
 }
 
 } // End of namespace Wintermute
diff --git a/engines/wintermute/base/base_engine.cpp b/engines/wintermute/base/base_engine.cpp
index 44620326074..6848f98eea8 100644
--- a/engines/wintermute/base/base_engine.cpp
+++ b/engines/wintermute/base/base_engine.cpp
@@ -112,20 +112,4 @@ 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_fader.cpp b/engines/wintermute/base/base_fader.cpp
index 92b51a7492e..0601b1998da 100644
--- a/engines/wintermute/base/base_fader.cpp
+++ b/engines/wintermute/base/base_fader.cpp
@@ -27,7 +27,7 @@
 
 #include "engines/wintermute/base/base_fader.h"
 #include "engines/wintermute/base/base_engine.h"
-#include "engines/wintermute/base/timer.h"
+#include "engines/wintermute/base/base_game.h"
 #include "engines/wintermute/base/gfx/base_renderer.h"
 #include "common/util.h"
 
@@ -71,7 +71,7 @@ bool BaseFader::update() {
 	if (_system) {
 		time = g_system->getMillis() - _startTime;
 	} else {
-		time = BaseEngine::getTimer()->getTime() - _startTime;
+		time = _game->_timer - _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 = BaseEngine::getTimer()->getTime();
+		_startTime = _game->_timer;
 	}
 
 	return STATUS_OK;
@@ -155,7 +155,7 @@ bool BaseFader::fadeOut(uint32 targetColor, uint32 duration, bool system) {
 	if (_system) {
 		_startTime = g_system->getMillis();
 	} else {
-		_startTime = BaseEngine::getTimer()->getTime();
+		_startTime = _game->_timer;
 	}
 
 
diff --git a/engines/wintermute/base/base_game.cpp b/engines/wintermute/base/base_game.cpp
index 0537b63421b..c5ffb4266db 100644
--- a/engines/wintermute/base/base_game.cpp
+++ b/engines/wintermute/base/base_game.cpp
@@ -99,7 +99,7 @@ IMPLEMENT_PERSISTENT(BaseGame, true)
 
 
 //////////////////////////////////////////////////////////////////////
-BaseGame::BaseGame(const Common::String &targetName) : BaseObject(this), _targetName(targetName), _timerNormal(), _timerLive() {
+BaseGame::BaseGame(const Common::String &targetName) : BaseObject(this), _targetName(targetName) {
 	_shuttingDown = false;
 
 	_state = GAME_RUNNING;
@@ -144,6 +144,14 @@ BaseGame::BaseGame(const Common::String &targetName) : BaseObject(this), _target
 	_subtitles = true;
 	_videoSubtitles = true;
 
+	_timer = 0;
+	_timerDelta = 0;
+	_timerLast = 0;
+
+	_liveTimer = 0;
+	_liveTimerDelta = 0;
+	_liveTimerLast = 0;
+
 	_sequence = 0;
 
 	_mousePos.x = _mousePos.y = 0;
@@ -695,12 +703,16 @@ bool BaseGame::initLoop() {
 	_lastTime  = _currentTime;
 	_fpsTime += _deltaTime;
 
-	_timerLive.updateTime(_deltaTime, 1000);
+	_liveTimerDelta = _liveTimer - _liveTimerLast;
+	_liveTimerLast = _liveTimer;
+	_liveTimer += MIN((uint32)1000, _deltaTime);
 
 	if (_state != GAME_FROZEN) {
-		_timerNormal.updateTime(_deltaTime, 1000);
+		_timerDelta = _timer - _timerLast;
+		_timerLast = _timer;
+		_timer += MIN((uint32)1000, _deltaTime);
 	} else {
-		_timerNormal.setTimeDelta(0);
+		_timerDelta = 0;
 	}
 
 	_framesRendered++;
@@ -1483,7 +1495,7 @@ bool BaseGame::scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack
 			return STATUS_OK;
 		}
 
-		_musicCrossfadeStartTime = _game->getLiveTimer()->getTime();
+		_musicCrossfadeStartTime = _game->_liveTimer;
 		_musicCrossfadeChannel1 = channel1;
 		_musicCrossfadeChannel2 = channel2;
 		_musicCrossfadeLength = fadeLength;
@@ -1515,7 +1527,7 @@ bool BaseGame::scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack
 			return STATUS_OK;
 		}
 
-		_musicCrossfadeStartTime = _game->getLiveTimer()->getTime();
+		_musicCrossfadeStartTime = _game->_liveTimer;
 		_musicCrossfadeChannel1 = channel;
 		_musicCrossfadeChannel2 = channel;
 		_musicCrossfadeLength = fadeLength;
@@ -2737,7 +2749,7 @@ ScValue *BaseGame::scGetProperty(const Common::String &name) {
 	// CurrentTime (RO)
 	//////////////////////////////////////////////////////////////////////////
 	else if (name == "CurrentTime") {
-		_scValue->setInt((int)getTimer()->getTime());
+		_scValue->setInt((int)_timer);
 		return _scValue;
 	}
 
@@ -4285,7 +4297,7 @@ bool BaseGame::updateMusicCrossfade() {
 		_music[_musicCrossfadeChannel2]->play();
 	}
 
-	uint32 currentTime = _game->getLiveTimer()->getTime() - _musicCrossfadeStartTime;
+	uint32 currentTime = _game->_liveTimer - _musicCrossfadeStartTime;
 
 	if (currentTime >= _musicCrossfadeLength) {
 		_musicCrossfadeRunning = false;
@@ -4390,8 +4402,13 @@ bool BaseGame::persist(BasePersistenceManager *persistMgr) {
 	persistMgr->transferPtr(TMEMBER_PTR(_videoFont));
 	persistMgr->transferBool(TMEMBER(_videoSubtitles));
 
-	_timerNormal.persist(persistMgr);
-	_timerLive.persist(persistMgr);
+	persistMgr->transferUint32(TMEMBER(_timer));
+	persistMgr->transferUint32(TMEMBER(_timerDelta));
+	persistMgr->transferUint32(TMEMBER(_timerLast));
+
+	persistMgr->transferUint32(TMEMBER(_liveTimer));
+	persistMgr->transferUint32(TMEMBER(_liveTimerDelta));
+	persistMgr->transferUint32(TMEMBER(_liveTimerLast));
 
 	_renderer->persistSaveLoadImages(persistMgr);
 
@@ -5101,7 +5118,7 @@ bool BaseGame::displayDebugInfo() {
 		_systemFont->drawText((byte *)str, 0, 70, _renderer->getWidth(), TAL_RIGHT);
 
 
-		Common::sprintf_s(str, "Timer: %d", getTimer()->getTime());
+		Common::sprintf_s(str, "Timer: %d", _timer);
 		_game->_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 a991b8a0b0a..2bcb928ff45 100644
--- a/engines/wintermute/base/base_game.h
+++ b/engines/wintermute/base/base_game.h
@@ -30,7 +30,6 @@
 
 #include "engines/wintermute/base/base_object.h"
 #include "engines/wintermute/base/base_game_custom_actions.h"
-#include "engines/wintermute/base/timer.h"
 #include "engines/wintermute/ext/plugin_event.h"
 #include "engines/wintermute/persistent.h"
 #include "engines/wintermute/coll_templ.h"
@@ -305,8 +304,13 @@ public:
 	TGameState _state;
 	TGameState _origState;
 	bool _origInteractive;
-	Timer _timerNormal;
-	Timer _timerLive;
+	uint32 _timer;
+	uint32 _timerDelta;
+	uint32 _timerLast;
+
+	uint32 _liveTimer;
+	uint32 _liveTimerDelta;
+	uint32 _liveTimerLast;
 
 	BaseObject *_capturedObject;
 	Common::Point32 _mousePos;
@@ -398,8 +402,6 @@ public:
 
 	bool getBilinearFiltering() { return _bilinearFiltering; }
 	void addMem(int32 bytes);
-	const Timer *getTimer() const { return &_timerNormal; }
-	const Timer *getLiveTimer() const { return &_timerLive; }
 
 	void autoSaveOnExit();
 	PluginEvent &pluginEvents() { return _pluginEvents; }
diff --git a/engines/wintermute/base/base_sprite.cpp b/engines/wintermute/base/base_sprite.cpp
index b63b4fd662f..f5db41df4e0 100644
--- a/engines/wintermute/base/base_sprite.cpp
+++ b/engines/wintermute/base/base_sprite.cpp
@@ -364,9 +364,9 @@ bool BaseSprite::getCurrentFrame(float zoomX, float zoomY) {
 
 	uint32 timer;
 	if (_owner && _owner->_freezable) {
-		timer = _game->getTimer()->getTime();
+		timer = _game->_timer;
 	} else {
-		timer = _game->getLiveTimer()->getTime();
+		timer = _game->_liveTimer;
 	}
 
 	int lastFrame = _currentFrame;
diff --git a/engines/wintermute/base/base_surface_storage.cpp b/engines/wintermute/base/base_surface_storage.cpp
index 41ee90f447f..12b1d5f0b54 100644
--- a/engines/wintermute/base/base_surface_storage.cpp
+++ b/engines/wintermute/base/base_surface_storage.cpp
@@ -67,15 +67,15 @@ bool BaseSurfaceStorage::cleanup(bool warn) {
 
 //////////////////////////////////////////////////////////////////////////
 bool BaseSurfaceStorage::initLoop() {
-	if (_game->_smartCache && _game->getLiveTimer()->getTime() - _lastCleanupTime >= _game->_surfaceGCCycleTime) {
-		_lastCleanupTime = _game->getLiveTimer()->getTime();
+	if (_game->_smartCache && _game->_liveTimer - _lastCleanupTime >= _game->_surfaceGCCycleTime) {
+		_lastCleanupTime = _game->_liveTimer;
 		sortSurfaces();
 		for (int32 i = 0; i < _surfaces.getSize(); i++) {
 			if (_surfaces[i]->_lifeTime <= 0) {
 				break;
 			}
 
-			if (_surfaces[i]->_lifeTime > 0 && _surfaces[i]->_valid && (int)(_game->getLiveTimer()->getTime() - _surfaces[i]->_lastUsedTime) >= _surfaces[i]->_lifeTime) {
+			if (_surfaces[i]->_lifeTime > 0 && _surfaces[i]->_valid && (int)(_game->_liveTimer - _surfaces[i]->_lastUsedTime) >= _surfaces[i]->_lifeTime) {
 				//_game->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 3677d2dfe3f..45d03af3301 100644
--- a/engines/wintermute/base/gfx/base_surface.cpp
+++ b/engines/wintermute/base/gfx/base_surface.cpp
@@ -85,7 +85,7 @@ bool BaseSurface::invalidate() {
 
 //////////////////////////////////////////////////////////////////////////
 bool BaseSurface::prepareToDraw() {
-	_lastUsedTime = _game->getLiveTimer()->getTime();
+	_lastUsedTime = _game->_liveTimer;
 
 	if (!_valid) {
 		//_game->LOG(0, "Reviving: %s", _filename);
diff --git a/engines/wintermute/base/gfx/osystem/base_surface_osystem.cpp b/engines/wintermute/base/gfx/osystem/base_surface_osystem.cpp
index 220971ae9ee..0a5ecfeca5c 100644
--- a/engines/wintermute/base/gfx/osystem/base_surface_osystem.cpp
+++ b/engines/wintermute/base/gfx/osystem/base_surface_osystem.cpp
@@ -273,7 +273,7 @@ bool BaseSurfaceOSystem::startPixelOp() {
 
 //////////////////////////////////////////////////////////////////////////
 bool BaseSurfaceOSystem::endPixelOp() {
-	_lastUsedTime = _game->getLiveTimer()->getTime();
+	_lastUsedTime = _game->_liveTimer;
 	_pixelOpReady = false;
 	if (_surfaceModified) {
 		BaseRenderOSystem *renderer = static_cast<BaseRenderOSystem *>(_game->_renderer);
@@ -332,7 +332,7 @@ bool BaseSurfaceOSystem::displayTiled(int x, int y, Common::Rect32 rect, int num
 bool BaseSurfaceOSystem::drawSprite(int x, int y, Common::Rect32 *rect, Common::Rect32 *newRect, Graphics::TransformStruct transform) {
 	BaseRenderOSystem *renderer = static_cast<BaseRenderOSystem *>(_game->_renderer);
 
-	_lastUsedTime = _game->getLiveTimer()->getTime();
+	_lastUsedTime = _game->_liveTimer;
 
 	// TODO: Skip this check if we can reuse an existing ticket?
 	if (!_valid) {
diff --git a/engines/wintermute/base/particles/part_emitter.cpp b/engines/wintermute/base/particles/part_emitter.cpp
index 73eeb1f58dc..26fc544246a 100644
--- a/engines/wintermute/base/particles/part_emitter.cpp
+++ b/engines/wintermute/base/particles/part_emitter.cpp
@@ -32,9 +32,9 @@
 #include "engines/wintermute/base/scriptables/script_value.h"
 #include "engines/wintermute/base/scriptables/script_stack.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/base_game.h"
 #include "engines/wintermute/base/gfx/base_renderer.h"
 #include "engines/wintermute/utils/utils.h"
 #include "engines/wintermute/platform_osystem.h"
@@ -252,7 +252,7 @@ bool PartEmitter::update() {
 	if (!_running) {
 		return STATUS_OK;
 	} else {
-		return updateInternal(BaseEngine::getTimer()->getTime(), BaseEngine::getTimer()->getTimeDelta());
+		return updateInternal(_game->_timer, _game->_timerDelta);
 	}
 }
 
@@ -353,7 +353,7 @@ bool PartEmitter::start() {
 	if (_overheadTime > 0) {
 		uint32 delta = 500;
 		int steps = _overheadTime / delta;
-		uint32 currentTime = BaseEngine::getTimer()->getTime() - _overheadTime;
+		uint32 currentTime = _game->_timer - _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 eaea1254a26..2b22184d7f1 100644
--- a/engines/wintermute/base/scriptables/script.cpp
+++ b/engines/wintermute/base/scriptables/script.cpp
@@ -1246,7 +1246,7 @@ bool ScScript::sleep(uint32 duration) {
 		_waitTime = g_system->getMillis() + duration;
 		_waitFrozen = true;
 	} else {
-		_waitTime = _game->getTimer()->getTime() + duration;
+		_waitTime = _game->_timer + 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 f218f841748..43522ef0b33 100644
--- a/engines/wintermute/base/scriptables/script_engine.cpp
+++ b/engines/wintermute/base/scriptables/script_engine.cpp
@@ -310,7 +310,7 @@ bool ScEngine::tick() {
 					_scripts[i]->run();
 				}
 			} else {
-				if (_scripts[i]->_waitTime <= _game->getTimer()->getTime()) {
+				if (_scripts[i]->_waitTime <= _game->_timer) {
 					_scripts[i]->run();
 				}
 			}
diff --git a/engines/wintermute/base/timer.cpp b/engines/wintermute/base/timer.cpp
deleted file mode 100644
index 83a11c5777e..00000000000
--- a/engines/wintermute/base/timer.cpp
+++ /dev/null
@@ -1,73 +0,0 @@
-/* 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 3 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, see <http://www.gnu.org/licenses/>.
- *
- */
-
-/*
- * 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->transferUint32(TMEMBER(_timer));
-	persistMgr->transferUint32(TMEMBER(_timerDelta));
-	persistMgr->transferUint32(TMEMBER(_timerLast));
-}
-
-} // End of namespace Wintermute
diff --git a/engines/wintermute/base/timer.h b/engines/wintermute/base/timer.h
deleted file mode 100644
index ed89b073798..00000000000
--- a/engines/wintermute/base/timer.h
+++ /dev/null
@@ -1,56 +0,0 @@
-/* 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 3 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, see <http://www.gnu.org/licenses/>.
- *
- */
-
-/*
- * 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
diff --git a/engines/wintermute/module.mk b/engines/wintermute/module.mk
index 5aa32084eab..5b082a9e0be 100644
--- a/engines/wintermute/module.mk
+++ b/engines/wintermute/module.mk
@@ -90,7 +90,6 @@ MODULE_OBJS := \
 	base/base_viewport.o \
 	base/saveload.o \
 	base/save_thumb_helper.o \
-	base/timer.o \
 	ext/dll_dlltest.o \
 	ext/dll_geturl.o \
 	ext/dll_httpconnect.o \
diff --git a/engines/wintermute/video/video_theora_player.cpp b/engines/wintermute/video/video_theora_player.cpp
index 348885fd43d..57479a4c243 100644
--- a/engines/wintermute/video/video_theora_player.cpp
+++ b/engines/wintermute/video/video_theora_player.cpp
@@ -272,7 +272,7 @@ bool VideoTheoraPlayer::stop() {
 
 //////////////////////////////////////////////////////////////////////////
 bool VideoTheoraPlayer::update() {
-	_currentTime = _freezeGame ? _game->getLiveTimer()->getTime() : _game->getTimer()->getTime();
+	_currentTime = _freezeGame ? _game->_liveTimer : _game->_timer;
 
 	if (!isPlaying()) {
 		return STATUS_OK;




More information about the Scummvm-git-logs mailing list