From 82898716cf24098e664211a5e2f904f9fe98d2d5 Mon Sep 17 00:00:00 2001 From: uruk Date: Sat, 31 May 2014 15:22:29 +0200 Subject: [PATCH] CGE2: Reimplement Vga::show(). --- engines/cge2/vga13h.cpp | 34 +++++++++++++++++++++++++++++++--- 1 file changed, 31 insertions(+), 3 deletions(-) diff --git a/engines/cge2/vga13h.cpp b/engines/cge2/vga13h.cpp index 618fb8a98729..bc042a5e5b30 100644 --- a/engines/cge2/vga13h.cpp +++ b/engines/cge2/vga13h.cpp @@ -957,13 +957,41 @@ void Vga::sunset() { } void Vga::show() { - for (Sprite *spr = _showQ->first(); spr; spr = spr->_next) + _vm->_infoLine->update(); + + for (Sprite *spr = _showQ->first(); spr; spr = spr->_next) { spr->show(); + } + + //_vm->_mouse->show(); update(); - for (Sprite *spr = _showQ->first(); spr; spr = spr->_next) + + for (Sprite *spr = _showQ->first(); spr; spr = spr->_next) { spr->hide(); + if (spr->_flags._zmov) { + Sprite *s = nullptr; + Sprite *p = spr->_prev; + Sprite *n = spr->_next; + + if (spr->_flags._shad) { + s = p; + p = s->_prev; + } - _frmCnt++; + if ((p && spr->_pos3D._z > p->_pos3D._z) || + (n && spr->_pos3D._z < n->_pos3D._z)) { + _showQ->insert(_showQ->remove(spr)); + if (s) { + //s->gotoxyz(V3D(s->_pos3D._x, s->_pos3D._y, spr->_pos3D._z)); + //_showQ->insert(_showQ->remove(s), spr); + // These two lines are also commented out in the original. + } + } + spr->_flags._zmov = false; + } + } + //_vm->_mouse->hide(); + warning("STUB: Vga::show() - Mouse handling is missing!"); } void Vga::updateColors() {