Commit graph

6610 commits

Author SHA1 Message Date
Mitchell Richters
bd3e9b305e - Adjust signatures of input functions slightly for consistency. 2023-03-18 19:29:29 +11:00
Mitchell Richters
b8ba78cf89 - Exhumed: Use array pointers in GameInterface::Ticker() for one's sanity. 2023-03-18 19:29:28 +11:00
Mitchell Richters
42a895d666 - Exhumed: Move dead checks out of the input handler and into the ticker. 2023-03-18 19:29:15 +11:00
Mitchell Richters
1af60fb02b - Exhumed: Clear local input accumulation buffer after copying a packet, just like the other games. 2023-03-18 19:19:22 +11:00
Mitchell Richters
0cf44e42fc - Exhumed: Eliminate initsectp global. 2023-03-18 19:19:22 +11:00
Mitchell Richters
d30ce9691a - Exhumed: Eliminate initpos global. 2023-03-18 19:19:22 +11:00
Mitchell Richters
5fe4b0fdb1 - Exhumed: Eliminate inita global. 2023-03-18 19:19:21 +11:00
Mitchell Richters
401236980c - Duke: Tidy up some unnecessarily deep branches in vehicle input code. 2023-03-18 19:19:21 +11:00
Mitchell Richters
51a20211f3 - Duke: Tidy up some repeated bools in vehicle input code. 2023-03-18 19:19:21 +11:00
Mitchell Richters
37dda1aa0e - Duke: Move input bit pre-processing into hud_input().
* Really, _really_ need to do something about this `crouch_toggle` malarkey...
2023-03-18 19:19:20 +11:00
Mitchell Richters
5a6495956f - Duke: Move Quick_Kick button test into ApplyGlobalInput() as it doesn't seem to share a bit with any other game anymore. 2023-03-18 19:17:30 +11:00
Mitchell Richters
b1888a44c3 - SW: Process weapon bits within the ticker and not the input handler. 2023-03-18 19:17:30 +11:00
Mitchell Richters
a4f0a75a58 - SW: Simplify unsynchronised input setup.
* Had complicated flagging and setup for SO vehicles that never worked and doubt I'd ever get to work.
* Setup now lends itself well to a potential more generic input setup.
2023-03-18 19:17:30 +11:00
Mitchell Richters
292030b59e - Duke: Repair issues with going underwater after taking some stuff out of the global state.
* Really, need to do something about this `crouch_toggle` malarkey...
2023-03-18 19:17:28 +11:00
Mitchell Richters
b07732bae4 - Duke: Remove duplicated call to SetupGameButtons() that's done globally in RunGame(). 2023-03-18 09:15:17 +11:00
Mitchell Richters
a45890e064 - Move some Duke-specific stuff out of ApplyGlobalInput(). 2023-03-18 09:15:15 +11:00
Mitchell Richters
eed9716d86 - Move joyaxes[] array from getHidInput() directly into ControlInfo. 2023-03-17 20:58:38 +11:00
Mitchell Richters
fc069feac6 - Negate ControlInfo::dyaw to match data out of backend. 2023-03-17 20:58:13 +11:00
Mitchell Richters
446218dd7b - Get mouse/controller input by pointed variable and not copy on return. 2023-03-17 20:58:11 +11:00
Mitchell Richters
1f97e73501 - Rename ControlInfo joystick variables to names matching backend. 2023-03-17 20:16:58 +11:00
Mitchell Richters
686bec5664 - Duke: Make vehicle input functions work on floats and not doubles and FAngles.
* It's what's natively needed at the end of the day.
2023-03-17 19:40:46 +11:00
Mitchell Richters
7f79ee9801 - Exhumed: Repair missing negation affecting death sequence.
* Pitch negation strike's back!
2023-03-17 19:17:18 +11:00
Mitchell Richters
81caf74721 - Tidy up coord stat to use gi->getConsoleActor() and also print pitch. 2023-03-17 17:28:26 +11:00
Mitchell Richters
3c4b4e4483 - Tidy up warptocoords CCMD since everything is in an actor now.
* Now accepts floating point inputs.
* Restores lost pitch capability.
2023-03-17 17:28:04 +11:00
Mitchell Richters
e6cffbaefb - Duke: Remove unnecessary playrunning() test within a loop. 2023-03-17 14:41:17 +11:00
Mitchell Richters
130c5315e9 - Call PlayerAngles::resetCameraAngles() from within the player loop of each game.
* I was only thinking of the console player initially but since each game can draw the view of other players in network games, each game will need to update and reset the camera angles for all players.
2023-03-17 14:40:18 +11:00
Mitchell Richters
d329328191 - Rename PlayerAngles::RenderAngles to CameraAngles.
* Better conveys what it is and separates it from the already established `getRender*()` methods around the place.
* Sorry Simon!
2023-03-17 14:20:36 +11:00
Mitchell Richters
742a2e5c9a - Exhumed: Ensure automap uses untouched interpolated actor position.
* Using chase cam while the automap was on was drawing the player sprite incorrectly.
2023-03-17 14:11:27 +11:00
Mitchell Richters
0fca5b14a2 - SW: Ensure automap uses untouched interpolated actor position.
* Using chase cam while the automap was on was drawing the player sprite incorrectly.
2023-03-17 13:45:29 +11:00
Mitchell Richters
d6b68dec5e - Duke: Remove player_struct::resurrected flag I added in 2021 and fix issue properly.
* The check for `player_struct::dead_flag` in `FinalizeInput()` was overzealous and is not checked in the original code in this instance.
2023-03-17 12:29:37 +11:00
Christoph Oelckers
d17650f885 - removed the ValidateTarget call from HackSeqCallback.
The original function does not validate its target, it just uses undefined memory instead when this case happens.
2023-03-16 17:49:50 +01:00
Mitchell Richters
c4041affb1 - Duke: Reduce boilerplate from previous commit. 2023-03-16 22:24:34 +11:00
Mitchell Richters
9a17d33579 - Duke: Ensure spawned player actor has view height baked in up until the first getzrange() call.
* The original game spawning the player's sprite/actor would set the sprite's pos with the Z matching the player's, which had a height offset already applied.
* This baked in height offset was carried through up until the `SetActor()` call in `processinput()`, where the original game would then strip off `gs.playerheight`.
* This baked in height offset within the actor is critical on the first tic for pre-activated elevators on level spawn to function right, such as E1L2 and E2L3.
* Properly setting the player actor's Z immediately after the initial `getzrange()` call, but before other functions like `movement()`, etc further down in `processinput()` is the best spot.
* Fixes #870.
2023-03-16 22:15:11 +11:00
Mitchell Richters
8bcbc1b892 - Null the roll angle used for weapon drawing when looking left/right and with Blood's delirium for now.
* Intended to make the look left/right keys better, but doesn't work properly for weapons made up of layered parts of varying sizes.
* Fixes #879.
2023-03-16 16:34:31 +11:00
Mitchell Richters
528eb0ea9a - Blood: Fix state checks when using TNT while diving underwater.
* A mess of bloody proportions...
* Originates from d30c94c709.
* Fixes #878.
2023-03-16 15:50:52 +11:00
Mitchell Richters
cb1e4e7a34 - Exhumed: Ensure Player::items[] is signed.
* Change originates from b71c725e3e.
* Matches PCExhumed and GDX.
* Logic in game requires this variable to be signed.
* Fixes #415.
* Fixes #888.
2023-03-16 13:05:22 +11:00
Mitchell Richters
3d6f1e1a04 - Exhumed: Store dedicated player velocity in Player struct.
* Changes implementation in 67c7dd65f9.
* Cannot rely on the actor's velocity alone as parts of the game modify this, such as getting hit by lava dudes, but game nullifies this at the start of the player's tic.
2023-03-16 12:17:42 +11:00
Mitchell Richters
b42b9de2a2 Revert "- SW: Tune shadow drawing code so that it by default uses the sector's interpolated floorz when possible."
This reverts commit 3271c2011e.

