aboutsummaryrefslogtreecommitdiff
path: root/scumm/object.cpp
diff options
context:
space:
mode:
authorJames Brown2002-10-11 11:50:06 +0000
committerJames Brown2002-10-11 11:50:06 +0000
commit2d22cc45673e965ebbd70ce4acb5ed5e458701f1 (patch)
treee27ba91948bdf9729889a0c08c0438dba6f213f6 /scumm/object.cpp
parent4cf42ae9a8fbd122f268e8eb9dcce088ee0522be (diff)
downloadscummvm-rg350-2d22cc45673e965ebbd70ce4acb5ed5e458701f1.tar.gz
scummvm-rg350-2d22cc45673e965ebbd70ce4acb5ed5e458701f1.tar.bz2
scummvm-rg350-2d22cc45673e965ebbd70ce4acb5ed5e458701f1.zip
Patch 621733: drawBomp() masking
svn-id: r5128
Diffstat (limited to 'scumm/object.cpp')
-rw-r--r--scumm/object.cpp36
1 files changed, 35 insertions, 1 deletions
diff --git a/scumm/object.cpp b/scumm/object.cpp
index 40896990a7..1a48d8e3a4 100644
--- a/scumm/object.cpp
+++ b/scumm/object.cpp
@@ -1268,7 +1268,41 @@ void Scumm::removeBlastObjects()
void Scumm::removeBlastObject(BlastObject *eo)
{
- restoreBG(eo->posX, eo->posY, eo->posX + eo->width, eo->posY + eo->height);
+ VirtScreen *vs = &virtscr[0];
+
+ int top, bottom, left, right;
+ int left_strip, right_strip;
+ int i;
+
+ top = eo->posY;
+ bottom = eo->posY + eo->height;
+ left = eo->posX;
+ right = eo->posX + eo->width;
+
+ if (bottom < 0 || right < 0 || top > vs->height || left > vs->width)
+ return;
+
+ if (top < 0)
+ top = 0;
+ if (bottom > vs->height)
+ bottom = vs->height;
+ if (left < 0)
+ left = 0;
+ if (right > vs->width)
+ right = vs->width;
+
+ left_strip = left >> 3;
+ right_strip = (right >> 3) + 1;
+
+ if (left_strip < 0)
+ left_strip = 0;
+ if (right_strip >= 200)
+ right_strip = 200;
+
+ for (i = left_strip; i <= right_strip; i++)
+ gdi.resetBackground(top, bottom, i);
+
+ updateDirtyRect(0, left, right, top, bottom, 0x40000000);
}
int Scumm::findFlObjectSlot()