diff options
author | Paul Gilbert | 2018-03-09 21:47:28 -0500 |
---|---|---|
committer | Paul Gilbert | 2018-03-09 21:47:28 -0500 |
commit | 583d857a3922bbe0c333b4226b6ab6e13e1f6ecf (patch) | |
tree | f0a13ca14fad13c5355fef818c3c95136f5529e8 /engines/xeen/sprites.cpp | |
parent | 56860b602351a8da15fc83c2fba215015419cd00 (diff) | |
download | scummvm-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.cpp | 9 |
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) { |