aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Gilbert2014-04-19 17:43:44 -0400
committerPaul Gilbert2014-04-19 17:43:44 -0400
commitc4669dd2f2ec850f3a42794dbbc134febed229e2 (patch)
tree33ef69d67e43e3f34245057eb281fa43aa15d7d6
parent34d0bc72b571e5e6e0b4b4f3ee1a627cbf470d72 (diff)
downloadscummvm-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.cpp12
-rw-r--r--engines/mads/screen.h1
-rw-r--r--engines/mads/user_interface.cpp10
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