Don't rely on event.mousePos staying the same throughout the loop.
This makes sure the button stays highlighted for as long as the
mouse button is depressed, unless the mouse is moved off the button.
The calculation of mousePos is slightly hackish. It should probably
use a GfxManager object for that, but this will do for now.
We also change how alloc failures are handled: Instead of using
assert(), which is usually disabled in release builds on various
platforms, we now *always* catch this situation and invoke error() if
necessary.
It was using out-of-bounds data to manipulate the palette, and a
missing break caused it to change palette again immediately. Still,
even after this change I had the impression that the temporary
palette was visible for a bit longer in DOSBox. Could be my
imagination, though.
This unifies the engine names in MetaEngine::getName() and the
credits. In particular drop "Engine" or "engine" from the names when
it was present and use expanded names in credits when the
MetaEngine uses it (e.g. "Beneath a Steel Sky" instead of "BASS").
We now delay the mouseup events for 50ms, rather than just delaying them for an additional couple of pollEvent (which doesn't work anymore due to changes in the eventhandling code elsewhere). This fixes#3018512.
We now delay the mouseup events for 50ms, rather than just delaying them for an additional couple of pollEvent (which doesn't work anymore due to changes in the eventhandling code elsewhere). This fixes#3018512.
- Revert guesswork fix for bug #761637 which caused bug #1315950
- Add missing clear_queue() call to stopAllSounds_internal(). This is taken from INDY4 / MONKEY2 disasm. Someone with a SAMXMAX or DOTT disasm might want to check whether this is correct for these targets, too.
- Old FOA savegames saved after the Dr. Ubermann death scene (= during the ending sequence) will still be bugged, since the messed up imuse trigger/command queue gets restored from the savegame.
The start/intro dialog, the inventory dialog and the conversation
dialog now call delayMillis() in their event loop. This is
consistent with how the action menu dialog already worked.
Save slot 0 is valid. It's -1 that indicates cancelling. Also, we
need to check if the user tried to quit, to avoid a nasty loop of
hard-to-terminate restore dialogs.