Commit graph

13763 commits

Author SHA1 Message Date
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
892dde030f - Tidy up nested branch in calcChaseCamPos(). 2023-03-27 20:43:55 +11:00
Mitchell Richters
6c2717fcde - Avoid testing if we're synchronising input twice in getInput(). 2023-03-27 20:01:56 +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
Christoph Oelckers
b6da4ecddf - backend update from GZDoom. 2023-03-26 11:45:25 +02: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
0387282e37 - Fix two particularly loud warnings from GCC builds.
* `warning: type qualifiers ignored on function return type`.
2023-03-26 15:35:33 +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
Christoph Oelckers
8503f34eb5 - fix error message crash in SNDINFO parser. 2023-03-25 12:24:11 +01: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
Christoph Oelckers
c6054595d0 - fixed lookup table generation for foggy fades.
ColorMatcher.Pick is not correct here, fortunately we do not need this for fog setup as it never uses the lookup so just do a normal copy of the first (fullbright) table.
2023-03-25 11:42:50 +01: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