From b2860fc675db9958c994778a12947880812d4690 Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Sat, 24 May 2014 14:21:03 -0400 Subject: MADS: Implemented scene fading --- engines/mads/screen.cpp | 33 ++++++++++++++++++--------------- 1 file changed, 18 insertions(+), 15 deletions(-) (limited to 'engines/mads/screen.cpp') diff --git a/engines/mads/screen.cpp b/engines/mads/screen.cpp index 6a70bfb5d9..ae129995ac 100644 --- a/engines/mads/screen.cpp +++ b/engines/mads/screen.cpp @@ -570,14 +570,27 @@ void ScreenSurface::updateScreen() { } void ScreenSurface::transition(ScreenTransition transitionType, bool surfaceFlag) { + Palette &pal = *_vm->_palette; + byte palData[PALETTE_SIZE]; + switch (transitionType) { + case kTransitionFadeIn: case kTransitionFadeOutIn: - fadeOut(); - fadeIn(); - break; + Common::fill(&pal._colorValues[0], &pal._colorValues[3], 0); + Common::fill(&pal._colorFlags[0], &pal._colorFlags[3], false); - case kTransitionFadeIn: - fadeIn(); + if (transitionType == kTransitionFadeOutIn) { + // Fade out + pal.getFullPalette(palData); + pal.fadeOut(palData, nullptr, 0, PALETTE_COUNT, 0, 0, 1, 16); + } + + // Reset palette to black + Common::fill(&palData[0], &palData[PALETTE_SIZE], 0); + pal.setFullPalette(palData); + + copyRectToScreen(getBounds()); + pal.fadeIn(palData, pal._mainPalette, 0, 256, 0, 1, 1, 16); break; case kTransitionBoxInBottomLeft: @@ -606,14 +619,4 @@ void ScreenSurface::transition(ScreenTransition transitionType, bool surfaceFlag } } -void ScreenSurface::fadeOut() { - warning("TODO: Proper fade out"); -} - -void ScreenSurface::fadeIn() { - warning("TODO: Proper fade in"); - _vm->_palette->setFullPalette(_vm->_palette->_mainPalette); - _vm->_screen.copyRectToScreen(Common::Rect(0, 0, 320, 200)); -} - } // End of namespace MADS -- cgit v1.2.3