But, pump mouse messages as fast as we can to make the game feel better.
This is more accurate to how the original games work. We stop pumping if a
mouse click event happens, but that should work petty well.
This fixes a number of bugs in the way Willy Beamish was playing.
* Play sample should be one-shot (don't replay every frame)
* TTM op 0020 should save to background differently (fixes double-drawing)
* Disabled areas still change mouse cursor and hold clicks until enabled,
properly fixes eg exiting detention at the start
* Fix the way "used" sequences are calculated so Willy can enter his house,
removing the previous hack
* Refactor scene condition check to separate file
* Small const correctness improvements
Some game timing events are based on ms elapsed, but we were just getting the
current ms when it was evaluated. This was not very consistent and could
potentially lead to weird problems, although in practice they were unlikely
Record the elapsed ms at the start of each frame so we can use the same
comparison point in every operation.
In d26ee6, I changed the scene ops to always be executed to the end even if the
scene changed - this was not correct and it breaks scene 60 (police cutscene)
in Rise of the Dragon, which stores the current day into a variable - but if
run twice will leave the day as 999 after leaving.
The correct behavior is not to abort ops *only* in the case of scene change to
inventory. All other scene changes should still abort running scene ops.