Commit Graph

10409 Commits

Author SHA1 Message Date
Mitchell Richters 355ef884c8 Menudef: Polympost -> Polymost. 2020-05-22 16:42:35 +02:00
Christoph Oelckers bad17f29e0 - made some tweaks to the anti-z-fighting code in Polymost.
It now picks the minimum of the current formula and the one from before June 2017 - the current one was causing problems with sprites in the distance so now the old one is used as an upper bound.
2020-05-22 16:27:45 +02:00
Christoph Oelckers 683672a1be - added missing game specific autoload handler. 2020-05-22 01:24:40 +02:00
Mitchell Richters 45cc95401f SW: Make game compile after upstream backports. 2020-05-21 18:47:37 +02:00
Evan Ramos 0ab81904c2 SW: Allow Strafe Left and Right to turn vehicles 2020-05-21 18:47:37 +02:00
Evan Ramos 9d11c7dfb1 SW: Add FOV support. 2020-05-21 18:47:37 +02:00
Evan Ramos edccdccfb4 SW: Fall back gracefully if map mirror tags are not fully correct 2020-05-21 18:47:37 +02:00
Evan Ramos e6dd2741f3 SW: Instrument Saveables with debug_break 2020-05-21 18:47:37 +02:00
Evan Ramos 9eefd3d892 SW: Add PanelSpriteFunc values to saveables 2020-05-21 18:47:37 +02:00
NY00123 024d4e7297 SW: Afraid that we should disable almost all kinds of SOs in multiplayer
for now, due to possible jitters. Currently leaving remote-controlled SOs.
2020-05-21 18:47:37 +02:00
NY00123 ab99b3b79d SW: Call FunctionKeys from getinput only if the latter is called
from faketimerhandler. This should fix the timing of playing an
RTS file's sound and sending the corresponding message.
2020-05-21 18:47:37 +02:00
NY00123 75c76f073a SW: Fix aiming in coop view 2020-05-21 18:47:37 +02:00
NY00123 5baba6b9f3 SW: Don't interpolate a non-remote sector object controlled
by the player. Make sure looking up/down is still smooth.
2020-05-21 18:47:37 +02:00
NY00123 bdacab366a SW: Disable interpolation of sector objects that
don't move as smooth as possible in multiplayer
2020-05-21 18:47:37 +02:00
NY00123 f3654d80e7 Store sector object interpolation data in saved game 2020-05-21 18:47:37 +02:00
NY00123 27675d9f4f Remove the preceding sprite interpolation functions, not needed anymore 2020-05-21 18:47:37 +02:00
NY00123 221172311c SW: Let's make use of interpso.*. Still need to do a few more things. 2020-05-21 18:47:37 +02:00
NY00123 2b1e32bf3d SW: Add the currently-unused interpso.* files, enabling interpolation
of sector objects as whole groups of points and sprite angles.

The following goals are intended to be achieved with this code:
- Make it easy to let the user toggle sector object interpolation.
- Interpolate the angles of sprites carried by sector objects.
- Use the right amount of samples for interpolating a sector object,
depending on the players' locations, as done in the checks within
DoSector. Unfortunately, modifying DoSector itself to
unconditionally call MoveSectorObjects(sop, synctics) technically
changes the way sectors move (in the logical sense), and was
found out to make a specifically constructed user map unbeatable.
- Make it easy to disable interpolation of a whole sector object in
case of a need. This is especially important if such an object
is controlled by a player in multiplayer, mostly since this
isn't compatible with the way player prediction is working.
2020-05-21 18:47:37 +02:00
NY00123 f6a5572775 SW: Add the currently unused InterpolateSO option.
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.
2020-05-21 18:47:37 +02:00
NY00123 890a737152 SW: Add the oangdiff field to USER struct as suggested by Hendricks,
and use it in MovePoints. This will be used for interpolating
the angles of sprites carried by SOs soon.
2020-05-21 18:47:37 +02:00
NY00123 d467ce3eb8 SW: Interpolate the player's bob_z, based on suggestion by Striker.
Using pp instead of ppp seems to work better with prediction.
2020-05-21 18:47:37 +02:00
NY00123 10e4c3e121 sw/src/draw.cpp: Import from Duke3D the Polymost shadow drawing hacks 2020-05-21 18:47:37 +02:00
NY00123 33043b3b05 sw/src/network.cpp: Fix waitforeverybody in Master/Slave
modes. This uses SVN r1135 and r1143 as a reference.
2020-05-21 18:47:37 +02:00
NY00123 dea7c83361 sw/src/network.cpp: Fix sending of messages in Master/Slave.
Thanks Dynamo for spotting the bug.
2020-05-21 18:47:37 +02:00
NY00123 63743eea67 sw/src/draw.cpp:analyzesprites: Interpolate other players' sprites, in a
similar manner to what's done in Duke3D (with the addition of the angle).

There seem to be some jitters with this, mostly in Master/Slave mode.
Decreasing PAKRATE in mmulti.cpp might also increase the frequency
of this occuring in Peer-2-Peer mode.
2020-05-21 18:47:37 +02:00
NY00123 5a6dd2224f sw/src/jsector.cpp:JS_DrawCameras: Make camera oscilation
less dependent on the frame rate.
It would probably be better to update this from the game loop side,
like in Duke3D, but it's still better than the preceding situation.
2020-05-21 18:47:37 +02:00
Mitchell Richters 471f0df69d SW: Q16.16 refinements in DoPlayerDeathFollowKiller. 2020-05-21 18:47:37 +02:00
Mitchell Richters 14273dd200 SW: Add GetDeltaQ16Angle. 2020-05-21 18:47:37 +02:00
NY00123 36e6dee64c Add PedanticQ16AngleFloor to sw/src/game.h and use it in DoPlayerTurn 2020-05-21 18:47:37 +02:00
NY00123 b84975e406 SW: Remove drive_oangvel from PLAYERstruct. We can use local variables instead. 2020-05-21 18:47:37 +02:00
NY00123 6aecd46dbc SW - Hopefully a better way to decide if getinput should call
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.
2020-05-21 18:47:37 +02:00
NY00123 e3197d206d SW: Temporarily lock angle and horiz right upon player death 2020-05-21 18:47:37 +02:00
NY00123 bfd79d8bc2 sw/src/draw.cpp:drawscreen: Don't interpolate while the game is paused 2020-05-21 18:47:37 +02:00
NY00123 656e059c86 sw/src/game.cpp: Remove unused ReloadPromptMode variable 2020-05-21 18:47:37 +02:00
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