aboutsummaryrefslogtreecommitdiff
path: root/engines/xeen/sprites.cpp
diff options
context:
space:
mode:
authorPaul Gilbert2018-03-09 21:47:28 -0500
committerPaul Gilbert2018-03-09 21:47:28 -0500
commit583d857a3922bbe0c333b4226b6ab6e13e1f6ecf (patch)
treef0a13ca14fad13c5355fef818c3c95136f5529e8 /engines/xeen/sprites.cpp
parent56860b602351a8da15fc83c2fba215015419cd00 (diff)
downloadscummvm-rg350-583d857a3922bbe0c333b4226b6ab6e13e1f6ecf.tar.gz
scummvm-rg350-583d857a3922bbe0c333b4226b6ab6e13e1f6ecf.tar.bz2
scummvm-rg350-583d857a3922bbe0c333b4226b6ab6e13e1f6ecf.zip
XEEN: Properly implement sprite flag SPRFLAG_BOTTOM_CLIPPED
Diffstat (limited to 'engines/xeen/sprites.cpp')
-rw-r--r--engines/xeen/sprites.cpp9
1 files changed, 7 insertions, 2 deletions
diff --git a/engines/xeen/sprites.cpp b/engines/xeen/sprites.cpp
index e55a69e821..4811f10628 100644
--- a/engines/xeen/sprites.cpp
+++ b/engines/xeen/sprites.cpp
@@ -33,6 +33,8 @@ namespace Xeen {
#define SCENE_CLIP_LEFT 8
#define SCENE_CLIP_RIGHT 223
+int SpriteResource::_clippedBottom;
+
SpriteResource::SpriteResource() {
_filesize = 0;
_data = nullptr;
@@ -324,11 +326,14 @@ void SpriteResource::draw(int windowIndex, int frame, const Common::Point &destP
void SpriteResource::draw(XSurface &dest, int frame, const Common::Point &destPos,
const Common::Rect &bounds, uint flags, int scale) {
+ Common::Rect r = bounds;
+ if (flags & SPRFLAG_BOTTOM_CLIPPED)
+ r.clip(SCREEN_WIDTH, _clippedBottom);
// Sprites can consist of separate background & foreground
- drawOffset(dest, _index[frame]._offset1, destPos, bounds, flags, scale);
+ drawOffset(dest, _index[frame]._offset1, destPos, r, flags, scale);
if (_index[frame]._offset2)
- drawOffset(dest, _index[frame]._offset2, destPos, bounds, flags, scale);
+ drawOffset(dest, _index[frame]._offset2, destPos, r, flags, scale);
}
void SpriteResource::draw(XSurface &dest, int frame) {