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.
The IFF format used in the Nancy Drew engine uses a
non-standard id that reads DATA instead of FORM, though
the rest of the format is identical. This commit allows such
nonstandard ids to be used without needing to massage the
data first.
There is an option to show/hide the inputAccessoryView contataing
special buttons not present on the iOS system keyboard, nor the
Apple iPad Magic keyboard.
Make sure the parent frame size is resized properly depending on
the option setting and if HW keyboards are connected.
The soft keyboard is enabled by calling showKeyboard which will set
the inputView, which is a UITextField, to become the first responder.
This will trigger the software keyboard to pop up. The showKeyboard
function is either called by the GUI when clicking into an editable
box, by the engine when keyboard input is required or when the user
forces it to be shown by a gesture or pressing the on-screen control
button..
The keyboard handling above suits the software keyboard but no HW
keyboards since if the inputView is not the first responder no key
presses are registered. One can expect that key button presses on a
HW keyboard should be registered without enabling the soft keyboard.
Implement handling to enable the inputView when HW keyboards are
connected.
It was reported that in some games, e.g. COMI, if suspending the iOS
application by putting it to background and then some time later
resuming it again the music doesn't start playing. It was reproduced
in The Dig and most probably Full Throttle was affected.
The time it took for the music to play again after resuming turned
out to be related to the time the app was in background. The longer
the app was in background, the longer it took for the music to start
playing again.
The legacy implementation of getMillis in the iOS7 backend accounted
the time the application was suspended. The time was accumulated
every time the app moved to background and it was never reset.
The getMillis function used the accumulated value and substracted it
from the time difference from the current time.
This seems to have caused problems with the timer handler, causing
slots to not be executed in correct time. The Android backend do not
account for the time in background.
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.