aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Kiewitz2009-10-10 20:30:31 +0000
committerMartin Kiewitz2009-10-10 20:30:31 +0000
commitcb15cdfb0733e14e6b5d065bbefb96eeb560ffda (patch)
tree8c2cf0131313f6eb169b940b54821f0d4aea74d0
parentdbaac9de57a97f597b6f817cd7f377ba8216d1a1 (diff)
downloadscummvm-rg350-cb15cdfb0733e14e6b5d065bbefb96eeb560ffda.tar.gz
scummvm-rg350-cb15cdfb0733e14e6b5d065bbefb96eeb560ffda.tar.bz2
scummvm-rg350-cb15cdfb0733e14e6b5d065bbefb96eeb560ffda.zip
SCI/newgui: kAnimate list - showBitsFlag implemented
svn-id: r44886
-rw-r--r--engines/sci/gui/gui_gfx.cpp11
-rw-r--r--engines/sci/gui/gui_helpers.h1
2 files changed, 8 insertions, 4 deletions
diff --git a/engines/sci/gui/gui_gfx.cpp b/engines/sci/gui/gui_gfx.cpp
index 561f04667e..04cc594fa1 100644
--- a/engines/sci/gui/gui_gfx.cpp
+++ b/engines/sci/gui/gui_gfx.cpp
@@ -897,6 +897,7 @@ void SciGuiGfx::AnimateMakeSortedList(List *list) {
listEntry->priority = GET_SEL32V(curObject, priority);
listEntry->signal = GET_SEL32V(curObject, signal);
// listEntry->celRect is filled in AnimateFill()
+ listEntry->showBitsFlag = false;
listEntry++;
curAddress = curNode->succ;
@@ -983,7 +984,7 @@ void SciGuiGfx::AnimateUpdate() {
bitsHandle = GET_SEL32(curObject, underBits);
if (_screen->_picNotValid != 1) {
RestoreBits(bitsHandle);
- //arr1[i] = 1;
+ listEntry->showBitsFlag = true;
} else {
//FreeBits(bits_gfx->UnloadBits(hBits);
}
@@ -1006,7 +1007,8 @@ void SciGuiGfx::AnimateUpdate() {
if (signal & SCI_ANIMATE_SIGNAL_ALWAYSUPDATE) {
// draw corresponding cel
drawCel(listEntry->viewId, listEntry->loopNo, listEntry->celNo, listEntry->celRect.left, listEntry->celRect.top, listEntry->priority, listEntry->paletteNo);
-// arr1[i] = 1;
+ listEntry->showBitsFlag = true;
+
signal &= 0xFFFF ^ (SCI_ANIMATE_SIGNAL_STOPUPDATE | SCI_ANIMATE_SIGNAL_VIEWUPDATED | SCI_ANIMATE_SIGNAL_NOUPDATE | SCI_ANIMATE_SIGNAL_FORCEUPDATE);
if ((signal & SCI_ANIMATE_SIGNAL_IGNOREACTOR) == 0) {
rect = listEntry->celRect;
@@ -1047,7 +1049,8 @@ void SciGuiGfx::AnimateUpdate() {
if (signal & SCI_ANIMATE_SIGNAL_NOUPDATE && !(signal & SCI_ANIMATE_SIGNAL_HIDDEN)) {
// draw corresponding cel
drawCel(listEntry->viewId, listEntry->loopNo, listEntry->celNo, listEntry->celRect.left, listEntry->celRect.top, listEntry->priority, listEntry->paletteNo);
- // arr1[i] = 1;
+ listEntry->showBitsFlag = true;
+
if ((signal & SCI_ANIMATE_SIGNAL_IGNOREACTOR) == 0) {
rect = listEntry->celRect;
rect.top = CLIP<int16>(PriorityToCoordinate(listEntry->priority) - 1, rect.top, rect.bottom - 1);
@@ -1077,8 +1080,8 @@ void SciGuiGfx::AnimateDrawCels() {
// draw corresponding cel
drawCel(listEntry->viewId, listEntry->loopNo, listEntry->celNo, listEntry->celRect.left, listEntry->celRect.top, listEntry->priority, listEntry->paletteNo);
+ listEntry->showBitsFlag = true;
- // arr1[inx] = 1;
if (signal & SCI_ANIMATE_SIGNAL_REMOVEVIEW) {
signal &= 0xFFFF ^ SCI_ANIMATE_SIGNAL_REMOVEVIEW;
}
diff --git a/engines/sci/gui/gui_helpers.h b/engines/sci/gui/gui_helpers.h
index cca6db9fa1..201662145d 100644
--- a/engines/sci/gui/gui_helpers.h
+++ b/engines/sci/gui/gui_helpers.h
@@ -80,6 +80,7 @@ struct GuiAnimateList {
int16 x, y, z;
uint16 priority, signal;
Common::Rect celRect;
+ bool showBitsFlag;
};
struct GuiCast {