Created a new header file for action records that mainly
serve to manipulate data. This is done in preparation for the
addition of SetValue, SetValueCombo, and ValueTest.
Added more rigid entries for some game variants where
the ciftree.dat file is not present inside the cabfiles. Now,
those entries require a second file that can only be found
when the cabs are extracted.
This commit makes changes that ensure the nancy7
dog scare sequence will have the correct fades to black
without impacting other scene transitions. This is achieved
by delaying full-screen movies by exactly one frame.
A couple of scenes in nancy7 draw to the textbox, then
immediately change the scene, which clears said text.
This commit adds a check for whether text was actually
drawn, and if it hasn't, makes sure it is shown in the next
scene. This is behavior not present in the original engine.
Previously, the record worked based on the assumption that
its background will be completely black. This is not the
case in several nancy7 scenes. To support it, an additional
4-byte ARGB pixel format is now allowed in the engine, since
we need to be able to set an alpha value for the surface.
I don't have a BE system to test this out properly, but in
theory it should be cleaner to do any byte swapping for
loaded resources at load time rather than everywhere the
resource is accessed.
In a few places, such as script execution, it won't be
feasible to track down which bytes are the opcodes and
switch them beforehand. But for others, such as cels,
it should be possible to similar to what I've done here
to ensure the data can be accessed natively afterwards.
The enum has range restriction, which could lead to an undefined
behavior when using as a variadic parameter. This is indicated
by the following wanring:
passing an object that undergoes default argument promotion to 'va_start' has undefined behavior
Switching it to 'int' type solves the problem while keeping
the functionality
The puzzle got some changes in nancy7, allowing it to
only rotate 180 degrees or skip rotation entirely, and just
reorder elements instead. Also, a custom pick up graphic
can be used instead of the individual elements; this is used
in the folder reordering puzzle, where a picked up folder
is shown in full.