In Future Wars the command line was not always updated and thus failed
sometimes to be up to date (i.e. showing wrong text, e.g. "EXAMINE" only
when it should have read "EXAMINE scaffolding" because the mouse cursor
was on the scaffolding).
Now we just always update the command line for both Future Wars and
Operation Stealth which seems to fix the command line updating.
I think this probably was a regression caused by adding support for
Operation Stealth (i.e. pull request #2365) and the efforts made in it
to make the user interface responsive.
Previously the inventory could be summoned multiple times by pressing
F3 or F4. Fix that by keeping track when the inventory has been opened
and not allowing multiple use of it simultaneously.
After player has died it was hard to get the system menu to appear by
pressing the left and right mouse buttons simultaneously or the middle
mouse button. Fix that by using the maximum values of the mouse button
states for the polling period (Around 110ms at default play speed).
In Operation Stealth DOS and Atari ST versions, but not Amiga or
demo versions, sound effects are loaded in AUTO00.PRC using a
combination of o2_loadAbs and o2_playSample(1, ...) before
o1_freePartRange(0, 200). This is a better heuristic for ending the
script at the correct position than checking whether global variable
255 is compared to 0. In the original game AUTO00.PRC was run when
starting or restarting the game and one could not load a savegame
before passing the copy protection. Thus, we try to emulate that
behaviour by running at least part of AUTO00.PRC before loading a
savegame.
This raises the maximum number of savegames from 20 to 100.
The original UI could only show 20 on a screen at once so an
intermediate selection menu for selecting the group of 20 savegames
to be accessed is added in this commit:
0-19
20-39
40-59
60-79
80-99
Those are the values that are shown when selecting
"Restore game" or "Save game".
After selecting the group of savegames to be accessed that particular
group is only shown as those 20 can fit on the screen using the
original save/load UI.
At least partially if not fully fixes bug #11625.
This throttles the safe controls in Operation Stealth in the
presidential palace after the first labyrinth arcade sequence.
The problem was that the safe controls were a bit too fast i.e. by
pressing on a single button you might easily get the numbers to change
by more than a single digit. This throttles the pressing of safe
control buttons in this particular scene to a maximum rate of 4Hz
(i.e. at least 250ms has to have passed before a click is registered
again).
Fixes bug #11621.
Add support for Operation Stealth PC 16 and 256 color versions with
AdLib and Roland MT-32 sound. Add support for 20 extended savegames
(Thumbnails, playtime etc) for both Future Wars and Operation Stealth
(20 because it fits on screen using the original save/load interface).
Details:
- Add versioning to Future Wars and Operation Stealth savegames.
- Add fade in effect to both Future Wars and Operation Stealth.
- Add mouse wheel support and keyboard support to moving in menus.
- Map middle mouse button to pressing both left and right buttons.
- Make interface more responsive (See manageEvents() and drawFrame()).
- Amiga versions should be completable but sound may or may not work.
- Atari ST versions completely untested.
Game options currently supported:
- Using original save/load interface
- Using transparent dialog boxes in 16 color scenes (Also for PC)
Console commands currently supported:
- labyrinthCheat (For cheating in Operation Stealth's labyrinths)
- disableLabyrinthCheat (Disabling labyrinth cheat)
- disableHacks (Disabling hacks, useful for testing)
- enableHacks (Enabling hacks, useful for testing. On by default)
This tries to make our code a bit more compliant with our code formatting
conventions. For future use, this is the command I used:
git ls-files "*.cpp" "*.h" | xargs sed -i -e 's/[ \t]*$//'
With the latest changes to executePlayerInput we
should now be able to free the girl at the bottom of the
ocean without the r33872.
The commit log from r33872 was:
"Fix for bugging moving at the bottom of the ocean when trying to free the girl from the ropes and swimming to the surface. Some global variables related to mouse position weren't being updated in executePlayerInput, now they are and things seem to work. Also enables moving in the labyrinth arcade sequence at the palace."
svn-id: r47516
- NOTE: This doesn't seem to work correctly yet.
My current guess is that it has to do with how
some keyboard events are handled in cine/main_loop.cpp's
processEvent-function and some in cine/various.cpp's
executePlayerInput.
svn-id: r47515