diff options
author | Alyssa Milburn | 2011-07-16 20:04:49 +0200 |
---|---|---|
committer | Alyssa Milburn | 2011-07-16 20:04:49 +0200 |
commit | 1cf09e3fbf5e64183e82b8845f083ed05bc3149d (patch) | |
tree | 862c77f017532f92f8bf4f7f5b24116e9a8f4101 /engines/composer | |
parent | c95320bb170a01ad4193246213d5c4a01d3b588d (diff) | |
download | scummvm-rg350-1cf09e3fbf5e64183e82b8845f083ed05bc3149d.tar.gz scummvm-rg350-1cf09e3fbf5e64183e82b8845f083ed05bc3149d.tar.bz2 scummvm-rg350-1cf09e3fbf5e64183e82b8845f083ed05bc3149d.zip |
COMPOSER: Misc sprite changes.
Diffstat (limited to 'engines/composer')
-rw-r--r-- | engines/composer/composer.cpp | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/engines/composer/composer.cpp b/engines/composer/composer.cpp index 60b31df77b..cbb80d47d5 100644 --- a/engines/composer/composer.cpp +++ b/engines/composer/composer.cpp @@ -493,6 +493,9 @@ void ComposerEngine::processAnimFrame() { } void ComposerEngine::addSprite(uint16 id, uint16 animId, uint16 zorder, const Common::Point &pos) { + // TODO: re-use old sprite + removeSprite(id, animId); + Sprite sprite; sprite.id = id; sprite.animId = animId; @@ -521,7 +524,6 @@ void ComposerEngine::removeSprite(uint16 id, uint16 animId) { continue; i->surface.free(); i = _sprites.reverse_erase(i); - return; } } @@ -1457,8 +1459,10 @@ bool ComposerEngine::initSprite(Sprite &sprite) { uint32 size = stream->readUint32LE(); debug(1, "loading BMAP: type %d, width %d, height %d, size %d", type, width, height, size); - sprite.surface.create(width, height, Graphics::PixelFormat::createFormatCLUT8()); - decompressBitmap(type, stream, (byte *)sprite.surface.pixels, size, width, height); + if (width && height) { + sprite.surface.create(width, height, Graphics::PixelFormat::createFormatCLUT8()); + decompressBitmap(type, stream, (byte *)sprite.surface.pixels, size, width, height); + } delete stream; return true; |