// This may get called twice, if blackoutFlag is set. It will get once called // with blackoutFlag set and another time with no blackoutFlag. void GfxTransitions::doTransition(int16 number, bool blackoutFlag) { if (number != SCI_TRANSITIONS_FADEPALETTE) { setNewPalette(blackoutFlag); } _transitionStartTime = g_system->getMillis(); switch (number) { case SCI_TRANSITIONS_VERTICALROLL_FROMCENTER: verticalRollFromCenter(blackoutFlag); break; case SCI_TRANSITIONS_VERTICALROLL_TOCENTER: verticalRollToCenter(blackoutFlag); break; case SCI_TRANSITIONS_HORIZONTALROLL_FROMCENTER: horizontalRollFromCenter(blackoutFlag); break; case SCI_TRANSITIONS_HORIZONTALROLL_TOCENTER: horizontalRollToCenter(blackoutFlag); break; case SCI_TRANSITIONS_DIAGONALROLL_TOCENTER: diagonalRollToCenter(blackoutFlag); break; case SCI_TRANSITIONS_DIAGONALROLL_FROMCENTER: diagonalRollFromCenter(blackoutFlag); break; case SCI_TRANSITIONS_STRAIGHT_FROM_RIGHT: case SCI_TRANSITIONS_STRAIGHT_FROM_LEFT: case SCI_TRANSITIONS_STRAIGHT_FROM_BOTTOM: case SCI_TRANSITIONS_STRAIGHT_FROM_TOP: straight(number, blackoutFlag); break; case SCI_TRANSITIONS_PIXELATION: pixelation(blackoutFlag); break; case SCI_TRANSITIONS_BLOCKS: blocks(blackoutFlag); break; case SCI_TRANSITIONS_FADEPALETTE: if (!blackoutFlag) { fadeOut(); setNewScreen(blackoutFlag); fadeIn(); } break; case SCI_TRANSITIONS_SCROLL_RIGHT: case SCI_TRANSITIONS_SCROLL_LEFT: case SCI_TRANSITIONS_SCROLL_UP: case SCI_TRANSITIONS_SCROLL_DOWN: scroll(number); break; case SCI_TRANSITIONS_NONE_LONGBOW: case SCI_TRANSITIONS_NONE: setNewScreen(blackoutFlag); break; default: warning("Transitions: ID %d not implemented", number); setNewScreen(blackoutFlag); } // Just to make sure that the current frame is shown in case we skipped the last update-call b/c of timing updateScreen(); debugC(kDebugLevelGraphics, "Transition took %d milliseconds", g_system->getMillis() - _transitionStartTime); }
// This may get called twice, if blackoutFlag is set. It will get once called // with blackoutFlag set and another time with no blackoutFlag. void GfxTransitions::doTransition(int16 number, bool blackoutFlag) { if (number != SCI_TRANSITIONS_FADEPALETTE) { setNewPalette(blackoutFlag); } _transitionStartTime = g_system->getMillis(); switch (number) { case SCI_TRANSITIONS_VERTICALROLL_FROMCENTER: verticalRollFromCenter(blackoutFlag); break; case SCI_TRANSITIONS_VERTICALROLL_TOCENTER: verticalRollToCenter(blackoutFlag); break; case SCI_TRANSITIONS_HORIZONTALROLL_FROMCENTER: horizontalRollFromCenter(blackoutFlag); break; case SCI_TRANSITIONS_HORIZONTALROLL_TOCENTER: horizontalRollToCenter(blackoutFlag); break; case SCI_TRANSITIONS_DIAGONALROLL_TOCENTER: diagonalRollToCenter(blackoutFlag); break; case SCI_TRANSITIONS_DIAGONALROLL_FROMCENTER: diagonalRollFromCenter(blackoutFlag); break; case SCI_TRANSITIONS_STRAIGHT_FROM_RIGHT: case SCI_TRANSITIONS_STRAIGHT_FROM_LEFT: case SCI_TRANSITIONS_STRAIGHT_FROM_BOTTOM: case SCI_TRANSITIONS_STRAIGHT_FROM_TOP: straight(number, blackoutFlag); break; case SCI_TRANSITIONS_PIXELATION: pixelation(blackoutFlag); break; case SCI_TRANSITIONS_BLOCKS: blocks(blackoutFlag); break; case SCI_TRANSITIONS_FADEPALETTE: if (!blackoutFlag) { fadeOut(); setNewScreen(blackoutFlag); fadeIn(); } break; case SCI_TRANSITIONS_SCROLL_RIGHT: case SCI_TRANSITIONS_SCROLL_LEFT: case SCI_TRANSITIONS_SCROLL_UP: case SCI_TRANSITIONS_SCROLL_DOWN: scroll(number); break; case SCI_TRANSITIONS_NONE_LONGBOW: case SCI_TRANSITIONS_NONE: setNewScreen(blackoutFlag); break; default: warning("Transitions: ID %d not implemented", number); setNewScreen(blackoutFlag); } }