of the secret rotating pillar in level 1 with SO interpolation.
The drill in level 2 is also covered. So far, SetVatorActive seems
to be the only place where interpolation of ceiling/floorz
may be set, outside of the SO interpolation code.
A known issue, which also applies to existing settings like the voxel
toggle, is that its value gets written to the saved game, and when such
a game is loaded, the its value gets overwritten by the one in the
saved game. Options should move to settings.cfg later, anyway.
DoPlayerTurn/DoPlayerHorizon while input is tied to the frame rate:
Introduce the new player flags PF2_INPUT_CAN_TURN and PF2_INPUT_CAN_AIM.
Set PF2_INPUT_CAN_TURN if DoPlayerTurn can be called outside
of getinput. Similarly set PF2_INPUT_CAN_AIM if DoPlayerHorizon
can be called in this manner.
getinput will only call DoPlayerTurn/DoPlayerHorizon
if PF2_INPUT_CAN_TURN/PF2_INPUT_CAN_AIM is set. These flags are reset
right before the call to the player's current DoPlayerAction function.
For one example in which this assists, it's not always the
case that DoPlayerDeathFollowKiller may call DoPlayerTurn,
even if we assume that pp->input.q16angvel is never zero.
is non-null seems to resolve the newly introduced interpolation
issue for looking up/down while controlling a sector object.
We can also remove the PF_DEAD test, since
game.cpp:getinput should lock any kind of aiming.
src/src/game.cpp:getinput: We now, however, need to further
lock turning here while controlling a sector object.
While it is understandable that avel and horz came from Duke3D,
having both q16horiz and q16horz in the updated SW_PACKET struct
can be confusing, and the alternative notation is more consistent
with the original struct field names of angvel and aimvel, as well
as the differing uses of the name angvel still present in player.cpp.
This reverts commit e878c5bab8.
Revert "SW: Use Q16.16 for horiz."
This reverts commit f07a0ae01e.
Revert "SW: Use Q16.16 for angle."
This reverts commit 1ecc74c2ec.
Revert "SW: Minor repairs for Q16.16 implementation."
This reverts commit d78d046bad.
Revert "SW: Process input at frame rate."
This reverts commit c162014dab.
Revert "SW: Amendments to accommodate changes in master."
This reverts commit eaa51138ad.
Revert "SW: Fix incorrectly declared function input type."
This reverts commit 1cdd5b08d8.
Revert "SW: Amend scaleAdjustmentToInterval() with correct value for SW."
This reverts commit d4dd737cd5.
Revert "SW: Refinements to new input code."
This reverts commit 5ebc65a1fb.
Revert "SW: Adjust look and snap up/down keys and slightly tune PLAYER_TURN_AMOUNT."
This reverts commit 2852536dbf.
Revert "SW: Get PLAYER_TURN_SCALE to be just right."
This reverts commit 4630c8a0b7.
Revert "SW: Make map follow mode work better."
This reverts commit 8e94c48eff.
Revert "SW: Remove line accidentally left from 'MoveScrollMode2D()'."
This reverts commit 5db8047b41.
Revert "Fix multiplayer desync after the change to q16 angle and horiz."
This reverts commit 3bc46078b8.
Revert "SW: Revert commented out horiz->q16horiz renames in DSPRINTF strings"
This reverts commit 537313f620.
Revert "sw/src/draw.cpp:drawscreen: We can set the pp->si* fields just once,"
This reverts commit d2e9595980.
Revert "sw/src/game.cpp:LoadLevel: Rename q16ang -> ang"
This reverts commit a178961a3e.
Revert "SW: Minor tweaks."
This reverts commit 377ba68344.
Revert "SW: Further refine turning and optimise horizon adjustment."
This reverts commit 039022d9ac.
Revert "SW: Don't process input at frame rate if ScrollMode2D is true."
This reverts commit 1aa1e62c4d.
Revert "SW: Use a bit more Q16.16 in places."
This reverts commit 40ca656f38.
Revert "SW: Use the old interpolation path in drawscreen if player is dead"
This reverts commit 2d73466425.
Revert "SW: Smooth out 180 degree turn landing and replace some fix16_min/max with fix16_clamp."
This reverts commit 0996e87f79.
Revert "Change Next/Previous Weapon button handling for Shadow Warrior."
This reverts commit f6b8ca6a22.
Revert "SW: Make "Center_View" key return smoothly."
This reverts commit 23c401fbc2.
Revert "SW: Use the old interpolation path in drawscreen if player is dead"
This reverts commit 43ec16eb55.
Revert "Interpolation fixes for SW:"
This reverts commit ac8a7ecfbd.
Revert "SW: Reset the number of interpolations on level load"
This reverts commit 04bf8499e7.
Revert "Another change modifying saved game format in SW:"
This reverts commit e80888523e.
Revert "SW: Interpolate sector objects in non-demo, single player games."
This reverts commit 996ab77cf4.
Revert "- fixed merge errors in SW."
This reverts commit b8cfa94568.
Revert "- fix interpolation stutters when opening console for SW."
This reverts commit 99fdbfb6cb.
Revert "- reset buttonMap button states after returning from pause for SW (stops keys acting stuck down if down prior to pausing)."
This reverts commit 693b6955da.
Revert "SW: fix stupid input scaling bug"
This reverts commit 1c79e6e17c.
Revert "SW: Make vehicle input better."
This reverts commit 670a53c402.
Revert "SW: Change fix16_from_float() to fix16_from_int() that was changed in 4630c8a0b7 but should have been reverted in 377ba68344e34495638c6fa7685ff78c9a0ed6f8."
This reverts commit 423c9da071.
Revert "SW: Remove ScrollMode2D extern boolean and move into PLAYERp struct."
This reverts commit 31eb55c1fa.
- Define new boolean 'on_vehicle' in PLAYERp struct for use with interpolating while on vehicle and other checks.
- Move horizon code back into separate DoPlayerHorizon() function. Adjusting horizon while in vehicle must come at the end of the DoPlayerOperate*() function.
- Make DoPlayerHorizon() accessible in game.cpp.
- Change code in DoPlayerHorizon() to process according how 'pp->on_vehicle' is set.
- Make scaleAdjustmentToInterval available outside of getinput().
- Don't process input at frame-rate while on a vehicle. Vehicle code is too difficult to process outside of the game's clock.
Partially based on NY00123's upstream implementation of tying player input to frame-rate.
Let's see if this is breaking anything.
# Conflicts:
# source/sw/src/draw.cpp
# source/sw/src/game.cpp
# source/sw/src/game.h
# source/sw/src/interp.cpp
# source/sw/src/track.cpp
- Inline function returns a double, therefore we should use it and not potentially truncate the mantissa.
- Use divisors to get true numbers of some floats (3.333 -> 10/3, etc).
- Remove a few brackets/parentheses where possible from what are already exceedingly bracketed lines.
Since the same word gets used in text messages and local variables in the game code it is easier this way to search for it and facilitate its transition to the translation table management in PaletteContainer.
- Move DoPlayerTurn() into getinput(). Vehicle code remains external for now.
- Remove horizAdjust boolean and always do horizon code in getinput(). Eliminates single off frame at start of a new level until DoPlayerMove() is called at least once.
- Input was too fast following input code changes.
- Speed of input can now be changed with toggling the run key.
- Remove function 'MoveScrollMode2D()' and incorporate into 'getinput()' to reduce code duplication.
- Store map follow coordinates in PLAYERp struct and remove old globals.
- videoNextPage() moved to after restoring interpolations.
- Properly use Q16.16 in as many places as possible. This fixes the angle/X-axis issues.
- Remove unnecessary call to timerUpdate() in main loop, only needs calling once and is called by eventhandlers().
the functions' signatures (often due to being used as callbacks/hooks)
git-svn-id: https://svn.eduke32.com/eduke32@8696 1a8010ca-5511-0410-912e-c29ae57300e0
# Conflicts:
# source/sw/src/jnstub.cpp
# source/sw/src/menus.cpp
# source/sw/src/panel.cpp
# source/sw/src/text.cpp
For ambient sounds that can be cleanly restarted a new 'transient' flag was added so that these do not get written out.
Tested on SW so far, other games yet to do.
They are used a state identifiers but identical content-wise so MSVC's linker would merge them all together into one if some code wasn't added to make them different.
A global check for the scratch variable was added in a harmless place to ensure that whole program optimization algorithms won't optimize it out anyway after discovering that the variable is never used.
This eliminates another piece of hideous code.
This commit also moves the memory error handler to the common code, so that all games can call it if triggered.
This needs to be replaced with the game independent ZDoom version and hooked up properly, but it of low priority because it's a multiplayer only feature.
This allows game and defs to not overwrite each other's voxels.
git-svn-id: https://svn.eduke32.com/eduke32@8471 1a8010ca-5511-0410-912e-c29ae57300e0
# Conflicts:
# source/kenbuild/src/bstub.cpp
# source/kenbuild/src/game.cpp
# source/sw/src/bldscript.cpp
# source/sw/src/jnstub.cpp
* removed all cases of getting a sound handle and checking it later.
* In particular, refactor the cases where the handle is stored in a static local variable. These are fundamentally unsafe because nothing maintains these local variables.
* finished rewriting the PlaySound function. Let's hope this is what was intended, the entire coding here was not particularly good, mixing high and low level sound handling all on the same level.
* call the update routine each tic and not merely every 4th or 8th one, this kind of granularity was ok in 1997 but not with a modern sound engine.
* removed old sound loading code, which was the last bit to use cacheAllocateBlock which is also gone now.
* cleanup of player sound code. All game side tracking of the sound resources has been removed.
does not compile yet.
Because, why not? The SWCustom I use already contains them.
However, since the original source does not play theme MIDIs - only CDA, there's a switch to disable them.
* removed temporary placeholder content from string init function. All this gets properly read from definition files now.
* preinitialize a few quotes that are used for status display purposes and are needed in all games
* only use the global episode name table in Blood to avoid redundancy
* let SW's swcustom parser write to the global tables instead of local ones.
This was one huge mess where nothing fit together.
Also added an enhancement that the CD Audio boss theme tracks are also played when CD music is generally off, because these have no equivalent in MIDI. This needs to be checked if it's stylistically ok, though.
Sound is only partially functional, video mode completely nonfunctional, but it makes no sense adjusting them to the current backend code when it's due for replacement.
Reverted this to a sane setting, as it was in the original games and in all other games I have ever seen, i.e. there is a global setting to enable mouse view, and a button to manually trigger it. The toggle can be easily handled by flipping the CVAR directly.
The main problem here was that it triggered a few cases for mouse-less gameplay in the default case with a mouse present, because the mouseaim CVAR was no longer what the game expected.
This misguided change seems to have originated in JFDuke but by now had propagated to all the other games as well, the code was in all 4 frontends.
This was only a crutch to let the input interface work with the original menus.
Now that the one in Blood is gone, all the conditions are no longer relevant. (Shadow Warrior never got far enough to implement this)
This was some meticulously preserved relic of bad old DOS times used to block OS facilities to close an app.
Since this has been worked around at a lower level already the variable was essentially without function but some quite bad code depended on it.