* Fixes #884
* Fixes #892
2023-03-16 11:23:05 +11:00
Mitchell Richters
0d62e6befe - Exhumed: Optimise UnlinkIgnitedAnim() from fb97e3c6ca a bit.
* Bad cherry pick caused a stat iteration over the wrong stat number.
* Cleaned up commentary to reflect that we have actors and not so much sprites or an anim array anymore.
2023-03-15 22:52:14 +11:00
Mitchell Richters
07a82508fa - Blood: Fix palette of actor sprite on 2D automap.
* Fixes #846.
2023-03-15 22:22:52 +11:00
Mitchell Richters
a4bca328bc - SW: Remove Player::siang since we have the same data in 2023-03-15 19:57:45 +11:00
Mitchell Richters
7da3c62ea8 - Blood: Repair velocity scaling in ConcussSprite().
* Issue originates back from 645c606e39.
* During initial floatification, the velocity addition was changed a mulscale of 16 to 12, quadrupling the amplification.
* A lot's changed since then, but we can restore the size of the velocity by simply dividing the size value by 4x.
* Turned into a reciprocal as well to avoid division.
* Fixes #860.
2023-03-15 19:42:33 +11:00
Mitchell Richters
39624da390 - SW: Remove getViewHeightDiff() call in player sprite draw code.
* I added this when removing the player's pos vector in lieu of the sprite vector to further smooth out the sprite's Z in chase cam mode, but it just doesn't look good.
2023-03-15 19:42:33 +11:00
sirlemonhead
fb97e3c6ca PCExhumed: Fixed Ignited sprite anim issue that could cause invalid array access.
* Fixes #638.
2023-03-15 17:20:29 +11:00
Mitchell Richters
2162e51424 - Blood: Amend how QAVs process when game is paused.
* Repair of initial implementation in ebdc9c31f2.
* Fixes #883.
2023-03-14 21:45:47 +11:00
Mitchell Richters
016016b7ab - Blood: Fix max weapons slot test preventing slot 12 from being called.
* Fixes #891.
2023-03-14 21:45:46 +11:00
Mitchell Richters
a90665732c - Clean up other PlayerAngles interfaces for consistency. 2023-03-14 21:45:38 +11:00
Mitchell Richters
62561d863e - Tidy up PlayerAngles::doPitchKeys() interface by passing the whole sync packet through. 2023-03-14 21:45:37 +11:00
Mitchell Richters
9ffc65fa48 - Exhumed: Eliminate PlayerInput struct in favour of InputPacket object PlayerList::input. 2023-03-14 21:45:37 +11:00
Mitchell Richters
67c7dd65f9 - Exhumed: Remove PlayerInput::vel in favour of just using actor's velocity. 2023-03-14 21:45:37 +11:00
Mitchell Richters
73acffac2c - Exhumed: Move PlayerInput::nItem to Player struct as Player::nCurrentItem. 2023-03-14 21:45:37 +11:00
Mitchell Richters
f77b1007be - Exhumed: Remove unused PlayerInput::buttons 2023-03-14 21:45:37 +11:00
Mitchell Richters
c73ee5f848 - Exhumed: Move PlayerInput::pTarget to Player struct. 2023-03-14 21:45:37 +11:00
Mitchell Richters
18ef460a99 - Tidy up interface for PlayerAngles::doViewPitch() since we have internal access to the player's actor. 2023-03-14 21:45:36 +11:00
Christoph Oelckers
6c77d1c39e - Duke: fixed setup of purely scripted enemies,
Some band-aid is still needed for the time being.
2023-02-09 17:34:59 +01:00
Mitchell Richters
cbcc4f7729 - SW: Repair pitch setup for all weapons not accounting for the player's view pitch offset.
* Long-standing omission from back in 0e3604ac9e.
2023-02-04 17:18:47 +11:00
Simon
e28088380f Fix crash in Shadow Warrior when player dies 2023-02-04 17:05:20 +11:00
Mitchell Richters
991ef5c27f - Minor input tidy-up. 2023-02-04 17:05:18 +11:00
Christoph Oelckers
8052bc7e46 - fixed bad vector addition to incorrect variable. 2023-01-29 09:05:35 +01:00
Christoph Oelckers
4328016963 - move the remaining parts of spawninitdefault to DukeActor::Initialize.
This ensures proper execution of all code - spawninitdefault was designed to be the fallback for actors without a special case in spawninit.
2023-01-28 16:33:35 +01:00
Christoph Oelckers
38b278b12d - fixed enemy setup.
All enemies now run a native init function to reduce script-induced problems.

