Previously, there was a workaround which would set score->_nextFrame to
the current frame. This meant that setting the stageColor in an
exitFrame handler would loop that single frame and softlock the movie.
The new approach re-renders the sprites and window inline, as we do
in several other spots.
Fixes frame progressions in Yaken Rodem.
At first glance it would seem we could use funcSym.nargs for this,
except it is fixed to the number of args in the function definition.
We also can't derive it from the argument list that is sent through,
as it is truncated/padded with VOIDs. To keep things simple, track
paramCount as part of CFrame.
Normally you can only change the width and height of a sprite when the
sprite is a puppet, and the stretch flag is set. Apparently for shapes,
all that's required is the puppet flag.
Fixes the mouse cursor bounding box in DEVO Presents: Adventures of the
Smart Patrol.
In Director, Lingo calls to fetch "the pathName" would provide an absolute
path, including the volume. getCurrentPath() originally provided a
relative path, which meant root level would return "". There is at least
one title that checks "the pathName" isn't blank as part of the content
detection routine. Given that from an internal perspective,
getCurrentPath() is always an absolute path from the game root, we can
add a fake drive letter for Windows at the front.
Fixes loading in DEVO Presents: Adventures of the Smart Patrol.
The datum constructor is overloaded and handles setting the type.
Instead of setting the type by hand we leverage the constructor.
The in this commit are mainly for Datums of type int.
Internally, ScummVM refers to palette indices in a reverse order
compared to the Director runtime. As such, any script-based reading or
writing of color indices needs to be transformed to match this.
Fixes the coloring of the inventory in Eastern Mind.
preLoadEventAbort is a boolean property. When true pressing keys or clicking the
mouse can or stop preloading of cast member. ScummVM doesn't preload, so
implemented as a no-op.
updateMovieEnabled is a boolean. It's a flag to signal that the changes
in the movie need to be saved when branching to another movie.
The variable is implemented but without any side effect.
The traceLoad property can be 0, 1, 2 or 3. It specifies how much
verbosity is shown when loading cast members.
It's a bt useless for ScummVM. We have our own verbosity mechanism.
Furthermore ScummVM loads all casts up front and unload is a no op.
The actorList is a global array property. Birthed scripts can be added
to it. The `stepFrame` method is called on all objects in the array on
every frame. < D4 had an executePerFrameHook for this.
In Director the exitLock prevents quitting the program when it's set to
TRUE. get and set for the exitLock is implemented.
The underlying functionality, preventing exiting a program, is not
implemented. ScummVM should always respond to a QUIT event.