Added a missing event flag member of the PlayDIGISoundAndDie action record. This allows the player to cut off the chains on nancy1's boiler room lever puzzle.
Added support for the PasswordPuzzle action record, which is used in the computer in the teacher's lounge in nancy1. To enable typing the password in, also added support for all keyboard down events in the Input class.
The PlayIntStaticBitmapAnimation action record is now modeled after the original engine's implementation, and supports reverse playback and getting triggered by an event flag.
The textbox's token parser no longer makes a distinction between captions and responses, and also supports telephone-specific tokens. The code still makes a couple of assumptions about the input text, but those can be fixed in the future if needed.
Some action records have fields for sound that can be left unused by putting "NO SOUND" in the filename string. This commit moves the check for that keyword inside sound.cpp so it isn't repeated everywhere.
The original engine stores sound information in at least four different types of structs, all of which can now be loaded and played back. Also implemented sound types, which will be configurable from the ScummVM interface, added the correct number of sound channels, and implemented sound fx in a couple of action record types.
Rewrote most of the engine using a much more object-oriented approach and using more of ScummVM's common classes. This design deviates quite a lot from the original engine's, but should be more maintainable and extensible in the future.
Implemented most of the PlayPrimaryVideoChan0 action record, which is used in all dialogue and the intro cutscene. For now the audio and video are out of sync, the scrollbar doesn't work, and the mouse isn't constrained.
Added code to move the two scrollbars and implemented renderFrameInvBox(), which displays the inventory. Actually populating the inventory and interacting with it are still TODO.
Added the place names that appear when hovering a location on the map screen and the button to return to the last scene. Also made some minor improvements to the input manager.
Implemented the map state, as well as the two main action record types that call it. Also made some minor related changes to the scene and graphics managers.
Implemented the PlaySecondaryMovie action record, which is used in some death scenes. Also made some minor changes to a few other action records and the sound manager.
Implemented PlayIntStaticBitmapAnimation, which allows the teacher's room PC screensaver to display properly. This impementation skips the sound component, which will be added later if needed.
Implemented the two SecondaryVideo channels, allowing the game to display NPC animations outside of dialogue. The implementation repeats some frames and plays at the wrong speed so further work is needed.
Added code to make AVF videos seekable. Not tested on video type 2, but will almost definitely break it. Also updated class definitions to properly mark virtual methods.
Added a sound manager and hooked the Logo and Scene classes to it; also implemented the PlayDigiSoundAndDie action record. As a result the first part of the intro and some of the sounds in the first area can now play properly.