It has been mentioned in "Director in a Nutshell, pg 15" that
auto-puppet is first introduced in D6, therefore completely
dropping checks for D2-D5. Also added code that skips individual
property of a frame if that specific property is found it be
auto-puppet.
eg, A sprite has change in `locH` and `blend`, and blend is auto-puppeted
(it was set somewhere before, and autoPuppet flag for this bit is true),
then that means frame loading will only skip any changes made to `blend`
and will load `locH` as usual.
According to "Director in a Nutshell, page 15", autoPuppet unlike
puppet is not a single property, instead it is individual for each
sprite property, ie we can have auto-puppet locH of sprite, but
other properties are not auto-puppet.
This change adds support for individual auto-puppet properties.
This removes the scoreCachedTempo from main channel struct, it was
observed that with advent of on demand frame loading, the tempo is
automatically being overwritten when found in score, this renders
previous logic to cache tempo and carry to forward useless.
`More Puppets` of 'theapartment-4` is now working.
Initially, all the changes to sprite location (ie set the locH..) was
being assigned to _currentPoint, which is not carried over to sprite,
thus the changes were not being applied.
Fixes bullet not showing when firing gun in
--start-movie="ATD\HD\bdDREAMA.DXR" totaldistortion-win
Without this the lingo modified non puppet sprites properties were not
being reflected in the frame. Now what happens is if you modify a non
puppet property then lingo will temporarily override the score (ie that
property is remain the same until an update from score is encountered)
This closely resembles the behaviour of the original engine.
This is used in totaldistortion-win
--start-movie="ATD\HD\bdDREAML.DXR"
When the bulb explodes, the Lingo tries to execute a constructed
do("me(bubdie2 5, 75)")
which then leads to syntax error.
The original allowed this broken Lingo syntax
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.
When reloading the shared cast, erase the references from both
_allSeenResFiles and _allOpenResFiles. In the case that the shared
cast is reloaded from a different path, this would leave a dangling
reference in _allOpenResFiles. This would then lead to a crash later
when enumerating _allOpenResFiles and trying to access the found
path in _allSeenResFiles.
Fixes a crash in the D4 version of Alice which would occur when loading
the cursor. This occurs since Alice ends up loading first Shared.dir and
then DATA:Shared.dir, leaving a dangling reference to Shared.dir in
_allSeenResFiles.
Issue was introduced in 9aa0958736.
Fixed memory leaks in `builtin.lingo` where the problem was due
to not deleting existing cast member before replacing it inside
`createOrReplaceCastMember`, the lingo instruction `move cast 1,3`
was having problems.
-p ./engines/director/lingo/tests/ --start-movie=builtin.lingo directortest
Initially `b_scummvmassertequal` was not working for arrays comparison
thus the test was failing. Now it is working and the tests are passing.
-p ./engines/director/lingo/tests/ --start-movie=sort.lingo directortest
Since June 30, 2023 Play Store requires TV apps that use this category to use the app bundle distribution model
Since we currently build separate APKs this removal is a temporary measure for the upcoming release of 2.7.1.
However, we should re-instate the tag when we switch to the App Bundle distribution module and perhaps investigate, test
and resolve any other issues related to running the ScummVM Android app for TVs.
The virtual controller layout is not updated properly on
orientation changes. Buttons can be placed outside the screen.
Make sure to set the GCControllerView properties on orientation
changes by connecting the virtual controller based on the
user settings.
On iPhones the virtual game controller buttons does not fit
within the screen borders in portrait mode. Disconnect the
virtual controller on iPhones when changing orientation to
portrait mode.
Utilize an undocumented way to find the GCControllerView by drilling
down the subviews. When found, set the GCControllerView frame size
to full screen size to make sure all buttons do fit within the
screen boundries. This is important to do on devices with safe areas
like iPhones with the sensor panel.
Set the GCControllerView alpha to the user specified value.
The left side of each picture was cut off, and padded with white at the
right side instead. This regression was introduced somewhere between
1.7.0 and 1.8.0 as part of a "graphics rewrite + cleanup".