aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Kiewitz2009-10-14 18:09:54 +0000
committerMartin Kiewitz2009-10-14 18:09:54 +0000
commit8e58d5ef80bf8a0e33a7ef698881ab20362f332a (patch)
tree767602d8826ec3879ad1c42314efea5956a42653
parent20036d3cb4705404710519653cb0f5da56d90da7 (diff)
downloadscummvm-rg350-8e58d5ef80bf8a0e33a7ef698881ab20362f332a.tar.gz
scummvm-rg350-8e58d5ef80bf8a0e33a7ef698881ab20362f332a.tar.bz2
scummvm-rg350-8e58d5ef80bf8a0e33a7ef698881ab20362f332a.zip
SCI: kDrawPic now reads out blackout flag for transitions
svn-id: r45089
-rw-r--r--engines/sci/engine/kgraphics.cpp10
-rw-r--r--engines/sci/gui/gui.cpp4
-rw-r--r--engines/sci/gui/gui.h2
-rw-r--r--engines/sci/gui/gui_transitions.cpp3
-rw-r--r--engines/sci/gui/gui_transitions.h3
-rw-r--r--engines/sci/gui32/gui32.cpp2
-rw-r--r--engines/sci/gui32/gui32.h2
7 files changed, 16 insertions, 10 deletions
diff --git a/engines/sci/engine/kgraphics.cpp b/engines/sci/engine/kgraphics.cpp
index 9693f05b63..3261f46263 100644
--- a/engines/sci/engine/kgraphics.cpp
+++ b/engines/sci/engine/kgraphics.cpp
@@ -500,20 +500,24 @@ reg_t kOnControl(EngineState *s, int argc, reg_t *argv) {
void _k_view_list_free_backgrounds(EngineState *s, ViewObject *list, int list_nr);
-#define K_DRAWPIC_FLAG_MIRRORED (1 << 14)
+#define K_DRAWPIC_FLAGS_MIRRORED (1 << 14)
+#define K_DRAWPIC_FLAGS_ANIMATIONBLACKOUT (1 << 15)
reg_t kDrawPic(EngineState *s, int argc, reg_t *argv) {
GuiResourceId pictureId = argv[0].toUint16();
uint16 flags = 0;
int16 animationNr = -1;
+ bool animationBlackoutFlag = false;
bool mirroredFlag = false;
bool addToFlag = false;
int16 EGApaletteNo = 0; // default needs to be 0
if (argc >= 2) {
flags = argv[1].toUint16();
+ if (flags & K_DRAWPIC_FLAGS_ANIMATIONBLACKOUT)
+ animationBlackoutFlag = true;
animationNr = flags & 0xFF;
- if (flags & K_DRAWPIC_FLAG_MIRRORED)
+ if (flags & K_DRAWPIC_FLAGS_MIRRORED)
mirroredFlag = true;
}
if (argc >= 3) {
@@ -525,7 +529,7 @@ reg_t kDrawPic(EngineState *s, int argc, reg_t *argv) {
if (argc >= 4)
EGApaletteNo = argv[3].toUint16();
- s->_gui->drawPicture(pictureId, animationNr, mirroredFlag, addToFlag, EGApaletteNo);
+ s->_gui->drawPicture(pictureId, animationNr, animationBlackoutFlag, mirroredFlag, addToFlag, EGApaletteNo);
return s->r_acc;
}
diff --git a/engines/sci/gui/gui.cpp b/engines/sci/gui/gui.cpp
index 5fac9a86ef..a39b08c0bd 100644
--- a/engines/sci/gui/gui.cpp
+++ b/engines/sci/gui/gui.cpp
@@ -300,13 +300,13 @@ void SciGui::clearMenuBar() {
// TODO: Implement menubar
}
-void SciGui::drawPicture(GuiResourceId pictureId, int16 animationNr, bool mirroredFlag, bool addToFlag, int16 EGApaletteNo) {
+void SciGui::drawPicture(GuiResourceId pictureId, int16 animationNr, bool animationBlackoutFlag, bool mirroredFlag, bool addToFlag, int16 EGApaletteNo) {
GuiPort *oldPort = _gfx->SetPort((GuiPort *)_windowMgr->_picWind);
if (_windowMgr->isFrontWindow(_windowMgr->_picWind)) {
_screen->_picNotValid = 1;
_gfx->drawPicture(pictureId, animationNr, mirroredFlag, addToFlag, EGApaletteNo);
- _transitions->setup(animationNr);
+ _transitions->setup(animationNr, animationBlackoutFlag);
} else {
_windowMgr->BeginUpdate(_windowMgr->_picWind);
_gfx->drawPicture(pictureId, animationNr, mirroredFlag, addToFlag, EGApaletteNo);
diff --git a/engines/sci/gui/gui.h b/engines/sci/gui/gui.h
index 47ba512b18..3073aeed38 100644
--- a/engines/sci/gui/gui.h
+++ b/engines/sci/gui/gui.h
@@ -80,7 +80,7 @@ public:
virtual void drawStatus(const char *text, int16 colorPen, int16 colorBack);
virtual void drawMenuBar();
virtual void clearMenuBar();
- virtual void drawPicture(GuiResourceId pictureId, int16 animationNr, bool mirroredFlag, bool addToFlag, int16 EGApaletteNo);
+ virtual void drawPicture(GuiResourceId pictureId, int16 animationNr, bool animationBlackoutFlag, bool mirroredFlag, bool addToFlag, int16 EGApaletteNo);
virtual void drawCel(GuiResourceId viewId, GuiViewLoopNo loopNo, GuiViewCelNo celNo, uint16 leftPos, uint16 topPos, int16 priority, uint16 paletteNo);
virtual void drawControlButton(Common::Rect rect, reg_t obj, const char *text, int16 fontId, int16 style, bool hilite);
virtual void drawControlText(Common::Rect rect, reg_t obj, const char *text, int16 fontId, int16 mode, int16 style, bool hilite);
diff --git a/engines/sci/gui/gui_transitions.cpp b/engines/sci/gui/gui_transitions.cpp
index 2d32581af8..bdece3e758 100644
--- a/engines/sci/gui/gui_transitions.cpp
+++ b/engines/sci/gui/gui_transitions.cpp
@@ -50,8 +50,9 @@ void SciGuiTransitions::init() {
_oldScreen = new byte[_screen->_displayHeight * _screen->_displayWidth];
}
-void SciGuiTransitions::setup(int16 number) {
+void SciGuiTransitions::setup(int16 number, bool blackoutFlag) {
_number = number;
+ _blackoutFlag = blackoutFlag;
}
void SciGuiTransitions::doit(Common::Rect picRect) {
diff --git a/engines/sci/gui/gui_transitions.h b/engines/sci/gui/gui_transitions.h
index 5d09b49cfe..5aabc22ee7 100644
--- a/engines/sci/gui/gui_transitions.h
+++ b/engines/sci/gui/gui_transitions.h
@@ -62,7 +62,7 @@ public:
SciGuiTransitions(SciGui *gui, SciGuiScreen *screen, SciGuiPalette *palette, bool isVGA);
~SciGuiTransitions();
- void setup(int16 number);
+ void setup(int16 number, bool blackoutFlag);
void doit(Common::Rect picRect);
private:
@@ -81,6 +81,7 @@ private:
bool _isVGA;
int16 _number;
+ bool _blackoutFlag;
Common::Rect _picRect;
byte *_oldScreen; // buffer for saving current active screen data to, has dimenions of _screen->_displayScreen
};
diff --git a/engines/sci/gui32/gui32.cpp b/engines/sci/gui32/gui32.cpp
index f7c3449162..26f6120d52 100644
--- a/engines/sci/gui32/gui32.cpp
+++ b/engines/sci/gui32/gui32.cpp
@@ -890,7 +890,7 @@ void SciGui32::clearMenuBar() {
gfxop_update(_s->gfx_state);
}
-void SciGui32::drawPicture(GuiResourceId pictureId, int16 animationNr, bool mirroredFlag, bool addToFlag, int16 EGApaletteNo) {
+void SciGui32::drawPicture(GuiResourceId pictureId, int16 animationNr, bool animationBlackoutFlag, bool mirroredFlag, bool addToFlag, int16 EGApaletteNo) {
gfx_color_t transparent = _s->wm_port->_bgcolor;
int picFlags = DRAWPIC01_FLAG_FILL_NORMALLY;
int palNo = (EGApaletteNo != -1) ? EGApaletteNo : 0;
diff --git a/engines/sci/gui32/gui32.h b/engines/sci/gui32/gui32.h
index 6d6c520600..11b60b172c 100644
--- a/engines/sci/gui32/gui32.h
+++ b/engines/sci/gui32/gui32.h
@@ -58,7 +58,7 @@ public:
void drawStatus(const char *text, int16 colorPen, int16 colorBack);
void drawMenuBar();
void clearMenuBar();
- void drawPicture(GuiResourceId pictureId, int16 animationNr, bool mirroredFlag, bool addToFlag, int16 EGApaletteNo);
+ void drawPicture(GuiResourceId pictureId, int16 animationNr, bool animationBlackoutFlag, bool mirroredFlag, bool addToFlag, int16 EGApaletteNo);
void drawCel(GuiResourceId viewId, GuiViewLoopNo loopNo, GuiViewCelNo celNo, uint16 leftPos, uint16 topPos, int16 priority, uint16 paletteNo);
void drawControlButton(Common::Rect rect, reg_t obj, const char *text, int16 fontId, int16 style, bool hilite);
void drawControlText(Common::Rect rect, reg_t obj, const char *text, int16 fontId, int16 mode, int16 style, bool hilite);