COMPOSER: Fix z-ordering (properly, this time).

This commit is contained in:
Alyssa Milburn 2011-07-16 20:02:19 +02:00
parent 54f26b6c45
commit aa52698d7e
2 changed files with 6 additions and 6 deletions

View file

@ -465,7 +465,7 @@ void ComposerEngine::processAnimFrame() {
} }
} }
void ComposerEngine::addSprite(uint16 id, uint16 animId, int16 zorder, const Common::Point &pos) { void ComposerEngine::addSprite(uint16 id, uint16 animId, uint16 zorder, const Common::Point &pos) {
Sprite sprite; Sprite sprite;
sprite.id = id; sprite.id = id;
sprite.animId = animId; sprite.animId = animId;
@ -477,9 +477,9 @@ void ComposerEngine::addSprite(uint16 id, uint16 animId, int16 zorder, const Com
} }
for (Common::List<Sprite>::iterator i = _sprites.begin(); i != _sprites.end(); i++) { for (Common::List<Sprite>::iterator i = _sprites.begin(); i != _sprites.end(); i++) {
if (sprite.zorder > i->zorder) if (sprite.zorder <= i->zorder)
continue; continue;
i++; // insert *before* this sprite
_sprites.insert(i, sprite); _sprites.insert(i, sprite);
return; return;
} }
@ -689,7 +689,7 @@ void ComposerEngine::loadLibrary(uint id) {
// add background sprite, if it exists // add background sprite, if it exists
if (hasResource(ID_BMAP, 1000)) if (hasResource(ID_BMAP, 1000))
addSprite(1000, 0, -1, Common::Point()); addSprite(1000, 0, 0xffff, Common::Point());
// TODO: better CTBL logic // TODO: better CTBL logic
loadCTBL(1000, 100); loadCTBL(1000, 100);

View file

@ -62,7 +62,7 @@ class ComposerEngine;
struct Sprite { struct Sprite {
uint16 id; uint16 id;
uint16 animId; uint16 animId;
int16 zorder; uint16 zorder;
Common::Point pos; Common::Point pos;
Graphics::Surface surface; Graphics::Surface surface;
}; };
@ -205,7 +205,7 @@ private:
void playWaveForAnim(uint16 id, bool bufferingOnly); void playWaveForAnim(uint16 id, bool bufferingOnly);
void processAnimFrame(); void processAnimFrame();
void addSprite(uint16 id, uint16 animId, int16 zorder, const Common::Point &pos); void addSprite(uint16 id, uint16 animId, uint16 zorder, const Common::Point &pos);
void removeSprite(uint16 id, uint16 animId); void removeSprite(uint16 id, uint16 animId);
void loadCTBL(uint id, uint fadePercent); void loadCTBL(uint id, uint fadePercent);