diff options
author | Paul Gilbert | 2014-04-19 17:43:44 -0400 |
---|---|---|
committer | Paul Gilbert | 2014-04-19 17:43:44 -0400 |
commit | c4669dd2f2ec850f3a42794dbbc134febed229e2 (patch) | |
tree | 33ef69d67e43e3f34245057eb281fa43aa15d7d6 | |
parent | 34d0bc72b571e5e6e0b4b4f3ee1a627cbf470d72 (diff) | |
download | scummvm-rg350-c4669dd2f2ec850f3a42794dbbc134febed229e2.tar.gz scummvm-rg350-c4669dd2f2ec850f3a42794dbbc134febed229e2.tar.bz2 scummvm-rg350-c4669dd2f2ec850f3a42794dbbc134febed229e2.zip |
MADS: Fix refresh of inventory list after scrolling
-rw-r--r-- | engines/mads/screen.cpp | 12 | ||||
-rw-r--r-- | engines/mads/screen.h | 1 | ||||
-rw-r--r-- | engines/mads/user_interface.cpp | 10 |
3 files changed, 7 insertions, 16 deletions
diff --git a/engines/mads/screen.cpp b/engines/mads/screen.cpp index 5f09737620..9dec5a8b1b 100644 --- a/engines/mads/screen.cpp +++ b/engines/mads/screen.cpp @@ -54,8 +54,6 @@ void DirtyArea::setArea(int width, int height, int maxWidth, int maxHeight) { right = maxWidth; _bounds.right = right; - _bounds2.left = _bounds.width() / 2; - _bounds2.right = _bounds.left + (_bounds.width() + 1) / 2 - 1; if (_bounds.top < 0) _bounds.top = 0; @@ -68,9 +66,6 @@ void DirtyArea::setArea(int width, int height, int maxWidth, int maxHeight) { bottom = maxHeight; _bounds.bottom = bottom; - _bounds2.top = _bounds.height() / 2; - _bounds2.bottom = _bounds.top + (_bounds.height() + 1) / 2 - 1; - _active = true; } @@ -193,7 +188,7 @@ void DirtyAreas::merge(int startIndex, int count) { * Returns true if two dirty areas intersect */ bool DirtyAreas::intersects(int idx1, int idx2) { - return (*this)[idx1]._bounds2.intersects((*this)[idx2]._bounds2); + return (*this)[idx1]._bounds.intersects((*this)[idx2]._bounds); } void DirtyAreas::mergeAreas(int idx1, int idx2) { @@ -202,11 +197,6 @@ void DirtyAreas::mergeAreas(int idx1, int idx2) { da1._bounds.extend(da2._bounds); - da1._bounds2.left = da1._bounds.width() / 2; - da1._bounds2.right = da1._bounds.left + (da1._bounds.width() + 1) / 2 - 1; - da1._bounds2.top = da1._bounds.height() / 2; - da1._bounds2.bottom = da1._bounds.top + (da1._bounds.height() + 1) / 2 - 1; - da2._active = false; da2._mergedArea = &da1; da1._textActive = true; diff --git a/engines/mads/screen.h b/engines/mads/screen.h index 272ef9ed56..ba01cbc468 100644 --- a/engines/mads/screen.h +++ b/engines/mads/screen.h @@ -66,7 +66,6 @@ private: friend class DirtyAreas; public: Common::Rect _bounds; - Common::Rect _bounds2; bool _textActive; bool _active; DirtyArea *_mergedArea; diff --git a/engines/mads/user_interface.cpp b/engines/mads/user_interface.cpp index 594d549f87..7b12ef4941 100644 --- a/engines/mads/user_interface.cpp +++ b/engines/mads/user_interface.cpp @@ -98,7 +98,7 @@ void UISlots::draw(bool updateFlag, bool delFlag) { if (dirtyAreaPtr) dirtyAreaPtr->_active = true; - // Copy parts of the user interface background that are going to have sprites drawn + // Copy parts of the user interface background that need to be erased for (uint idx = 0; idx < size(); ++idx) { DirtyArea &dirtyArea = userInterface._dirtyAreas[idx]; UISlot &slot = (*this)[idx]; @@ -106,11 +106,13 @@ void UISlots::draw(bool updateFlag, bool delFlag) { if (dirtyArea._active && dirtyArea._bounds.width() > 0 && dirtyArea._bounds.height() > 0 && slot._flags >= -20) { - // TODO: Figure out the difference between two copy methods used if (slot._flags >= IMG_ERASE) { + // Merge area + error("TODO: Create a sprite merge method"); userInterface._surface.copyTo(&userInterface, dirtyArea._bounds, Common::Point(dirtyArea._bounds.left, dirtyArea._bounds.top)); } else { + // Copy area userInterface._surface.copyTo(&userInterface, dirtyArea._bounds, Common::Point(dirtyArea._bounds.left, dirtyArea._bounds.top)); } @@ -183,7 +185,7 @@ void UISlots::draw(bool updateFlag, bool delFlag) { if (slot._flags < IMG_STATIC) { if (delFlag || updateFlag) remove_at(idx); - else if (slot._flags >= -20) + else if (slot._flags > -20) slot._flags -= 20; } else { if (updateFlag) @@ -721,7 +723,7 @@ void UserInterface::inventoryAnim() { // Loop through the slots list for inventory animation entry for (uint i = 0; i < _uiSlots.size(); ++i) { if (_uiSlots[i]._segmentId == IMG_SPINNING_OBJECT) - _uiSlots[i]._flags = -5; + _uiSlots[i]._flags = IMG_UPDATE_ONLY; } // Add a new slot entry for the inventory animation |