mirror of
https://github.com/libretro/scummvm.git
synced 2025-05-13 09:36:21 +00:00
SCI32: Clean up GfxTransitions32
* Use containers where appropriate * Re-wrap doxygen comments to 80 columns * Clarify comments for parts of the engine that are understood now but were not understood at the time of the initial implementation
This commit is contained in:
parent
0ac5d84062
commit
ff3503abde
@ -368,10 +368,10 @@ reg_t kSetShowStyle(EngineState *s, int argc, reg_t *argv) {
|
|||||||
const uint16 type = argv[0].toUint16();
|
const uint16 type = argv[0].toUint16();
|
||||||
reg_t planeObj = argv[1];
|
reg_t planeObj = argv[1];
|
||||||
int16 seconds = argv[2].toSint16();
|
int16 seconds = argv[2].toSint16();
|
||||||
// NOTE: This value seems to indicate whether the transition is an
|
// This value indicates whether the transition is an "exit" transition (0)
|
||||||
// “exit” transition (0) or an “enter” transition (-1) for fade
|
// or an "enter" transition (-1) for fade transitions. For other types of
|
||||||
// transitions. For other types of transitions, it indicates a palette
|
// transitions, it indicates a palette index value to use when filling the
|
||||||
// index value to use when filling the screen.
|
// screen.
|
||||||
int16 back = argv[3].toSint16();
|
int16 back = argv[3].toSint16();
|
||||||
int16 priority = argv[4].toSint16();
|
int16 priority = argv[4].toSint16();
|
||||||
int16 animate = argv[5].toSint16();
|
int16 animate = argv[5].toSint16();
|
||||||
@ -404,9 +404,8 @@ reg_t kSetShowStyle(EngineState *s, int argc, reg_t *argv) {
|
|||||||
error("Illegal show style %d for plane %04x:%04x", type, PRINT_REG(planeObj));
|
error("Illegal show style %d for plane %04x:%04x", type, PRINT_REG(planeObj));
|
||||||
}
|
}
|
||||||
|
|
||||||
// NOTE: The order of planeObj and showStyle are reversed
|
// The order of planeObj and showStyle are reversed because this is how
|
||||||
// because this is how SCI3 called the corresponding method
|
// SSCI3 called the corresponding method on the KernelMgr
|
||||||
// on the KernelMgr
|
|
||||||
g_sci->_gfxTransitions32->kernelSetShowStyle(argc, planeObj, (ShowStyleType)type, seconds, back, priority, animate, refFrame, pFadeArray, divisions, blackScreen);
|
g_sci->_gfxTransitions32->kernelSetShowStyle(argc, planeObj, (ShowStyleType)type, seconds, back, priority, animate, refFrame, pFadeArray, divisions, blackScreen);
|
||||||
|
|
||||||
return s->r_acc;
|
return s->r_acc;
|
||||||
@ -881,8 +880,8 @@ reg_t kSetScroll(EngineState *s, int argc, reg_t *argv) {
|
|||||||
const int16 deltaY = argv[2].toSint16();
|
const int16 deltaY = argv[2].toSint16();
|
||||||
const GuiResourceId pictureId = argv[3].toUint16();
|
const GuiResourceId pictureId = argv[3].toUint16();
|
||||||
const bool animate = argv[4].toUint16();
|
const bool animate = argv[4].toUint16();
|
||||||
// NOTE: speed was accepted as an argument, but then never actually used
|
// argv[5] was some speed argument, but it was not actually used by SSCI, so
|
||||||
// const int16 speed = argc > 5 ? (bool)argv[5].toSint16() : -1;
|
// we ignore it here
|
||||||
const bool mirrorX = argc > 6 ? (bool)argv[6].toUint16() : false;
|
const bool mirrorX = argc > 6 ? (bool)argv[6].toUint16() : false;
|
||||||
|
|
||||||
g_sci->_gfxTransitions32->kernelSetScroll(plane, deltaX, deltaY, pictureId, animate, mirrorX);
|
g_sci->_gfxTransitions32->kernelSetScroll(plane, deltaX, deltaY, pictureId, animate, mirrorX);
|
||||||
|
@ -126,7 +126,7 @@ void GfxTransitions32::processShowStyles() {
|
|||||||
g_sci->_gfxFrameout->frameOut(true);
|
g_sci->_gfxFrameout->frameOut(true);
|
||||||
throttle();
|
throttle();
|
||||||
}
|
}
|
||||||
} while(continueProcessing && doFrameOut);
|
} while (continueProcessing && doFrameOut);
|
||||||
}
|
}
|
||||||
|
|
||||||
void GfxTransitions32::processEffects(PlaneShowStyle &showStyle) {
|
void GfxTransitions32::processEffects(PlaneShowStyle &showStyle) {
|
||||||
@ -249,14 +249,13 @@ void GfxTransitions32::kernelSetShowStyle(const uint16 argc, const reg_t planeOb
|
|||||||
|
|
||||||
if (createNewEntry) {
|
if (createNewEntry) {
|
||||||
entry = new PlaneShowStyle;
|
entry = new PlaneShowStyle;
|
||||||
// NOTE: SCI2.1 engine tests if allocation returned a null pointer
|
// SSCI2.1 tests if allocation returned a null pointer but then only
|
||||||
// but then only avoids setting currentStep if this is so. Since
|
// avoids setting currentStep if this is so. Since this nonsensical, we
|
||||||
// this is a nonsensical approach, we do not do that here
|
// do not do that here
|
||||||
entry->currentStep = 0;
|
entry->currentStep = 0;
|
||||||
entry->processed = false;
|
entry->processed = false;
|
||||||
entry->divisions = hasDivisions ? divisions : _defaultDivisions[type];
|
entry->divisions = hasDivisions ? divisions : _defaultDivisions[type];
|
||||||
entry->plane = planeObj;
|
entry->plane = planeObj;
|
||||||
entry->fadeColorRangesCount = 0;
|
|
||||||
|
|
||||||
if (getSciVersion() < SCI_VERSION_2_1_MIDDLE) {
|
if (getSciVersion() < SCI_VERSION_2_1_MIDDLE) {
|
||||||
// for pixel dissolve
|
// for pixel dissolve
|
||||||
@ -267,32 +266,26 @@ void GfxTransitions32::kernelSetShowStyle(const uint16 argc, const reg_t planeOb
|
|||||||
entry->screenItems.clear();
|
entry->screenItems.clear();
|
||||||
entry->width = plane->_gameRect.width();
|
entry->width = plane->_gameRect.width();
|
||||||
entry->height = plane->_gameRect.height();
|
entry->height = plane->_gameRect.height();
|
||||||
} else {
|
} else if (hasFadeArray) {
|
||||||
entry->fadeColorRanges = nullptr;
|
// SSCI2.1mid does no check to verify that an array is successfully
|
||||||
if (hasFadeArray) {
|
// retrieved
|
||||||
// NOTE: SCI2.1mid engine does no check to verify that an array is
|
SciArray &table = *_segMan->lookupArray(pFadeArray);
|
||||||
// successfully retrieved, and SegMan will cause a fatal error
|
|
||||||
// if we try to use a memory segment that is not an array
|
|
||||||
SciArray &table = *_segMan->lookupArray(pFadeArray);
|
|
||||||
|
|
||||||
uint32 rangeCount = table.size();
|
const uint32 rangeCount = table.size();
|
||||||
entry->fadeColorRangesCount = rangeCount;
|
|
||||||
|
|
||||||
// NOTE: SCI engine code always allocates memory even if the range
|
// SSCI always allocates memory even if the range table has no
|
||||||
// table has no entries, but this does not really make sense, so
|
// entries, but this does not really make sense, so we avoid the
|
||||||
// we avoid the allocation call in this case
|
// allocation call in this case
|
||||||
if (rangeCount > 0) {
|
if (rangeCount > 0) {
|
||||||
entry->fadeColorRanges = new uint16[rangeCount];
|
entry->fadeColorRanges.reserve(rangeCount);
|
||||||
for (size_t i = 0; i < rangeCount; ++i) {
|
for (uint32 i = 0; i < rangeCount; ++i) {
|
||||||
entry->fadeColorRanges[i] = table.getAsInt16(i);
|
entry->fadeColorRanges.push_back(table.getAsInt16(i));
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// NOTE: The original engine had no nullptr check and would just crash
|
// SSCI had no nullptr check and would just crash if it got to here
|
||||||
// if it got to here
|
|
||||||
if (entry == nullptr) {
|
if (entry == nullptr) {
|
||||||
error("Cannot edit non-existing ShowStyle entry");
|
error("Cannot edit non-existing ShowStyle entry");
|
||||||
}
|
}
|
||||||
@ -397,10 +390,9 @@ ShowStyleList::iterator GfxTransitions32::deleteShowStyle(const ShowStyleList::i
|
|||||||
break;
|
break;
|
||||||
case kShowStyleFadeIn:
|
case kShowStyleFadeIn:
|
||||||
case kShowStyleFadeOut:
|
case kShowStyleFadeOut:
|
||||||
if (getSciVersion() > SCI_VERSION_2_1_EARLY && showStyle->fadeColorRangesCount > 0) {
|
// SSCI manually allocated the color ranges for fades and deleted that
|
||||||
delete[] showStyle->fadeColorRanges;
|
// memory here, but we use a container so there is no extra cleanup
|
||||||
}
|
// needed
|
||||||
break;
|
|
||||||
case kShowStyleNone:
|
case kShowStyleNone:
|
||||||
case kShowStyleMorph:
|
case kShowStyleMorph:
|
||||||
case kShowStyleHShutterIn:
|
case kShowStyleHShutterIn:
|
||||||
@ -944,8 +936,8 @@ bool GfxTransitions32::processFade(const int8 direction, PlaneShowStyle &showSty
|
|||||||
percent *= 100;
|
percent *= 100;
|
||||||
percent /= showStyle.divisions - 1;
|
percent /= showStyle.divisions - 1;
|
||||||
|
|
||||||
if (showStyle.fadeColorRangesCount > 0) {
|
if (showStyle.fadeColorRanges.size()) {
|
||||||
for (int i = 0, len = showStyle.fadeColorRangesCount; i < len; i += 2) {
|
for (uint i = 0, len = showStyle.fadeColorRanges.size(); i < len; i += 2) {
|
||||||
g_sci->_gfxPalette32->setFade(percent, showStyle.fadeColorRanges[i], showStyle.fadeColorRanges[i + 1]);
|
g_sci->_gfxPalette32->setFade(percent, showStyle.fadeColorRanges[i], showStyle.fadeColorRanges[i + 1]);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
@ -28,7 +28,7 @@
|
|||||||
#include "sci/engine/vm_types.h"
|
#include "sci/engine/vm_types.h"
|
||||||
|
|
||||||
namespace Sci {
|
namespace Sci {
|
||||||
enum ShowStyleType /* : uint8 */ {
|
enum ShowStyleType {
|
||||||
kShowStyleNone = 0,
|
kShowStyleNone = 0,
|
||||||
kShowStyleHShutterOut = 1,
|
kShowStyleHShutterOut = 1,
|
||||||
kShowStyleHShutterIn = 2,
|
kShowStyleHShutterIn = 2,
|
||||||
@ -48,14 +48,12 @@ enum ShowStyleType /* : uint8 */ {
|
|||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Show styles represent transitions applied to draw planes.
|
* A show style represents a transition applied to a Plane. One show style per
|
||||||
* One show style per plane can be active at a time.
|
* plane can be active at a time.
|
||||||
*/
|
*/
|
||||||
struct PlaneShowStyle {
|
struct PlaneShowStyle {
|
||||||
/**
|
/**
|
||||||
* The ID of the plane this show style belongs to.
|
* The ID of the plane this transition applies to.
|
||||||
* In SCI2.1mid (at least SQ6), per-plane transitions
|
|
||||||
* were removed and a single plane ID is used.
|
|
||||||
*/
|
*/
|
||||||
reg_t plane;
|
reg_t plane;
|
||||||
|
|
||||||
@ -65,9 +63,8 @@ struct PlaneShowStyle {
|
|||||||
ShowStyleType type;
|
ShowStyleType type;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* When true, the show style is an entry transition
|
* When true, the show style is an entry transition to a new room. When
|
||||||
* to a new room. When false, it is an exit
|
* false, it is an exit transition away from an old room.
|
||||||
* transition away from an old room.
|
|
||||||
*/
|
*/
|
||||||
bool fadeUp;
|
bool fadeUp;
|
||||||
|
|
||||||
@ -77,38 +74,35 @@ struct PlaneShowStyle {
|
|||||||
int16 divisions;
|
int16 divisions;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The color used by transitions that draw CelObjColor
|
* The color used by transitions that draw CelObjColor screen items. -1 for
|
||||||
* screen items. -1 for transitions that do not draw
|
* transitions that do not draw screen items.
|
||||||
* screen items.
|
|
||||||
*/
|
*/
|
||||||
int16 color;
|
int16 color;
|
||||||
|
|
||||||
// TODO: Probably uint32
|
/**
|
||||||
// TODO: This field probably should be used in order to
|
* The amount of time, in ticks, between each cycle of the animation.
|
||||||
// provide time-accurate processing of show styles. In the
|
*/
|
||||||
// actual SCI engine (at least 2–2.1mid) it appears that
|
|
||||||
// style transitions are drawn “as fast as possible”, one
|
|
||||||
// step per loop, even though this delay field exists
|
|
||||||
int delay;
|
int delay;
|
||||||
|
|
||||||
// TODO: Probably bool, but never seems to be true?
|
/**
|
||||||
|
* If true, GfxTransitions32 will yield back to the main game loop after
|
||||||
|
* calculating the next frame. Otherwise, GfxTransitions32 takes exclusive
|
||||||
|
* control over the game loop until the transition has completed.
|
||||||
|
*/
|
||||||
bool animate;
|
bool animate;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The wall time at which the next step of the animation
|
* The time at which the next step of the animation should execute.
|
||||||
* should execute.
|
|
||||||
*/
|
*/
|
||||||
uint32 nextTick;
|
uint32 nextTick;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* During playback of the show style, the current step
|
* During playback of the show style, the current step (out of `divisions`).
|
||||||
* (out of divisions).
|
|
||||||
*/
|
*/
|
||||||
int currentStep;
|
int currentStep;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Whether or not this style has finished running and
|
* Whether or not this style has finished running and is ready for disposal.
|
||||||
* is ready for disposal.
|
|
||||||
*/
|
*/
|
||||||
bool processed;
|
bool processed;
|
||||||
|
|
||||||
@ -117,32 +111,30 @@ struct PlaneShowStyle {
|
|||||||
//
|
//
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A list of screen items, each representing one
|
* A list of screen items, each representing one block of a wipe transition.
|
||||||
* block of a wipe transition.
|
* These screen items are owned by GfxFrameout.
|
||||||
*/
|
*/
|
||||||
Common::Array<ScreenItem *> screenItems;
|
Common::Array<ScreenItem *> screenItems;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* For wipe transitions, the number of edges with a
|
* For wipe transitions, the number of edges with a moving wipe (1, 2, or
|
||||||
* moving wipe (1, 2, or 4).
|
* 4).
|
||||||
*/
|
*/
|
||||||
uint8 numEdges;
|
uint8 numEdges;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The dimensions of the plane, in game script
|
* The dimensions of the plane, in game script coordinates.
|
||||||
* coordinates.
|
|
||||||
*/
|
*/
|
||||||
int16 width, height;
|
int16 width, height;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* For pixel dissolve transitions, the screen item
|
* For pixel dissolve transitions, the screen item used to render the
|
||||||
* used to render the transition.
|
* transition. This screen item is owned by GfxFrameout.
|
||||||
*/
|
*/
|
||||||
ScreenItem *bitmapScreenItem;
|
ScreenItem *bitmapScreenItem;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* For pixel dissolve transitions, the bitmap used
|
* For pixel dissolve transitions, the bitmap used to render the transition.
|
||||||
* to render the transition.
|
|
||||||
*/
|
*/
|
||||||
reg_t bitmap;
|
reg_t bitmap;
|
||||||
|
|
||||||
@ -152,15 +144,13 @@ struct PlaneShowStyle {
|
|||||||
uint32 dissolveMask;
|
uint32 dissolveMask;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The first pixel that was dissolved in a pixel
|
* The first pixel that was dissolved in a pixel dissolve transition.
|
||||||
* dissolve transition.
|
|
||||||
*/
|
*/
|
||||||
uint32 firstPixel;
|
uint32 firstPixel;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The last pixel that was dissolved. Once all
|
* The last pixel that was dissolved. Once all pixels have been dissolved,
|
||||||
* pixels have been dissolved, `pixel` will once
|
* `pixel` will once again equal `firstPixel`.
|
||||||
* again equal `firstPixel`.
|
|
||||||
*/
|
*/
|
||||||
uint32 pixel;
|
uint32 pixel;
|
||||||
|
|
||||||
@ -169,21 +159,15 @@ struct PlaneShowStyle {
|
|||||||
//
|
//
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The number of entries in the fadeColorRanges array.
|
* An array of palette indexes, in the order [ fromColor, toColor, ... ].
|
||||||
*/
|
|
||||||
uint8 fadeColorRangesCount;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* A pointer to an dynamically sized array of palette
|
|
||||||
* indexes, in the order [ fromColor, toColor, ... ].
|
|
||||||
* Only colors within this range are transitioned.
|
* Only colors within this range are transitioned.
|
||||||
*/
|
*/
|
||||||
uint16 *fadeColorRanges;
|
Common::Array<uint16> fadeColorRanges;
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* PlaneScroll describes a transition between two different
|
* PlaneScroll describes a transition between two different pictures within a
|
||||||
* pictures within a single plane.
|
* single plane.
|
||||||
*/
|
*/
|
||||||
struct PlaneScroll {
|
struct PlaneScroll {
|
||||||
/**
|
/**
|
||||||
@ -197,28 +181,26 @@ struct PlaneScroll {
|
|||||||
int16 x, y;
|
int16 x, y;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The distance that should be scrolled. Only one of
|
* The distance that should be scrolled. Only one of `deltaX` or `deltaY`
|
||||||
* `deltaX` or `deltaY` may be set.
|
* may be set.
|
||||||
*/
|
*/
|
||||||
int16 deltaX, deltaY;
|
int16 deltaX, deltaY;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The pic that should be created and scrolled into
|
* The pic that should be created and scrolled into view inside the plane.
|
||||||
* view inside the plane.
|
|
||||||
*/
|
*/
|
||||||
GuiResourceId newPictureId;
|
GuiResourceId newPictureId;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The picture that should be scrolled out of view
|
* The picture that should be scrolled out of view and deleted from the
|
||||||
* and deleted from the plane.
|
* plane.
|
||||||
*/
|
*/
|
||||||
GuiResourceId oldPictureId;
|
GuiResourceId oldPictureId;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* If true, the scroll animation is interleaved
|
* If true, GfxTransitions32 will yield back to the main game loop after
|
||||||
* with other updates to the graphics. If false,
|
* calculating the next frame. Otherwise, GfxTransitions32 takes exclusive
|
||||||
* the scroll will be exclusively animated until
|
* control over the game loop until the transition has completed.
|
||||||
* it is finished.
|
|
||||||
*/
|
*/
|
||||||
bool animate;
|
bool animate;
|
||||||
|
|
||||||
@ -235,6 +217,7 @@ class GfxTransitions32 {
|
|||||||
public:
|
public:
|
||||||
GfxTransitions32(SegManager *_segMan);
|
GfxTransitions32(SegManager *_segMan);
|
||||||
~GfxTransitions32();
|
~GfxTransitions32();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
SegManager *_segMan;
|
SegManager *_segMan;
|
||||||
|
|
||||||
@ -264,209 +247,185 @@ public:
|
|||||||
inline bool hasShowStyles() const { return !_showStyles.empty(); }
|
inline bool hasShowStyles() const { return !_showStyles.empty(); }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Processes all active show styles in a loop
|
* Processes all active show styles in a loop until they are finished.
|
||||||
* until they are finished.
|
|
||||||
*/
|
*/
|
||||||
void processShowStyles();
|
void processShowStyles();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Processes show styles that are applied
|
* Processes show styles that are applied through
|
||||||
* through `GfxFrameout::palMorphFrameOut`.
|
* `GfxFrameout::palMorphFrameOut`.
|
||||||
*/
|
*/
|
||||||
void processEffects(PlaneShowStyle &showStyle);
|
void processEffects(PlaneShowStyle &showStyle);
|
||||||
|
|
||||||
// NOTE: This signature is taken from SCI3 Phantasmagoria 2
|
|
||||||
// and is valid for all implementations of SCI32
|
|
||||||
void kernelSetShowStyle(const uint16 argc, const reg_t planeObj, const ShowStyleType type, const int16 seconds, const int16 direction, const int16 priority, const int16 animate, const int16 frameOutNow, reg_t pFadeArray, int16 divisions, const int16 blackScreen);
|
void kernelSetShowStyle(const uint16 argc, const reg_t planeObj, const ShowStyleType type, const int16 seconds, const int16 direction, const int16 priority, const int16 animate, const int16 frameOutNow, reg_t pFadeArray, int16 divisions, const int16 blackScreen);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the range that will be used by
|
* Sets the range that will be used by `GfxFrameout::palMorphFrameOut` to
|
||||||
* `GfxFrameout::palMorphFrameOut` to alter
|
* alter palette entries.
|
||||||
* palette entries.
|
|
||||||
*/
|
*/
|
||||||
void kernelSetPalStyleRange(const uint8 fromColor, const uint8 toColor);
|
void kernelSetPalStyleRange(const uint8 fromColor, const uint8 toColor);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A map of palette entries that can be morphed
|
* A map of palette entries that can be morphed by the Morph show style.
|
||||||
* by the Morph show style.
|
|
||||||
*/
|
*/
|
||||||
int8 _styleRanges[256];
|
int8 _styleRanges[256];
|
||||||
|
|
||||||
private:
|
private:
|
||||||
/**
|
/**
|
||||||
* Default sequence values for pixel dissolve
|
* Default sequence values for pixel dissolve transition bit masks.
|
||||||
* transition bit masks.
|
|
||||||
*/
|
*/
|
||||||
int *_dissolveSequenceSeeds;
|
int *_dissolveSequenceSeeds;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Default values for `PlaneShowStyle::divisions`
|
* Default values for `PlaneShowStyle::divisions` for the current SCI
|
||||||
* for the current SCI version.
|
* version.
|
||||||
*/
|
*/
|
||||||
int16 *_defaultDivisions;
|
int16 *_defaultDivisions;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The list of PlaneShowStyles that are
|
* The list of PlaneShowStyles that are currently active.
|
||||||
* currently active.
|
|
||||||
*/
|
*/
|
||||||
ShowStyleList _showStyles;
|
ShowStyleList _showStyles;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Finds a show style that applies to the given
|
* Finds a show style that applies to the given plane.
|
||||||
* plane.
|
|
||||||
*/
|
*/
|
||||||
PlaneShowStyle *findShowStyleForPlane(const reg_t planeObj);
|
PlaneShowStyle *findShowStyleForPlane(const reg_t planeObj);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Finds the iterator for a show style that
|
* Finds the iterator for a show style that applies to the given plane.
|
||||||
* applies to the given plane.
|
|
||||||
*/
|
*/
|
||||||
ShowStyleList::iterator findIteratorForPlane(const reg_t planeObj);
|
ShowStyleList::iterator findIteratorForPlane(const reg_t planeObj);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Deletes the given PlaneShowStyle and returns
|
* Deletes the given PlaneShowStyle and returns the next PlaneShowStyle from
|
||||||
* the next PlaneShowStyle from the list of
|
* the list of styles.
|
||||||
* styles.
|
|
||||||
*/
|
*/
|
||||||
ShowStyleList::iterator deleteShowStyle(const ShowStyleList::iterator &showStyle);
|
ShowStyleList::iterator deleteShowStyle(const ShowStyleList::iterator &showStyle);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Initializes the given PlaneShowStyle for a
|
* Initializes the given PlaneShowStyle for a horizontal wipe effect for
|
||||||
* horizontal wipe effect for SCI2 to 2.1early.
|
* SCI2 to 2.1early.
|
||||||
*/
|
*/
|
||||||
void configure21EarlyHorizontalWipe(PlaneShowStyle &showStyle, const int16 priority);
|
void configure21EarlyHorizontalWipe(PlaneShowStyle &showStyle, const int16 priority);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Initializes the given PlaneShowStyle for a
|
* Initializes the given PlaneShowStyle for a horizontal shutter effect for
|
||||||
* horizontal shutter effect for SCI2 to 2.1early.
|
* SCI2 to 2.1early.
|
||||||
*/
|
*/
|
||||||
void configure21EarlyHorizontalShutter(PlaneShowStyle &showStyle, const int16 priority);
|
void configure21EarlyHorizontalShutter(PlaneShowStyle &showStyle, const int16 priority);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Initializes the given PlaneShowStyle for an
|
* Initializes the given PlaneShowStyle for an iris effect for SCI2 to
|
||||||
* iris effect for SCI2 to 2.1early.
|
* 2.1early.
|
||||||
*/
|
*/
|
||||||
void configure21EarlyIris(PlaneShowStyle &showStyle, const int16 priority);
|
void configure21EarlyIris(PlaneShowStyle &showStyle, const int16 priority);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Initializes the given PlaneShowStyle for a
|
* Initializes the given PlaneShowStyle for a pixel dissolve effect for SCI2
|
||||||
* pixel dissolve effect for SCI2 to 2.1early.
|
* to 2.1early.
|
||||||
*/
|
*/
|
||||||
void configure21EarlyDissolve(PlaneShowStyle &showStyle, const int16 priority, const Common::Rect &gameRect);
|
void configure21EarlyDissolve(PlaneShowStyle &showStyle, const int16 priority, const Common::Rect &gameRect);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Processes one tick of the given
|
* Processes one tick of the given PlaneShowStyle.
|
||||||
* PlaneShowStyle.
|
|
||||||
*/
|
*/
|
||||||
bool processShowStyle(PlaneShowStyle &showStyle, uint32 now);
|
bool processShowStyle(PlaneShowStyle &showStyle, uint32 now);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Performs an instant transition between two
|
* Performs an instant transition between two rooms.
|
||||||
* rooms.
|
|
||||||
*/
|
*/
|
||||||
bool processNone(PlaneShowStyle &showStyle);
|
bool processNone(PlaneShowStyle &showStyle);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Performs a transition that renders into a room
|
* Performs a transition that renders into a room with a horizontal shutter
|
||||||
* with a horizontal shutter effect.
|
* effect.
|
||||||
*/
|
*/
|
||||||
bool processHShutterOut(PlaneShowStyle &showStyle);
|
bool processHShutterOut(PlaneShowStyle &showStyle);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Performs a transition that renders to black
|
* Performs a transition that renders to black with a horizontal shutter
|
||||||
* with a horizontal shutter effect.
|
* effect.
|
||||||
*/
|
*/
|
||||||
void processHShutterIn(const PlaneShowStyle &showStyle);
|
void processHShutterIn(const PlaneShowStyle &showStyle);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Performs a transition that renders into a room
|
* Performs a transition that renders into a room with a vertical shutter
|
||||||
* with a vertical shutter effect.
|
* effect.
|
||||||
*/
|
*/
|
||||||
void processVShutterOut(PlaneShowStyle &showStyle);
|
void processVShutterOut(PlaneShowStyle &showStyle);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Performs a transition that renders to black
|
* Performs a transition that renders to black with a vertical shutter
|
||||||
* with a vertical shutter effect.
|
* effect.
|
||||||
*/
|
*/
|
||||||
void processVShutterIn(PlaneShowStyle &showStyle);
|
void processVShutterIn(PlaneShowStyle &showStyle);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Performs a transition that renders into a room
|
* Performs a transition that renders into a room with a wipe to the left.
|
||||||
* with a wipe to the left.
|
|
||||||
*/
|
*/
|
||||||
void processWipeLeft(PlaneShowStyle &showStyle);
|
void processWipeLeft(PlaneShowStyle &showStyle);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Performs a transition that renders to black
|
* Performs a transition that renders to black with a wipe to the right.
|
||||||
* with a wipe to the right.
|
|
||||||
*/
|
*/
|
||||||
void processWipeRight(PlaneShowStyle &showStyle);
|
void processWipeRight(PlaneShowStyle &showStyle);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Performs a transition that renders into a room
|
* Performs a transition that renders into a room with a wipe upwards.
|
||||||
* with a wipe upwards.
|
|
||||||
*/
|
*/
|
||||||
void processWipeUp(PlaneShowStyle &showStyle);
|
void processWipeUp(PlaneShowStyle &showStyle);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Performs a transition that renders to black
|
* Performs a transition that renders to black with a wipe downwards.
|
||||||
* with a wipe downwards.
|
|
||||||
*/
|
*/
|
||||||
void processWipeDown(PlaneShowStyle &showStyle);
|
void processWipeDown(PlaneShowStyle &showStyle);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Performs a transition that renders into a room
|
* Performs a transition that renders into a room with an iris effect.
|
||||||
* with an iris effect.
|
|
||||||
*/
|
*/
|
||||||
bool processIrisOut(PlaneShowStyle &showStyle);
|
bool processIrisOut(PlaneShowStyle &showStyle);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Performs a transition that renders to black
|
* Performs a transition that renders to black with an iris effect.
|
||||||
* with an iris effect.
|
|
||||||
*/
|
*/
|
||||||
bool processIrisIn(PlaneShowStyle &showStyle);
|
bool processIrisIn(PlaneShowStyle &showStyle);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Performs a transition that renders between
|
* Performs a transition that renders between rooms using a block dissolve
|
||||||
* rooms using a block dissolve effect.
|
* effect.
|
||||||
*/
|
*/
|
||||||
void processDissolveNoMorph(PlaneShowStyle &showStyle);
|
void processDissolveNoMorph(PlaneShowStyle &showStyle);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Performs a transition that renders between
|
* Performs a transition that renders between rooms with a pixel dissolve
|
||||||
* rooms with a pixel dissolve effect.
|
* effect.
|
||||||
*/
|
*/
|
||||||
bool processPixelDissolve(PlaneShowStyle &showStyle);
|
bool processPixelDissolve(PlaneShowStyle &showStyle);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* SCI2 to 2.1early implementation of pixel
|
* SCI2 to 2.1early implementation of pixel dissolve.
|
||||||
* dissolve.
|
|
||||||
*/
|
*/
|
||||||
bool processPixelDissolve21Early(PlaneShowStyle &showStyle);
|
bool processPixelDissolve21Early(PlaneShowStyle &showStyle);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* SCI2.1mid and later implementation of
|
* SCI2.1mid and later implementation of pixel dissolve.
|
||||||
* pixel dissolve.
|
|
||||||
*/
|
*/
|
||||||
bool processPixelDissolve21Mid(const PlaneShowStyle &showStyle);
|
bool processPixelDissolve21Mid(const PlaneShowStyle &showStyle);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Performs a transition that fades to black
|
* Performs a transition that fades to black between rooms.
|
||||||
* between rooms.
|
|
||||||
*/
|
*/
|
||||||
bool processFade(const int8 direction, PlaneShowStyle &showStyle);
|
bool processFade(const int8 direction, PlaneShowStyle &showStyle);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Morph transition calls back into the
|
* Morph transition calls back into the transition system's `processEffects`
|
||||||
* transition system's `processEffects`
|
* method, which then applies transitions other than None, Fade, or Morph.
|
||||||
* method, which then applies transitions
|
|
||||||
* other than None, Fade, or Morph.
|
|
||||||
*/
|
*/
|
||||||
bool processMorph(PlaneShowStyle &showStyle);
|
bool processMorph(PlaneShowStyle &showStyle);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Performs a generic transition for any of
|
* Performs a generic transition for any of the wipe/shutter/iris effects.
|
||||||
* the wipe/shutter/iris effects.
|
|
||||||
*/
|
*/
|
||||||
bool processWipe(const int8 direction, PlaneShowStyle &showStyle);
|
bool processWipe(const int8 direction, PlaneShowStyle &showStyle);
|
||||||
|
|
||||||
@ -476,8 +435,7 @@ public:
|
|||||||
inline bool hasScrolls() const { return !_scrolls.empty(); }
|
inline bool hasScrolls() const { return !_scrolls.empty(); }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Processes all active plane scrolls
|
* Processes all active plane scrolls in a loop until they are finished.
|
||||||
* in a loop until they are finished.
|
|
||||||
*/
|
*/
|
||||||
void processScrolls();
|
void processScrolls();
|
||||||
|
|
||||||
@ -490,8 +448,7 @@ private:
|
|||||||
ScrollList _scrolls;
|
ScrollList _scrolls;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Performs a scroll of the content of
|
* Performs a scroll of the content of a plane.
|
||||||
* a plane.
|
|
||||||
*/
|
*/
|
||||||
bool processScroll(PlaneScroll &scroll);
|
bool processScroll(PlaneScroll &scroll);
|
||||||
};
|
};
|
||||||
|
Loading…
x
Reference in New Issue
Block a user