diff options
author | Martin Kiewitz | 2009-10-14 18:09:54 +0000 |
---|---|---|
committer | Martin Kiewitz | 2009-10-14 18:09:54 +0000 |
commit | 8e58d5ef80bf8a0e33a7ef698881ab20362f332a (patch) | |
tree | 767602d8826ec3879ad1c42314efea5956a42653 /engines | |
parent | 20036d3cb4705404710519653cb0f5da56d90da7 (diff) | |
download | scummvm-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
Diffstat (limited to 'engines')
-rw-r--r-- | engines/sci/engine/kgraphics.cpp | 10 | ||||
-rw-r--r-- | engines/sci/gui/gui.cpp | 4 | ||||
-rw-r--r-- | engines/sci/gui/gui.h | 2 | ||||
-rw-r--r-- | engines/sci/gui/gui_transitions.cpp | 3 | ||||
-rw-r--r-- | engines/sci/gui/gui_transitions.h | 3 | ||||
-rw-r--r-- | engines/sci/gui32/gui32.cpp | 2 | ||||
-rw-r--r-- | engines/sci/gui32/gui32.h | 2 |
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); |