aboutsummaryrefslogtreecommitdiff
path: root/engines/composer
diff options
context:
space:
mode:
authorAlyssa Milburn2011-07-16 20:04:49 +0200
committerAlyssa Milburn2011-07-16 20:04:49 +0200
commit1cf09e3fbf5e64183e82b8845f083ed05bc3149d (patch)
tree862c77f017532f92f8bf4f7f5b24116e9a8f4101 /engines/composer
parentc95320bb170a01ad4193246213d5c4a01d3b588d (diff)
downloadscummvm-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.cpp10
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;