Implement the use of integers and floats as keys in property arrays.
Property arrays in lingo use the following syntax: [#a: "text"].
They are better known as HashMaps in CPP.
It resolves a bug in Star Trek Omnipedia which uses integers for keys.
- Includes lingo tests.
Check if the the key requested from loadedStxts is available before
getting the value.
Star Trek Omnipedia requests stxt id 5, which isn't loaded.
Resolves: https://bugs.scummvm.org/ticket/13341
Reduce abuse of the property function to set init vars.
Better distinction between drivers to prevent a GM init on
the Mac driver (which could happen depending on the
launcher sound setting).
(I have checked some more drivers. It seems that the AdLib and PC Speaker
drivers of the earlier games have larger boundaries, the MT-32 drivers have
smaller ones)
Switching to a new movie should force a switch to the default palette if
required, and not assume the palette in use is correct.
Fixes the palette tinting after being reincarnated in Eastern Mind.
Blit operations in Director expect that the "white" and "black" color
indexes are at 255 and 0, respectively. Fetching these values from
the window manager is not reliable when the palette has multiple
indexes sharing a color (e.g. blackPalette and whitePalette), which will
mean the applyColor flag is incorrectly set to true when foreColor and
backColor are the correct values.
Fixes fade from white when entering the door to the Land of Desire in
Eastern Mind.
- Transitions now appear in the debug log, including parameters and
timing.
- Most transitions would calculate a fixed number of steps, then work
backwards to figure out the framerate required to fit the duration.
This approach didn't work for shorter durations, as the delay required
for the number of steps would drag out the duration. This has been
fixed by introducing a floor to the number of steps, so that the
framerate is no higher than 60fps.
- Multi-pass transitions were previously calling stepTransition() on
every blit; this would effectively redraw the entire screen ~96 times
a step and blow out the draw time to ~44 seconds. stepTransition() is
now called once per step.
- Blind transitions now cover the full range.
- kTransDissolveBoxySquares and kTransDissolveBoxyRects were swapped.
- kTransDissolveBoxyRects now adjusts for the viewport aspect ratio.
Previously it was possible for a Lingo script to stop a score sound channel,
then call updateStage, which would immediately start it again. To fix
this, updateStage() will now only update puppet sounds.
Fixes the sound playback when going from the map to the exit screen in
Chop Suey.