aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engines/cge2/vga13h.cpp78
-rw-r--r--engines/cge2/vga13h.h3
2 files changed, 41 insertions, 40 deletions
diff --git a/engines/cge2/vga13h.cpp b/engines/cge2/vga13h.cpp
index 08a5a6b18e..a52b8e6b96 100644
--- a/engines/cge2/vga13h.cpp
+++ b/engines/cge2/vga13h.cpp
@@ -314,12 +314,7 @@ Sprite *Sprite::contract() {
}
Sprite *Sprite::backShow(bool fast) {
- expand();
- show(2);
- show(1);
- if (fast)
- show(0);
- contract();
+ warning("STUB: Sprite::backShow()");
return this;
}
@@ -525,7 +520,7 @@ void Sprite::sync(Common::Serializer &s) {
s.syncAsUint16LE(unused); // _next
}
-Queue::Queue(bool show) : _head(NULL), _tail(NULL), _show(show) {
+Queue::Queue(bool show) : _head(NULL), _tail(NULL) {
}
Queue::~Queue() {
@@ -541,52 +536,51 @@ void Queue::clear() {
}
void Queue::append(Sprite *spr) {
- if (_tail) {
- spr->_prev = _tail;
- _tail->_next = spr;
- } else
- _head = spr;
- _tail = spr;
- if (_show)
+ if (spr->_flags._back)
+ spr->backShow();
+ else {
spr->expand();
- else
- spr->contract();
+ if (_tail) {
+ spr->_prev = _tail;
+ _tail->_next = spr;
+ } else
+ _head = spr;
+
+ _tail = spr;
+ }
}
void Queue::insert(Sprite *spr, Sprite *nxt) {
- if (nxt == _head) {
- spr->_next = _head;
- _head = spr;
- if (!_tail)
- _tail = spr;
- } else {
- assert(nxt);
- spr->_next = nxt;
- spr->_prev = nxt->_prev;
- if (spr->_prev)
- spr->_prev->_next = spr;
- }
- if (spr->_next)
- spr->_next->_prev = spr;
- if (_show)
+ if (spr->_flags._back)
+ spr->backShow();
+ else {
spr->expand();
- else
- spr->contract();
+ if (nxt == _head) {
+ spr->_next = _head;
+ _head = spr;
+ if (!_tail)
+ _tail = spr;
+ } else {
+ spr->_next = nxt;
+ spr->_prev = nxt->_prev;
+ if (spr->_prev)
+ spr->_prev->_next = spr;
+ }
+ if (spr->_next)
+ spr->_next->_prev = spr;
+ }
}
void Queue::insert(Sprite *spr) {
Sprite *s;
for (s = _head; s; s = s->_next)
- if (s->_pos3D._z > spr->_pos3D._z)
+ if (s->_pos3D._z < spr->_pos3D._z)
break;
+
if (s)
insert(spr, s);
else
append(spr);
- if (_show)
- spr->expand();
- else
- spr->contract();
}
template<typename T>
@@ -616,6 +610,14 @@ Sprite *Queue::locate(int ref) {
return NULL;
}
+bool Queue::locate(Sprite *spr) {
+ Sprite *s;
+ for (s = _head; s; s = s->_next)
+ if (s == spr)
+ return true;
+ return false;
+}
+
Vga::Vga(CGE2Engine *vm) : _frmCnt(0), _msg(NULL), _name(NULL), _setPal(false), _mono(0), _vm(vm) {
_oldColors = NULL;
_newColors = NULL;
diff --git a/engines/cge2/vga13h.h b/engines/cge2/vga13h.h
index f8c7bf462d..e517a75f81 100644
--- a/engines/cge2/vga13h.h
+++ b/engines/cge2/vga13h.h
@@ -168,8 +168,6 @@ public:
Queue(bool show);
~Queue();
- bool _show;
-
void append(Sprite *spr);
void insert(Sprite *spr, Sprite *nxt);
void insert(Sprite *spr);
@@ -181,6 +179,7 @@ public:
return _tail;
}
Sprite *locate(int ref);
+ bool locate(Sprite *spr);
void clear();
};