aboutsummaryrefslogtreecommitdiff
path: root/engines/illusions/spritedrawqueue.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/illusions/spritedrawqueue.cpp')
-rw-r--r--engines/illusions/spritedrawqueue.cpp44
1 files changed, 19 insertions, 25 deletions
diff --git a/engines/illusions/spritedrawqueue.cpp b/engines/illusions/spritedrawqueue.cpp
index a21ca15083..2cffb0c28b 100644
--- a/engines/illusions/spritedrawqueue.cpp
+++ b/engines/illusions/spritedrawqueue.cpp
@@ -21,11 +21,12 @@
*/
#include "illusions/spritedrawqueue.h"
+#include "illusions/screen.h"
namespace Illusions {
-SpriteDrawQueue::SpriteDrawQueue(IllusionsEngine *vm)
- : _vm(vm) {
+SpriteDrawQueue::SpriteDrawQueue(Screen *screen)
+ : _screen(screen) {
}
SpriteDrawQueue::~SpriteDrawQueue() {
@@ -39,7 +40,7 @@ bool SpriteDrawQueue::draw(SpriteDrawQueueItem *item) {
return false;
}
- if (!_vm->isDisplayOn()) {
+ if (!_screen->isDisplayOn()) {
if (item->_drawFlags)
*item->_drawFlags &= ~4;
return true;
@@ -51,18 +52,16 @@ bool SpriteDrawQueue::draw(SpriteDrawQueueItem *item) {
if (!calcItemRect(item, srcRect, dstRect))
return true;
- _backSurface = _vm->getBackSurface();
-
if (item->_scale == 100) {
if (item->_flags & 1)
- drawSurface10(dstRect.left, dstRect.top, item->_surface, srcRect, _vm->getColorKey2());
+ _screen->drawSurface10(dstRect.left, dstRect.top, item->_surface, srcRect, _screen->getColorKey2());
else
- drawSurface11(dstRect.left, dstRect.top, item->_surface, srcRect);
+ _screen->drawSurface11(dstRect.left, dstRect.top, item->_surface, srcRect);
} else {
if (item->_flags & 1)
- drawSurface20(dstRect, item->_surface, srcRect, _vm->getColorKey2());
+ _screen->drawSurface20(dstRect, item->_surface, srcRect, _screen->getColorKey2());
else
- drawSurface21(dstRect, item->_surface, srcRect);
+ _screen->drawSurface21(dstRect, item->_surface, srcRect);
}
if (item->_drawFlags)
@@ -71,6 +70,17 @@ bool SpriteDrawQueue::draw(SpriteDrawQueueItem *item) {
return true;
}
+void SpriteDrawQueue::drawAll() {
+ SpriteDrawQueueListIterator it = _queue.begin();
+ while (it != _queue.end()) {
+ if (draw(*it)) {
+ delete *it;
+ it = _queue.erase(it);
+ } else
+ ++it;
+ }
+}
+
void SpriteDrawQueue::insertSprite(byte *drawFlags, Graphics::Surface *surface, WidthHeight &dimensions,
Common::Point &drawPosition, Common::Point &controlPosition, int priority, int16 scale, uint16 flags) {
SpriteDrawQueueItem *item = new SpriteDrawQueueItem();
@@ -177,20 +187,4 @@ bool SpriteDrawQueue::calcItemRect(SpriteDrawQueueItem *item, Common::Rect &srcR
return true;
}
-void SpriteDrawQueue::drawSurface10(int16 destX, int16 destY, Graphics::Surface *surface, Common::Rect &srcRect, uint16 colorKey) {
- // TODO
-}
-
-void SpriteDrawQueue::drawSurface11(int16 destX, int16 destY, Graphics::Surface *surface, Common::Rect &srcRect) {
- // TODO
-}
-
-void SpriteDrawQueue::drawSurface20(Common::Rect &dstRect, Graphics::Surface *surface, Common::Rect &srcRect, uint16 colorKey) {
- // TODO
-}
-
-void SpriteDrawQueue::drawSurface21(Common::Rect &dstRect, Graphics::Surface *surface, Common::Rect &srcRect) {
- // TODO
-}
-
} // End of namespace Illusions