CifFile/CifTree classes have been completely rewritten and
moved to their own header file. ResourceManager is now
exclusively responsible for loading IFF files, making sure
loose .iff/.cif files take precedence before ones embedded
in a ciftree.
Also, completed work on the cif/ciftree exporting functions.
BitmapCastMember::isModified would test to see if there had been a
palette change, and recommend a redraw. Because of a typo, the check
would always fail and require a redraw, meaning the presence of a
640x480 static image would require redrawing the entire screen.
All file input/output via FileIO is written to the save game storage,
irrespective of destination path. Occasionally, some games will use the
Director file APIs (namely b_getNthFileNameInFolder) to check that a
file exists before trying to open it. This quirk allows you to specify a
path where save game files would be stored, and inserts file stubs
into CachedArchive with the filenames from the save game storage.
Fixes save game detection in The Dark Eye.
This animation is CPU-bounded in the original, making it run too fast on recent machines.
In our implementation, however, there are some sleep() calls on the way making it run
slightly too slow, so we make it skippable as a workaround.
Autotext records generate surfaces that are used by other
action records. When loading from a save, the Autotext
will already be marked as "done", and thus wouldn't generate anything, resulting in a crash. This commit makes
sure this doesn't happen.
The detection that the demo movie was skipped is done by the external flag _demoMovieSkipped
This is not as clean as it would be updating a reference parameter variable from within playMovie()
but that would require changing the signature of playMovie and all of its calls
This is a more complete fix for the crash that happens
when attempting to draw a sprite with a dimension of
size 0 (e.g. the space character in Out of Order's font). This
fix targets the other two functions that can draw text,
pasteSpriteToBackDrop() and burnSpriteToBackDrop().
The space character in Out of Order has a height of 0,
which caused a divide by zero error further down the chain
in the blitting code. Instead of attempting to draw,
fontSprite() now simply skips them.