diff options
Diffstat (limited to 'engines/xeen/sprites.cpp')
-rw-r--r-- | engines/xeen/sprites.cpp | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/engines/xeen/sprites.cpp b/engines/xeen/sprites.cpp index fed8b6a410..fc2159bca9 100644 --- a/engines/xeen/sprites.cpp +++ b/engines/xeen/sprites.cpp @@ -137,6 +137,8 @@ void SpriteResource::draw(XSurface &dest, int frame, const Common::Point &destPo case SPRFLAG_DRAWER1: draw = new SpriteDrawer1(_data, _filesize, flags & 0x1F); break; + case SPRFLAG_DRAWER2: + error("TODO: Sprite drawer mode 2"); case SPRFLAG_DRAWER3: draw = new SpriteDrawer3(_data, _filesize, flags & 0x1F); break; @@ -460,6 +462,19 @@ void SpriteDrawer3::drawPixel(byte *dest, byte pixel) { /*------------------------------------------------------------------------*/ +const byte DRAWER4_THRESHOLD[4] = { 4, 7, 10, 13 }; + +SpriteDrawer4::SpriteDrawer4(byte *data, size_t filesize, int index) : SpriteDrawer(data, filesize) { + _threshold = DRAWER4_THRESHOLD[index]; +} + +void SpriteDrawer4::drawPixel(byte *dest, byte pixel) { + if ((pixel & 0xf) >= _threshold) + *dest = pixel; +} + +/*------------------------------------------------------------------------*/ + const uint16 DRAWER5_MASK[4] = { 0x3333, 0x6666, 0x999A, 0xCCCD }; SpriteDrawer5::SpriteDrawer5(byte *data, size_t filesize, int index) : SpriteDrawer(data, filesize) { |