In D5, the castNum will return a multiplexed ID instead of just the
member ID, and various other features will accept and use the
multiplexed ID.
Fixes the story playback and basic navigation in Smarty.
The constant contained an extraneous F which is removed.
In addition, mark it as unsigned to avoid undefined behaviours while
manipulating too large constants.
Implement support for `RTECastMember` in `duplicateCastMember`.
Adds a constructor on `RTECastMember` for duplication.
Resolves a crash in the Safecracker menu where the error was:
Uncaught Lingo error: No match found for cast member
The following was found in Director 5 when reading text casts.
The relevant part for the cast is copied from the filestream in a
MemoryReadStreamEndian. `eos` is set when more is read then is available
but it won't error out.
In this case we want a warning when this happens and an error in the
buildbot. It probably means we don't load casts right yet.
It is possible for the bytecode compiler to call
getCastMemberByScriptId, which in turn can force a load() for a cast
member. If this cast member happens to be a TextCastMember, the text
will be missing.
Fixes the maze gallery minigame in Virtual Nightclub.
Cast bounding boxes are now copied, and duplicates of shared cast
members are kept in the (cross-movie) shared cast.
Fixes displaying the inventory bar in Virtual Nightclub.
In Director you can have multiple cast members with the same name.
Looking up a cast member by name should always return the first member
ID; we don't necessarily load the cast members in order, so we need
to verify this. Also any cast manipulation actions should update or
refresh the name cache.
Fixes the bitmaps chosen for the welcome cube at the start of Virtual Nightclub.
With D2/D3 action and movie scripts, if there is a syntax error,
the compiler seems to truncate the script at the first unreadable
character, then attempt to compile again.
Fixes the machine gun minigame in Hell Cab.
Fixes video path fetching in Director 3 movies which use MooV stubs
to link to a QuickTime filename with Japanese characters (e.g.
intelligentnote demo).
Fixes video path fetching where the directory in the castInfo ends with
a path separator (e.g. criticalpath).
This patch adds support for filmloops composed of other filmloops.
It also fixes a bug in the filmloop bbox computation during Sprite::setCast() , we have to create a case kCastFilmLoop to prevent it from going to default case as the default case equates it to dims which is initialrect (0 value) , so the setCast function basically made film loop bbox 0.
Steps to reproduce:
Run the command: ./scummvm --start-movie="ATD\HD\ccTWRRAD.DXR" totaldistortion-win.
After running the command, the fish will now be visible. Previously, it was not being displayed due to lack of nested film loop support.
This gives the ability to replace function handlers in a compiled Lingo
script with a replacement from the quirks table. The replacement can be
written in Lingo; no need to worry about injecting bytecode.
As an example, here's a replacement for Cosmology of Kyoto's text input
handler. The original was notorious for requiring an exact match against a
word list containing typos, along with extra spaces and punctuation. The
new one is more forgiving, and always supports the answers "yes" and
"no".
It is possible for cast resource IDs to overlap with non-cast ones.
The most notable example is movie resources, which are hardcoded
to resource ID 1024.
As a precaution, when loading the cast data, iterate through all of
the child resources and search for one with the expected tag.
Fixes loading text cast member 3743 when putting the lamp on the
bedside table in The Dark Eye.
PaletteCastMembers exist in D2, and the process for loading them is
the same as in D3. The special case in Cast::loadCast() isn't needed.
In D2 the PaletteCastMember::load() hook wasn't getting called;
we solve this by copying the load() hook to loadCastDataVWCR, which will
get called even if there are no CastInfo objects.
Fixes the colour-cycling Invictus logo in Alice: An Interactive Museum.
This drops the _castArchive->hasResource() check that was placed
before loading 'FOND' resource type.
Fixes texts fonts for 'theapartment-4' where 'shared.dir' has
'DecoText' font in the resource-fork.
This figure is supposed to be the highest member ID for a cast member in
the current movie, not the actual count of cast members.
In addition, Lingo only throws an error when querying cast member IDs that
are higher than this figure. If the member ID is lower and the cast
member doesn't exist, "the" queries return a VOID.
Fixes the verify cast table check in Star Trek TNG Episode Guide.
Make DirectorEngine::_allOpenResFiles the de-facto owner of Archive *
objects, move all of the various loadEXE/loadMac methods off Window and
onto DirectorEngine, and replace inline Archive loading with
openArchive().
If the destination movie uses a palette cast member in the same location
as the source, but with different data; Director will assume that the old
palette is correct right up until it has to switch to something else via
the score.
Additionally, ensure that all palettes are loaded into the index when
the Cast is loaded, not just single ones that haven't been loaded before.
Fixes movie transitions and palette rendering in Phibos: Following the Comet.