diff options
author | dhewg | 2011-03-12 12:24:14 +0100 |
---|---|---|
committer | dhewg | 2011-03-13 08:24:19 +0100 |
commit | 40333617ee4a0fede7c8cdec81a025ccab06e9e3 (patch) | |
tree | c4e35b9eb1f921f527469d82f3b973c683c17343 /engines/sword1/mouse.cpp | |
parent | 1566ef32b6bfd321415df09cc5e7b83ce56a1de0 (diff) | |
download | scummvm-rg350-40333617ee4a0fede7c8cdec81a025ccab06e9e3.tar.gz scummvm-rg350-40333617ee4a0fede7c8cdec81a025ccab06e9e3.tar.bz2 scummvm-rg350-40333617ee4a0fede7c8cdec81a025ccab06e9e3.zip |
SWORD1: Don't set the same cursor on every frame
Removes unnecessary overhead on the backend when the cursor has just
one frame.
Diffstat (limited to 'engines/sword1/mouse.cpp')
-rw-r--r-- | engines/sword1/mouse.cpp | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/engines/sword1/mouse.cpp b/engines/sword1/mouse.cpp index 751b27efc0..87e476e504 100644 --- a/engines/sword1/mouse.cpp +++ b/engines/sword1/mouse.cpp @@ -197,6 +197,7 @@ void Mouse::createPointer(uint32 ptrId, uint32 luggageId) { free(_currentPtr); _currentPtr = NULL; } + if (ptrId) { MousePtr *lugg = NULL; MousePtr *ptr = (MousePtr*)_resMan->openFetchRes(ptrId); @@ -284,6 +285,7 @@ void Mouse::createPointer(uint32 ptrId, uint32 luggageId) { void Mouse::setPointer(uint32 resId, uint32 rate) { _currentPtrId = resId; _frame = 0; + _activeFrame = -1; createPointer(resId, _currentLuggageId); @@ -298,15 +300,24 @@ void Mouse::setPointer(uint32 resId, uint32 rate) { void Mouse::setLuggage(uint32 resId, uint32 rate) { _currentLuggageId = resId; _frame = 0; + _activeFrame = -1; + createPointer(_currentPtrId, resId); } void Mouse::animate() { if ((Logic::_scriptVars[MOUSE_STATUS] == 1) || (_mouseOverride && _currentPtr)) { _frame = (_frame + 1) % _currentPtr->numFrames; + + if (_activeFrame == _frame) + return; + uint8 *ptrData = (uint8*)_currentPtr + sizeof(MousePtr); ptrData += _frame * _currentPtr->sizeX * _currentPtr->sizeY; + CursorMan.replaceCursor(ptrData, _currentPtr->sizeX, _currentPtr->sizeY, _currentPtr->hotSpotX, _currentPtr->hotSpotY, 255); + + _activeFrame = _frame; } } |