NY00123
8d748c19e4
Minor SW cleanup: Have a single declaration of
...
GamePaused within game.h. Do the same with ReloadPrompt.
2020-05-21 18:47:37 +02:00
NY00123
5a0e54b63e
SW: Migrate the player's RevolveAng field to Q16.16 format.
...
This fixes truncations of q16ang in MovePlayer. One known
fixed issue is a minor micro-shaking effect, reproduced
while standing on a non-moving SO (e.g., the bus in level 1).
The latter is also related to the use of camq16ang.
Based in idea on patch from mjr4077au.
2020-05-21 18:47:37 +02:00
NY00123
ef85bc58c3
sw/src/draw.cpp:drawscreen: Use GetQ16AngleFromVect for pointing
...
at a remote-controlled SO. In case PedanticMode == FALSE, this
leads to small improvements with aiming at the car in EXAMPLE.MAP.
2020-05-21 18:47:37 +02:00
NY00123
207240f277
Add GetQ16AngleFromVect wrapper function to sw/src/game.h
2020-05-21 18:47:37 +02:00
NY00123
6fcb8f7a6a
Add gethiq16angle and the getq16angle wrapper to the engine
2020-05-21 18:47:37 +02:00
NY00123
e2a789b8cc
SW: Lock angle and horiz right after teleporting to sprite
2020-05-21 18:47:37 +02:00
NY00123
8e9130c31a
sw/src/draw.cpp:drawscreen: Removing the check that pp->sop_control
...
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.
2020-05-21 18:47:37 +02:00
NY00123
4c73c11255
SW: Ensure the player's rendering angle is in sync with a rotating
...
sector. This re-introduces the angle interpolation in drawscreen
while sector object interpolation is in use.
A side-effect of this is that looking up/down is now less smooth
while controlling a sector object (e.g., a turret).
2020-05-21 18:47:37 +02:00
NY00123
0c4deb9298
sw/src/track.cpp:MovePlayer: We also need to update pp->camq16ang here.
...
Note that this angle is currently not interpolated,
as done for the sector.
2020-05-21 18:47:37 +02:00
NY00123
fd6df8e509
sw/src/track.cpp:MovePlayer: Missed this in preceding interpolation fixes
2020-05-21 18:47:37 +02:00
NY00123
1d1aa4581b
sw/src/track.cpp: If interpolation is enabled, also cover
...
the SO's midpoint. Fixes aiming at a remote controlled SO.
2020-05-21 18:47:37 +02:00
alexey.lysiuk
2974af3178
- fixed a bunch of compilation errors with MSVC 16.6.0
2020-05-21 10:29:59 +03:00
Mitchell Richters
559539bed2
- bump save versions for SW following the massive amount of changes.
2020-05-20 14:43:03 +02:00
Mitchell Richters
979c4846a4
SW: Fixes and cleanups following backporting upstream's input changes.
2020-05-20 14:43:03 +02:00
Mitchell Richters
2c0ad0dd12
SW: Fix compilation after backporting upstream's input changes.
2020-05-20 14:43:03 +02:00
NY00123
3913a05713
Use pragma pack in sw/src/network.h instead of the locally defined
...
PACKED macro. This is more consistent with the current Duke3D codebase,
and further fixes build with older versions of MinGW GCC, in which
attribute packed is broken without specifying -mno-ms-bitfields.
2020-05-20 14:43:03 +02:00
NY00123
ff49bc2209
SW: Remove unused wfe_Clock variable
2020-05-20 14:43:03 +02:00
NY00123
b0318afbdb
Fix usage of possibly wrong address in sw/src/player.cpp:DoPlayerHorizon
2020-05-20 14:43:03 +02:00
NY00123
10a5120e40
sw/src/network.cpp: I think that it's safe to enable
...
the sync check on the slave side in Master/Slave mode.
2020-05-20 14:43:03 +02:00
NY00123
0f761cdc77
SW: This hopefully resolves issues with leaving multiplayer games
2020-05-20 14:43:03 +02:00
NY00123
7749b0f7b9
SW: Interpolate sector objects in non-demo, single player games.
...
Let's see if this is breaking anything.
2020-05-20 14:43:03 +02:00
NY00123
25be14ccc0
Another change modifying saved game format in SW:
...
Increase MAXINTERPOLATIONS from 1024 to MAXSPRITES.
2020-05-20 14:43:03 +02:00
NY00123
bf0ace3748
SW change breaking compatibility with existing saved games:
...
Remove startofdynamicinterpolations and short_startofdynamicinterpolations.
2020-05-20 14:43:03 +02:00
NY00123
18602d41c9
SW: Reset the number of interpolations on level load
2020-05-20 14:43:03 +02:00
NY00123
47ac981a3a
SW: Let's replace the macro PEDANTIC_MODE with variable PedanticMode
2020-05-20 14:43:03 +02:00
NY00123
cc4f1f21f9
Interpolation fixes for SW:
...
draw.cpp: Fix the lack of interpolation while walking on a sector
object, like the bus roof or the floor of the train in Seppuku Station.
track.cpp: Make sure the player's location and angle aren't mistakenly
interpolated while standing on a moving sector object as a consequence.
2020-05-20 14:43:03 +02:00
NY00123
eaefc2576c
SW: Rename q16avel -> q16angvel and q16horz -> q16aimvel.
...
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.
2020-05-20 14:43:03 +02:00
NY00123
952c578957
SW (DoPlayerTurn): The 180-degrees turns should be clockwise
2020-05-20 14:43:03 +02:00
NY00123
d07470ec4a
sw/src/player.cpp:PlayerAutoLook: Modify function to
...
test for PF_MOUSE_AIMING_ON only if PEDANTIC_MODE == FALSE
2020-05-20 14:43:03 +02:00
NY00123
6d9c657b11
SW: This is a better place for a slave which quits to set QuitFlag
2020-05-20 14:43:03 +02:00
NY00123
d50410f06b
SW: With the input tied to frame rate, disable aiming while the
...
player is dead, and also disable horizontal aiming while on a ladder.
2020-05-20 14:43:03 +02:00
NY00123
820e9ef5f9
SW: Use the old interpolation path in drawscreen if player is dead
2020-05-20 14:43:03 +02:00
NY00123
701b33da0d
SW: Make horiz centering a bit less immediate again
2020-05-20 14:43:03 +02:00
Mitchell Richters
cba38c5cfc
SW: Tie player input to frame rate.
2020-05-20 14:43:03 +02:00
Mitchell Richters
8b10f53450
SW: Add and use elapsedInputTicks and scaleAdjustmentToInterval
...
as one more step before tying input to frame rate.
2020-05-20 14:43:03 +02:00
NY00123
8085c8473d
SW: Add the q16ang and q16horiz fields to SW_PACKET. These
...
will be filled by faketimerhandler with the current player's
most recent camq16ang and camq16horiz values, respectively.
2020-05-20 14:43:03 +02:00
NY00123
de0ed067f5
SW: Modify DoPlayerTurn/DoPlayerHorizon to make it possible
...
for them to modify the player's camq16ang/camq16horiz field
instead of q16ang/q16horiz. Additionally, pass to them the
change in angle/horiz via a parameter, as an alternative
to direct access to the corresponding player input field.
2020-05-20 14:43:03 +02:00
NY00123
1f9e319d39
SW - First step in tying player input to frame rate:
...
Add the camq16ang and camq16horiz fields to the player struct.
With the exception of DoPlayerTurn and DoPlayerHorizon, whenever
code in player.cpp updates player's q16ang/q16horiz, also write
the updated values to camq16ang/camq16horiz. These variables'
preceding values are never used in these functions.
2020-05-20 14:43:03 +02:00
NY00123
b447feef91
sw/src/game.cpp:LoadLevel: Rename q16ang -> ang
2020-05-20 14:43:03 +02:00
NY00123
a2a1642f3d
SW: We can revert the change of siang to q16 now
2020-05-20 14:43:03 +02:00
NY00123
1d2aadd229
sw/src/draw.cpp:drawscreen: We can set the pp->si* fields just once,
...
a bit later.
2020-05-20 14:43:03 +02:00
NY00123
2d4766555c
SW: Revert commented out horiz->q16horiz renames in DSPRINTF strings
2020-05-20 14:43:03 +02:00
NY00123
a8a47a9eb0
SW: Fix typo in DoPlayerTeleportToSprite, following the migration to q16 angles
2020-05-20 14:43:03 +02:00
NY00123
4a8ad9b550
Fix multiplayer desync after the change to q16 angle and horiz.
...
Note that this includes non-portable unaligned accesses, but this
already applies to surrounding code. Just add comments for now.
2020-05-20 14:43:03 +02:00
NY00123
6faa73286f
SW: Trim q16 angle and horiz during demo playback/recording.
...
This uses the newly introduced PEDANTIC_MODE macro.
2020-05-20 14:43:03 +02:00
NY00123
8284fcba9a
sw/src/player.cpp:DoPlayerTurn: Increase turning precision
...
with q16 angle. This uses the new NORM_Q16ANGLE macro.
2020-05-20 14:43:03 +02:00
NY00123
1a46afaf27
Fix compatibility with existing demo files after the migration
...
to q16 angle and horiz. The original SW_PACKET structure,
named OLD_SW_PACKET here, is used while accessing demo files.
2020-05-20 14:43:03 +02:00
Mitchell Richters
0431f5ffed
SW: Refinements for Q16.16 implementation.
2020-05-20 14:43:03 +02:00
Mitchell Richters
a4fdabd860
SW: Use Q16.16 for angle.
2020-05-20 14:43:03 +02:00
Mitchell Richters
2bf2055c65
SW: Use Q16.16 for horiz.
2020-05-20 14:43:03 +02:00