Mitchell Richters
d665037075
- Clean out where Net_ClearFifo()
is called.
...
* We can do this from one place and achieve the same result as having it sprinkled everywhere did.
2023-03-29 09:04:38 +11:00
Mitchell Richters
96055fbc03
- Clean out all games setting gameaction = ga_level
and do it centrally.
2023-03-29 03:10:16 +11:00
Mitchell Richters
9618ba1e78
- Don't serialise player angles twice.
2023-03-28 09:15:58 +11:00
Mitchell Richters
72be2623c3
- Exhumed: Remove useless sectortype
extern pointer.
2023-03-28 08:51:51 +11:00
Mitchell Richters
c6a53265eb
- Exhumed: Misc tidy-ups.
...
* The setting of `Player::bIsFiring` needs to be done before setting a new weapon.
* Tidy up some weird reverse engineering `while (1)` loop which GDX doesn't do.
2023-03-28 08:45:14 +11:00
Mitchell Richters
42d791e7c2
- Exhumed: Fix clip calculation setup.
...
* Since game maintains its own clip capacities, we need to use them instead of the generic handler for the games that do not.
* Clean up the game-side code in `CheckClip()` to use `min()`.
* Repair issue with pistol clip calculation that was using modulo when it shouldn't. A full weapon with 300 will divide into 6 with no remainder, therefore nothing in the clip.
* Fixes #906 .
2023-03-27 22:05:35 +11:00
Mitchell Richters
79745668a6
- Exhumed: Take advantage of getWrappedIndex()
in updatePlayerInventory()
as well.
2023-03-27 18:47:30 +11:00
Mitchell Richters
1ed655e0e7
- Exhumed: Further clean up updatePlayerWeapon()
.
...
* Rename a few variables for better clarity as to what's going on.
* Add new inline to the backend `getWrappedIndex()` that properly wraps around negative values based on the supplied maximum using modulo.
* Directly set the weapon when doing the next/prev tests to avoid unnecessary tests to see whether the player has the weapon or not.
2023-03-27 18:47:05 +11:00
Mitchell Richters
ebedf46434
- Exhumed: Reset view pitch back to 0 when doing Ramses, using game's formula.
...
* Ensure's a smooth return to 0 so the player's actual pitch can be targeted towards Ramses.
* In situations where the player had their view pitch changed in the ticker, this would have never reset.
2023-03-27 18:08:56 +11:00
Mitchell Richters
0594a5cb91
- Exhumed: Properly repair height test after reviewing GDX.
...
* The code in this game is so much tidier to understand what's what...
2023-03-27 18:08:55 +11:00
Mitchell Richters
bd8b033120
- Exhumed: Logic fixes to some underwater tests following review of GDX.
...
* Necessitated a little bit of rearranging in the player ticker but the grouping of all inputs into one function makes sense.
2023-03-27 18:08:55 +11:00
Mitchell Richters
94f188c926
- Exhumed: Restore original grenade pickup code.
...
* When I read this against the generic weapon pickup code, it looked similar enough but the grenade's logic is reversed. That is, after picking up the weapon, equip the player. The generic weapon handler equips the player, then gives them ammo.
* Fixes #904 .
2023-03-27 18:08:55 +11:00
Mitchell Richters
99e23a8d24
- Exhumed: Move Player::nCurrentItem
usage into the right spot.
...
* Originally, `updatePlayerInventory()` was in the main loop and not the player ticker. Now that it's been relocated, this makes sense.
2023-03-27 18:06:35 +11:00
Mitchell Richters
d66f97e5dc
- Exhumed: Clean up weapon selection code a bit.
...
* Concentrate it all in the `updatePlayerWeapon()` function.
2023-03-27 17:08:59 +11:00
Mitchell Richters
cb3fec39df
- Exhumed: Move a line out of doPlayerMovement()
and into updatePlayerViewSector()
.
...
* It needs to come after the function it's been moved into, but its confusing why its calculating a new pos delta when there's one on the stack.
* By directly nesting it in, it's a lot clearer.
2023-03-27 08:36:04 +11:00
Mitchell Richters
d858856e06
- Exhumed: Store a pos delta on the stack in `doPlayerMovement().
...
* We need this in a few places.
* Z is inverted because pitch is negated. Previously I just swapped the operation around.
2023-03-27 08:32:52 +11:00
Mitchell Richters
4fa12a9e30
- Exhumed/SW: Make sure the pitch keys are done after the slope tilting.
...
* Pitch key code does player horizon bounding.
2023-03-27 08:28:32 +11:00
Mitchell Richters
4bf2f70d7b
- Exhumed: Remove Player::nDestVertPan
entirely.
...
* We can just pass the needed value into `doPlayerPitch()`.
* For Ramses, no need to set `nDestVertPan` to the map value, just use the map value.
* Avoids an excess `atan2()` call by way of `maphoriz()`.
2023-03-27 08:14:42 +11:00
Mitchell Richters
b5123ac69f
- Exhumed: Split pitch and yaw input again.
...
* They need to be called in different places inside of `doPlayerMovement()`.
2023-03-27 08:03:35 +11:00
Mitchell Richters
6aceb7bda3
- Exhumed: Clean up some of the repeated sector gets in doPlayerMovement()
.
2023-03-27 08:03:14 +11:00
Mitchell Richters
d45be79c24
- Exhumed: Adjust yaw adjustment for Ramses to use the same formula as pitch.
...
* Rather than just snapping the angle, the player's yaw and pitch move evenly towards Ramses.
2023-03-26 22:13:57 +11:00
Mitchell Richters
b5a9085aed
- Exhumed: Restore more accurate pitch adjustment for Ramses.
...
* Use `maphoriz(-11)` instead of some voodoo degree amount so it's clear when comparing sources.
* Don't stop interpolating while doing Ramses.
* Apply Ramses pitch amount to `nVertDestPan`, just like the original.
* Don't reset all angles when initialising Ramses, just set the yaw angle.
* Don't return player's view to center when doing Ramses, use the delta between `nDestVertPan` and the player's pitch, using same formula as original.
* Comment in how normal/non-ramses `nDestVertPan` setting should be 8x the sprite Z move delta, not 2x. I know it's not correct, but its been this way for a long time and we probably should CVAR it.
* When doing the player's death pitch, it's 40.156 degrees (horizon of 108), not 38 degrees (horizon of 100). This was a misread of mine way back when.
2023-03-26 22:13:57 +11:00
Mitchell Richters
0840e547b7
- Exhumed: Reset the player actor's pitch with the rest of the actor resets.
2023-03-26 20:12:59 +11:00
Mitchell Richters
1888b7ee9f
- Exhumed: Ensure we back up the player actor's location after doing everything and not mid-way through a reset.
2023-03-26 20:09:43 +11:00
Mitchell Richters
950f4c2c38
- Exhumed: Restore nStandHeight
global and move to Player
struct.
...
* Was dropped in 572869f502
.
* Game's crouch testing necessitates that this value be pre-cached.
* Interestingly, this value is 62.5 whereas the game's view height is 55. Change in late development to make the world feel larger?
2023-03-26 20:06:25 +11:00
Mitchell Richters
fd62f1fb68
Revert "- Exhumed: Increase quake precision in SetQuake()
."
...
This reverts commit fb9ff7d105
.
* The game relies on this being low precision. It was causing a weird tremor in the training map.
2023-03-26 19:52:55 +11:00
Mitchell Richters
71aad07913
- Exhumed: Fix backwards logic from new pitch panning refactor.
...
* From 79f7ca976b
.
* Fixes #901 .
2023-03-26 18:56:01 +11:00
Mitchell Richters
e9a5f745fc
- Duke: Ensure pitch keys are done after adding player's input.
...
* As this function includes the actor's pitch clamp, it's important its done afterwards.
* Setup is already right for all the other games.
2023-03-26 16:40:25 +11:00
Mitchell Richters
7d5ca901eb
- Exhumed: Clear all input out upon restarting the player.
...
* Stale accumulation from the last round can apply on the next tic.
2023-03-26 15:17:28 +11:00
Mitchell Richters
776c58c58a
- Duke: If we enter playerCenterView()
and put SB_CENTERVIEW()
back on, we need to null and lock input.
2023-03-26 14:36:23 +11:00
Mitchell Richters
0da2afe3d7
- Duke: Tidy up some of the pitch stuff.
...
* Remove some extern'd CVARs that didn't need externing.
* Change `player_struct::centeringView()` bool into proper method to handle the operation.
* Operation now properly unsets `SB_CENTERVIEW` if conditions aren't met instead of relying on implied behaviour from the rest of the playsim.
2023-03-26 13:35:12 +11:00
Mitchell Richters
a5a9882d9a
- Duke: Add a myriad of pitch recentering CVARs.
...
* Needs to be reworked into some kind of MP-safe flagging once we have demos/MP going. This will do for now.
* Fixes #853 .
2023-03-26 12:46:14 +11:00
Mitchell Richters
11049123b0
- Exhumed: Bring pickup code back into player.cpp
...
* We're going to tabbify everything soon anyway, might as well bring it in now.
2023-03-26 10:30:27 +11:00
Mitchell Richters
8f8809f66c
- Exhumed: Minor formatting changes to a number of player functions.
2023-03-26 10:00:06 +11:00
Mitchell Richters
76777a6567
- Exhumed: Change doPlayerActionSequence()
to do an early return instead of nested branches.
2023-03-26 10:00:06 +11:00
Mitchell Richters
dcfab3e57c
- Exhumed: Change doPlayerDeathRestart()
to do an early return instead of nested branches.
2023-03-26 10:00:06 +11:00
Mitchell Richters
b6c3753d3a
- Exhumed: Change doPlayerMovingBlocks()
to do an early return instead of nested branches.
2023-03-26 10:00:04 +11:00
Mitchell Richters
838aebdfb7
- Exhumed: Change doPlayerFloorDamage()
to do an early return instead of nested branches.
2023-03-26 09:51:26 +11:00
Mitchell Richters
8d1531ba78
- Exhumed: Change updatePlayerTarget()
to do an early return instead of nested branches.
2023-03-26 09:50:57 +11:00
Mitchell Richters
e7a0354109
- Exhumed: Fix possible workflow issue with zvel in doPlayerMovement()
.
...
* Originates from d976a6da01
.
* During change I missed the clamping of the zvel value between capturing `zz` and `zVel`.
* No observed issues, only noticed it when comparing something else but lets 100% maintain a accurate workflow.
2023-03-25 23:27:15 +11:00
Mitchell Richters
2bc6df7678
- Exhumed: Repair signedness issue with weapon change code.
...
* Never revealed itself when I was cheating to get weapons.
* Fixes #898
2023-03-25 22:05:06 +11:00
Mitchell Richters
8f748fdb2a
- Exhumed: Fix noclipping so the player can clip through anything.
...
* The `inside()` test is now only performed when noclipping is off.
2023-03-25 21:36:17 +11:00
Mitchell Richters
7410c78ce4
- Exhumed: Merge pitch/yaw functions into one to minimise spread.
2023-03-25 21:26:56 +11:00
Mitchell Richters
7d6425fa06
- Exhumed: Amend 79f7ca976b
to use algorithm to cancel view pitch when disabling cl_slopetilting
.
2023-03-25 21:26:55 +11:00
Mitchell Richters
0189936070
- Exhumed: Use player pointer in MoveWeapons()
.
2023-03-25 21:26:55 +11:00
Mitchell Richters
4e1b269c59
- Exhumed: Use player pointer in AIPlayer::Draw()
.
2023-03-25 21:26:55 +11:00
Mitchell Richters
d270099aa7
- Exhumed: Use player pointer in AIPlayer::Damage()
.
2023-03-25 21:26:55 +11:00
Mitchell Richters
f0b9937ec7
- Exhumed: General tidy-up of AIPlayer::Damage()
.
2023-03-25 21:26:55 +11:00
Mitchell Richters
c3f0edf802
- Exhumed: Use player pointer in AIPlayer::Damage()
.
2023-03-25 21:26:54 +11:00
Mitchell Richters
45be386f7f
- Exhumed: Move nTemperature[]
into Player
struct.
2023-03-25 21:26:54 +11:00
Mitchell Richters
572869f502
- Exhumed: Reorganise RestartPlayer()
so player/actor variables are grouped.
2023-03-25 21:26:54 +11:00
Mitchell Richters
b4028cb250
- Exhumed: Clean up stack pointer names in RestartPlayer()
.
2023-03-25 21:26:54 +11:00
Mitchell Richters
c79a979395
- Exhumed: Store a player pointer on the stack and use in updatePlayerVelocity()
.
2023-03-25 21:26:52 +11:00
Mitchell Richters
7cfb5d9286
- Exhumed: Removed unneeded resetting of nDestVertPan
in doPlayerFloorDamage()
.
...
* Original game code below it was just resetting it anyway.
2023-03-25 19:56:20 +11:00
Mitchell Richters
12b4f68f24
- Exhumed: Directly inline interpfrac test into gi->Render()
.
2023-03-25 19:56:19 +11:00
Christoph Oelckers
32237421c9
- Exhumed: fixed Ramses's programmatic texture
2023-03-25 09:52:31 +01:00
Mitchell Richters
f96bc3ee31
- Exhumed: Reposition bIsFiring
setting.
...
* Mistake from e5e1428062
.
2023-03-25 18:13:11 +11:00
Mitchell Richters
e34c4353f6
- Exhumed: Properly clamp off pitch in death function.
2023-03-25 17:27:33 +11:00
Mitchell Richters
025f2ec5fb
- Exhumed: Do player pitch/yaw before movement code.
2023-03-25 16:58:15 +11:00
Mitchell Richters
79f7ca976b
- Exhumed: Refactor the pitch tilting/panning code.
...
* Made it work on the player's view pitch and not their actual pitch.
* Drastically simplifies implementation and allows its use even with mouse aiming.
2023-03-25 16:52:13 +11:00
Mitchell Richters
7ecf6b26c3
- Exhumed: Might as well split out the death restart as well.
2023-03-25 16:06:19 +11:00
Mitchell Richters
7da9b2c17d
- Exhumed: Slightly re-arrange where movement actions are called.
...
* Removes jank setups like testing whether the player is dead and nulling their input. Now, the movement code just doesn't call if they're dead.
2023-03-25 15:57:23 +11:00
Mitchell Richters
e5e1428062
- Exhumed: Split off runlist signal code from player ticker.
2023-03-25 15:57:22 +11:00
Mitchell Richters
a86751a355
- Exhumed: Move all underwater code into doPlayerBreath()
.
...
* Renamed to `doPlayerUnderwater()`.
* Keeps all underwater logic together.
* More importantly, fixes an issue 🙃 .
2023-03-25 15:12:13 +11:00
Mitchell Richters
52618ede14
- Exhumed: Amend 187710e9e2
.
2023-03-25 15:10:54 +11:00
Mitchell Richters
1ed91ade54
- Exhumed: Fix dopple actor picnum updating.
2023-03-25 14:19:07 +11:00
Mitchell Richters
481c52f175
- Exhumed: Move some player code out of exhumed.cpp and into player.cpp where it should be.
2023-03-25 14:08:02 +11:00
Mitchell Richters
ae361208a0
- Exhumed: Tidy up flags in feebtag()
.
2023-03-25 13:18:46 +11:00
Mitchell Richters
66c4a753d9
- Exhumed: Move doPickupHealth()
lambda out of doPlayerPickupItems()
.
2023-03-25 12:51:18 +11:00
Mitchell Richters
d5a0dd3d80
- Exhumed: Move doPickupWeapon()
lambda out of doPlayerPickupItems()
.
2023-03-25 12:46:37 +11:00
Mitchell Richters
3854a97913
- Exhumed: Move doProcessPickup()
lambda out of doPlayerPickupItems()
.
2023-03-25 12:43:06 +11:00
Mitchell Richters
27534c433d
- Exhumed: Move lambdas out of doPlayerPickupItems()
, starting with doConsoleMessage()
.
2023-03-25 12:40:00 +11:00
Mitchell Richters
33cea4a7e1
- Exhumed: Remove offset in doPlayerItemPickups()
and just use the statnum.
2023-03-25 12:28:33 +11:00
Mitchell Richters
06e97d26aa
- Exhumed: Merge grenade pickup code into generic lambda.
2023-03-25 10:52:40 +11:00
Mitchell Richters
249d6b1b81
- Exhumed: Use an actor pointer on the stack in doPlayerCounters()
.
2023-03-25 10:08:55 +11:00
Mitchell Richters
128997c79c
- Exhumed: Clean up double getting of player actor in doPlayerBreath()
.
2023-03-25 10:06:18 +11:00
Mitchell Richters
47d25932d5
- Exhumed: Move doPlayerMask()
into doPlayerCounters()
.
2023-03-25 09:42:37 +11:00
Mitchell Richters
1ebc634ac0
- Exhumed: Consolidate two more cases in pickup code.
2023-03-25 08:44:27 +11:00
Mitchell Richters
c0d13f7619
- Exhumed: Use lookup table for health pickups in doPlayerItemPickups()
.
2023-03-25 08:43:50 +11:00
Mitchell Richters
e766c29fd5
- Exhumed: Use lookup table for weapon pickups in doPlayerItemPickups()
.
2023-03-25 08:41:45 +11:00
Mitchell Richters
be9ece4afc
- Exhumed: Use lookup table for some weapon types in doPlayerItemPickups()
.
2023-03-25 07:42:20 +11:00
Mitchell Richters
1013d41f89
- Exhumed: Use lookup table for item type in doPlayerItemPickups()
.
2023-03-25 07:32:29 +11:00
Mitchell Richters
07dda89cfd
- Exhumed: Merge all player counter code into one function.
...
* Probably a bit too much to break these down as much as I did.
2023-03-25 00:12:52 +11:00
Mitchell Richters
72af290502
- Exhumed: Pass tint values through to lambdas as args as well.
2023-03-25 00:09:17 +11:00
Mitchell Richters
da47369582
- Exhumed: Pass item, amount and sound through to lambdas as args.
2023-03-25 00:09:17 +11:00
Mitchell Richters
84223b6b04
- Exhumed: Remove call to doConsoleMessage()
from default lambda so what's going on is clearer.
2023-03-25 00:09:17 +11:00
Mitchell Richters
24b21345b1
- Exhumed: And same for health pickup process.
2023-03-25 00:09:16 +11:00
Mitchell Richters
16c2fa3abe
- Exhumed: Same for weapon pickup process.
2023-03-25 00:08:54 +11:00
Mitchell Richters
239ee20a6d
- Exhumed: Same for main pickup process.
2023-03-25 00:08:54 +11:00
Mitchell Richters
77e262ce3c
- Exhumed: Swap out flag setup in doPlayerItemPickups()
for lambdas, starting with console messages.
2023-03-25 00:08:54 +11:00
Mitchell Richters
40033c3a9d
- Exhumed: Final switch case statement cleanups in doPlayerItemPickups()
.
2023-03-25 00:08:53 +11:00
Mitchell Richters
83c7dfa7c9
- Exhumed: Clean up weapon pickups in doPlayerItemPickups()
.
2023-03-24 23:19:57 +11:00
Mitchell Richters
935450251a
- Exhumed: Clean up some more switch case statements in doPlayerItemPickups()
.
2023-03-24 23:19:14 +11:00
Mitchell Richters
b99e2fa600
- Exhumed: Clean up health pickups in doPlayerItemPickups()
.
2023-03-24 23:18:30 +11:00
Mitchell Richters
7f4b9d29b0
- Exhumed: Clean up first few switch case statements in doPlayerItemPickups()
.
2023-03-24 23:17:59 +11:00
Mitchell Richters
48803b3631
- Exhumed: Remove gotos in doPlayerItemPickups()
and use flag system like PowerslaveGDX.
2023-03-24 23:17:45 +11:00
Mitchell Richters
3f6a0661b6
- Exhumed: Default init nSound
to -1 as the code tests > -1 for validity.
2023-03-24 21:42:54 +11:00
Mitchell Richters
a7c311e291
- Exhumed: Tidy up stack variables in doPlayerItemPickups()
.
2023-03-24 21:42:40 +11:00
Mitchell Richters
154084322e
- Exhumed: Final cleanup of AIPlayer::Tick()
.
2023-03-24 21:13:42 +11:00
Mitchell Richters
650aa65533
- Exhumed: Split out player dopple actor update code.
...
* This cleans most of the player tick code. Now, onto that ghastly pickup code...
2023-03-24 21:13:42 +11:00