this required adding a NOGRAVITY flag so that the recon can use the same code as well which was the only enemy relying on custom code.
2023-01-28 16:33:15 +01:00
Christoph Oelckers
0db441accb - scriptified the native parts of the powder keg.
This was the last remaining actor with its own native ticking part.
2023-01-28 16:31:46 +01:00
Christoph Oelckers
9f01c87ccb - scriptified the native part of FireflyFlyingEffect. 2023-01-28 16:31:45 +01:00
Christoph Oelckers
9783b8c402 - scriptified World Tour's flamethrowerflame.
The first of 3 mixed native/CON items which are the last things remaining in the main thinker loops.
2023-01-28 16:31:45 +01:00
Christoph Oelckers
dce0afe499 - Blood: fixed application of push velocity. 2023-01-28 12:43:46 +01:00
Christoph Oelckers
432021b8e7 - Exhumed: avoid shade hacks with palette emulation on.
This code only makes sense with true color rendering.
2023-01-28 11:44:05 +01:00
Christoph Oelckers
fc547f5ada - Blood: fixed bad array resize. 2023-01-28 10:59:27 +01:00
Christoph Oelckers
3b8956c728 - Blood: make sure that tracking condition data is always properly initialized. 2023-01-28 10:11:34 +01:00
Christoph Oelckers
33f0d229fa - Exhumed: fixed bad return values for two HUD functions. 2023-01-21 14:37:57 +01:00
Christoph Oelckers
19a58ddeb0 - Blood: fixed velocity for ejected shell casings. 2023-01-21 14:33:42 +01:00
Christoph Oelckers
9cc7f90410 - Blood: reverted GetSpriteExtents to integer math.
The change in precision was enough to make the game misbehave.
2023-01-21 13:56:14 +01:00
Christoph Oelckers
2198782ecb - SW: make player sounds always follow the source.
Let's hope this fixes the issues with weapon sounds.
2023-01-21 12:01:32 +01:00
Christoph Oelckers
81f6899e72 - C++20 constant fixes.
Use of enums is deprecated in floating point calculations.
2023-01-21 10:34:44 +01:00
Christoph Oelckers
f6ff02c51e - Blood: fixed incorrect defaults for relative sound volume in two places 2023-01-18 06:58:37 +01:00
Christoph Oelckers
bb7f00988a - give Blood's sounds well defined names so they can be defined via SNDINFO. 2023-01-15 16:15:28 +01:00
Christoph Oelckers
841402a776 - allow setting loop points for WAV sounds or other simple formats. 2023-01-15 15:19:21 +01:00
Christoph Oelckers
f1c3a6548f - use backend pitch features for Duke instead of replicating them on the game side. 2023-01-15 13:18:54 +01:00
Christoph Oelckers
ad0bff921b - allow setting Duke's relevant sound properties through SNDINFO. 2023-01-15 11:54:24 +01:00
Christoph Oelckers
8001c4041f - Duke: fixed hitscan vector for pistol's aim check. 2023-01-14 16:48:28 +01:00
Christoph Oelckers
97f14c0e0e - Duke: fixed projectile offsetting for BOSS2 and BOSS3 2023-01-14 11:53:13 +01:00
Mitchell Richters
62c6131901 - Duke: Make screen backdrop setup the same as the other games. 2023-01-13 11:06:42 +11:00
Mitchell Richters
7f1add4786 - Exhumed: Remove unused local variable left over from 087aa7b2ee. 2023-01-13 10:34:31 +11:00
Mitchell Richters
c7d2a64af0 - Blood: Use nullAngle in one place. 2023-01-13 09:03:02 +11:00
Mitchell Richters
8ef7e0e4f3 - Duke: Only draw the screen border when the viewport isn't 100%. 2023-01-13 08:56:12 +11:00
Mitchell Richters
087aa7b2ee - Exhumed: Tidy up DrawMap() entrypoint. 2023-01-12 18:59:32 +11:00
Mitchell Richters
c606fc11da - Add call to resetForcedSyncInput() for all games.
* Blood was missing it.
* If it's pre-added to all games, it never needs thinking about.
2023-01-12 18:59:32 +11:00
Christoph Oelckers
b7799a5a3c - fix kill counter in Blood (for real this time.) 2023-01-08 20:12:28 +01:00
Christoph Oelckers
d7d4bfe04b - Blood: use a 3D unit vector to set Blood's projectile velocity. 2023-01-08 19:16:58 +01:00
Christoph Oelckers
532f994ccb - RR: stop the bowling pins' tumbling animation when they come to a rest.
Fixes an original RR bug.
2023-01-08 18:46:42 +01:00
Christoph Oelckers
ff33dd7188 - Duke: fixed bad surface check.
Surfaces are not bit flags, they are values.
2023-01-08 18:32:38 +01:00
Mitchell Richters
4f8909db96 - SW: Don't interpolate the player's sprite in InterpSectorSprites(), it's interpolated elsewhere.
* Fixes #845.
2023-01-08 23:25:45 +11:00
Mitchell Richters
3271c2011e - SW: Tune shadow drawing code so that it by default uses the sector's interpolated floorz when possible.
* Partially addresses #845.
2023-01-08 23:03:59 +11:00
Christoph Oelckers
7262184d53 - SW: account for invalid player actors being passed to the sound engine. 2023-01-08 12:41:34 +01:00
Mitchell Richters
1f489d5dbe - SW: Don't back up the actor's Z after changing it in KeepActorOnFloor().
* This seems completely wrong and kills Z interpolation on slopes, vators, etc.
* Thanks Graf 😁
* Fixes #844.
* Partially addresses #845.
2023-01-08 22:24:17 +11:00
Christoph Oelckers
1e3a285534 - Duke: fixed access card activation delay. 2023-01-08 10:34:14 +01:00
Mitchell Richters
165afbbfa9 - SW: Restore lost SetAngleFromChange(actor) call from previous commit. 2023-01-07 22:49:22 +11:00
Christoph Oelckers
ae6af08cf1 - SW: cleaned up SlopeBounce and fixed some bad math. 2023-01-07 12:23:29 +01:00
Christoph Oelckers
2e35d6a6a8 - Exhumed: account for rounding errors in MoveSectorSprites
The formula here left no margin for error and minor rounding errors are inevitable with this code.
2023-01-07 10:45:15 +01:00
Christoph Oelckers
7cf13ed158 - fixed bad angle math in cl_showweapon handler. 2023-01-06 17:22:21 +01:00
Mitchell Richters
9a27cf025f - Duke: Fix bad setup for stopping Duke's scream when putting the jetpack on. 2023-01-06 22:17:14 +11:00