Commit graph

1237 commits

Author SHA1 Message Date
Mitchell Richters
4c5339274d - Exhumed: Fix bad velocity zeroing from ece41ac84c. 2023-04-27 21:32:36 +10:00
Mitchell Richters
3edc1a5a5a - Exhumed: Make getSequence() return a pointer instead of a reference.
* Gets rid of the awkward `operator[]()` calls.
* Gets rid of `std::ref()` setup in gun.cpp.
* Ensures a copy isn't made if the caller accidentally leaves off an ampersand.
* Allows us to use a consistent getter for native code and VM exports.
2023-04-27 20:16:14 +10:00
Mitchell Richters
ea7fe0e0b4 - Exhumed: Add fixSeqs() and use it to patch OOB issue with skulstrt.seq. 2023-04-26 20:27:28 +10:00
Mitchell Richters
33d4809663 - Exhumed: Ensure sequence data cannot be changed via the getters. 2023-04-26 20:13:26 +10:00
Mitchell Richters
64c47b0385 - Exhumed: Slightly tune damage pushback from previous commit.
* The logic here is that the player's running/double speed velocity is scaled by 0.375 in `updatePlayerVelocity()`, so 0.1875 is half of that scale.
2023-04-25 20:07:10 +10:00
Mitchell Richters
64745dff89 - Exhumed: Allow damage pushback behind CVAR cl_exdamagepush.
* Fixes #907.
* Works in conjunction with ece41ac84c by using the player actor's velocity.
* Original game blanket reset the sprite/actor's vel each tic which cancelled this out.
* Original damage value is far, far too high. Had to scale it back by 1024 units to make it reasonable!
2023-04-25 19:55:05 +10:00
Mitchell Richters
0a6ff79f4f - Exhumed: Give runlist_CheckRadialDamage() a bit of a tidy. 2023-04-25 19:44:25 +10:00
Mitchell Richters
ece41ac84c - Exhumed: Move player's velocity back into the actor, again.
* Was done in 67c7dd65f9 but caused issues.
* Reverted in 3d6f1e1a04 to ensure the game worked as expected.
* Actual problem identified and isolated to remove this duplication.
2023-04-25 19:36:46 +10:00
Mitchell Richters
7c2bd266b9 - Exhumed: Fix incorrect distance check operator for the rat. 2023-04-25 18:39:56 +10:00
Mitchell Richters
fe356f3183 - Exhumed: Fix OOB frame with the rat.
* No idea what this does in the original source... plays the first frame of the next sequence?
2023-04-25 18:18:26 +10:00
Mitchell Richters
6004a9fb5a - Exhumed: Fix bad jump setup from c252b19e9a. 2023-04-24 23:27:02 +10:00
Mitchell Richters
11181f51f8 - Allow roll input through the packet system, giving us 6DOF for VR usage, etc. 2023-04-24 21:31:21 +10:00
Mitchell Richters
c252b19e9a - Exhumed: Hook up InputPacket::uvel to relevant code. 2023-04-24 19:06:48 +10:00
Mitchell Richters
80f2afd6a4 - Exhumed: Slightly tidy up updatePlayerWeapon(). 2023-04-24 19:06:46 +10:00
Mitchell Richters
e29726370c - Exhumed: Tidy up two if statements in AIPlayer::Damage(). 2023-04-24 19:03:04 +10:00
Mitchell Richters
eca8526c11 - Exhumed: Unlimit the SeqNames[] array. 2023-04-23 19:20:19 +10:00
Mitchell Richters
19501f3ed0 - Exhumed: Fix some typos in comments. 2023-04-23 19:19:47 +10:00
Mitchell Richters
83365a9a14 - Fix typo in menu and clean up leftover variable in Exhumed's doPlayerCameraEffects(). 2023-04-23 10:20:10 +10:00
Mitchell Richters
71d833f9ea - Make Exhumed's new view tilting features accessible for all games. 2023-04-22 19:34:53 +10:00
Mitchell Richters
faaffa0d40 - Exhumed: Change formula for cl_exviewtilting 2.
* Makes this proper strafe rolling based on the actual strafe velocity.
* Implement movement rolling as `cl_exviewtilting 3` as well.
2023-04-22 14:10:10 +10:00
Mitchell Richters
b93a2cf61b - Exhumed: Move UpdateCreepySounds() into MoveThings() so its processing time can be clocked. 2023-04-21 21:13:19 +10:00
Mitchell Richters
b958ae2340 - Exhumed: Move bobangle global into Player struct. 2023-04-21 21:13:19 +10:00
Mitchell Richters
6799322544 - Exhumed: Add view bobbing, with defaults matching intensity of Powerslave Exhumed.
* `cl_viewbob` extended from bool to int, and allowing two modes: 1 == Powerslave Exhumed bobbing, 2 == Duke 3D-style bobbing.
* Height and speed of bobbing customisable.
2023-04-21 21:13:19 +10:00
Mitchell Richters
8283895828 - Exhumed: Increase precision of Player::totalvel. 2023-04-21 21:13:18 +10:00
Mitchell Richters
e0964eef7a - Exhumed: Add toggle-able jump rebounding. 2023-04-21 21:13:18 +10:00
Mitchell Richters
8255a23833 - Exhumed: Move bTouchFloor into Player struct.
* No need to save this out either, it's reset at the start of every tic.
2023-04-21 21:13:18 +10:00
Mitchell Richters
bb19997a2c - Apply pitch/yaw input along-side the key inputs.
* Removes a lot of duplicated code.
2023-04-21 21:13:18 +10:00
Mitchell Richters
f9b9345e01 - Exhumed: Tidy up a long ternary in updatePlayerAction(). 2023-04-21 21:13:17 +10:00
Mitchell Richters
258ab0db89 - Exhumed: Initial setup of view rolling effects.
* `cl_exviewtilting 1` enables a console-like view rolling upon yaw input.
* `cl_exviewtilting 2` enables a Quake-like view rolling upon strafe input.
2023-04-21 21:13:17 +10:00
Mitchell Richters
83a371e23d - Exhumed: Remove Player::nPlayerD, since we have the player actor's opos. 2023-04-21 21:13:16 +10:00
Mitchell Richters
29bf5e4cce - Exhumed: Move updatePlayerTarget() call back to main ticker loop.
* While it's cleaner in the AIPlayer ticker, AIRa requires its target set (which is done in this func also) and I don't know whether AIPlayer is ticked before AIRa is.
2023-04-21 21:13:16 +10:00
Mitchell Richters
28893663a5 - Exhumed: Reduce length of stack arrays in addSeq(). 2023-04-21 21:13:16 +10:00
Mitchell Richters
4c49b91635 - Exhumed: Incorporate player weapon bobbing into pilot light angle. 2023-04-21 21:13:16 +10:00
Mitchell Richters
a28ca29493 - Exhumed: Repair pilot light angle that's been broken for some time.
* Interpolate it as well 🙂.
2023-04-21 21:13:15 +10:00
Mitchell Richters
dc857aec3d - Exhumed: Tidy up remainder of DrawWeapons(). 2023-04-21 21:13:15 +10:00
Mitchell Richters
d309406473 - Exhumed: Rename sequence texture getters to separate frame/chunks.
* This will make it easier to compare against the source if there's a mistake, etc.
2023-04-21 21:13:15 +10:00
Mitchell Richters
1162954b03 - Exhumed: Move AISpider's null chunk texture check into the getter.
* It's needed for the rat as well...
2023-04-21 21:13:15 +10:00
Mitchell Richters
408c71513b - Exhumed: Manually review all nAction changes and ensure nFrame is reset also. 2023-04-21 21:13:14 +10:00
Mitchell Richters
ba8bdf347e - Exhumed: Repair OOB seq access with Anubis.
* Everytime `nAction` changes, `nFrame` must be reset as well.
* One `AnubisSeq[]` index has an `nSeqId` of `-1`, this must be handled.
2023-04-21 21:13:14 +10:00
Mitchell Richters
27b9b0d2f8 - Exhumed: Reduce repeated hashtable lookups when building chunks. 2023-04-21 21:13:14 +10:00
Mitchell Richters
04eb0fe926 - Exhumed: Tidy up a few remaining globals in the sequence system. 2023-04-21 21:13:14 +10:00
Mitchell Richters
4a37453765 - Exhumed: Convert sequence system to FTextureIDs. 2023-04-21 21:13:13 +10:00
Mitchell Richters
fcfee9addc - Exhumed: Convert remainder of statusbar code and delete old system. 2023-04-21 21:13:13 +10:00
Mitchell Richters
7ca73aa562 - Exhumed: Initial setup of new statusbar sequence exports, starting with DrawStatusSequence(). 2023-04-21 21:13:12 +10:00
Mitchell Richters
95e84ba1f8 - Exhumed: Make playFrameSound() a method of SeqFrame. 2023-04-21 21:13:12 +10:00
Mitchell Richters
32cc320195 - Exhumed: Refactor new sequence setup to not use naked TArray of frames.
* Also gives access to the previously discarded sequence flags that are currently not in any kind of use.
2023-04-21 21:13:12 +10:00
Mitchell Richters
4b223ab26d - Exhumed: Tidy up DExhumedActor variables for clarity. 2023-04-21 21:13:11 +10:00
Mitchell Richters
5efc14411a - Exhumed: Use actor variables for sequences, not player ones. 2023-04-21 21:11:55 +10:00
Mitchell Richters
5c0b6858b1 - Exhumed: Remove seq_GetSeqPicnum(). 2023-04-21 21:11:55 +10:00
Mitchell Richters
b4502626fa - Exhumed: Tidy up some picnum accesses. 2023-04-21 21:11:55 +10:00
Mitchell Richters
d7161a7368 - Exhumed: Convert the weapon code. 2023-04-21 21:11:54 +10:00
Mitchell Richters
33bfe4601f - Exhumed: Convert seq_DrawPilotLightSeq(). 2023-04-21 21:11:54 +10:00
Mitchell Richters
4428ea5612 - Exhumed: Fix null chunk access for spider. 2023-04-21 21:11:54 +10:00
Mitchell Richters
d8441f712e - Exhumed: Converted out most remaining files. 2023-04-21 21:11:54 +10:00
Mitchell Richters
34e984d836 - Exhumed: Convert out bullet system to new backend hashtable. 2023-04-21 21:11:54 +10:00
Mitchell Richters
6f242b901d - Exhumed: Convert out anim system to new backend hashtable. 2023-04-21 21:11:53 +10:00
Mitchell Richters
f404708f51 - Exhumed: Initial conversion of seq_PlotSequence() to new backend hashtable. 2023-04-21 21:11:52 +10:00
Mitchell Richters
4d1466217b - Exhumed: Remove unused/unneeded union from DExhumedActor. 2023-04-21 21:10:47 +10:00
Mitchell Richters
80125e11f3 - Exhumed: Separate out seq variables within DExhumedActor. 2023-04-21 21:10:45 +10:00
Mitchell Richters
57ffb0e251 - Exhumed: Tidy up internals of seq_PlotSequence().
* Renames disassembly variables.
* Removes abusive reuse of arg variables.
2023-04-17 08:52:54 +10:00
Mitchell Richters
27c87b247c - Exhumed: Rename actionSeq members for clarity. 2023-04-17 08:52:54 +10:00
Mitchell Richters
310f615c8c - Exhumed: Initial setup of new sequence loader.
* Untested in-game but looks good in the debugger.
2023-04-17 08:52:54 +10:00
Mitchell Richters
8a0d09ce8b - Exhumed: Wrap all access to FrameSound[] array and make static. 2023-04-17 08:52:54 +10:00
Mitchell Richters
86c559ff1c - Exhumed: Wrap all access to ChunkFlag[] array and make static. 2023-04-17 08:52:54 +10:00
Mitchell Richters
01148a8c29 - Exhumed: Wrap all access to ChunkPict[] array and make static. 2023-04-17 08:52:54 +10:00
Mitchell Richters
78489dbc78 - Exhumed: Wrap all access to ChunkXpos[] and ChunkYpos[] arrays and make static. 2023-04-17 08:52:53 +10:00
Mitchell Richters
924ac25df1 - Exhumed: Wrap all access to FrameSize[] array and make static. 2023-04-17 08:52:53 +10:00
Mitchell Richters
93fe699b78 - Exhumed: Wrap all access to FrameFlag[] array and make static. 2023-04-17 08:52:53 +10:00
Mitchell Richters
3e38d01e4b - Exhumed: Wrap all access to FrameBase[] array and make static. 2023-04-17 08:52:53 +10:00
Mitchell Richters
fbddddcccc - Exhumed: Mark unused array SeqFlag[] as static and annotate it. 2023-04-17 08:52:53 +10:00
Mitchell Richters
e9c9f070eb - Exhumed: Wrap all access to SeqStatic[] array and make static. 2023-04-17 08:52:52 +10:00
Mitchell Richters
8df52e1265 - Exhumed: Wrap all access to SeqBase[] array and make static. 2023-04-17 08:52:52 +10:00
Mitchell Richters
53b7235adf - Exhumed: Wrap all access to SeqOffsets[] array and make static. 2023-04-17 08:52:52 +10:00
Mitchell Richters
4cc3664287 - Exhumed: Minor tidy-up for seq_ReadSequence() prior to start. 2023-04-17 08:52:52 +10:00
Mitchell Richters
e82981929d - Exhumed: Make overridesect global local to movespritez().
* Fixes #933.
2023-04-16 19:30:35 +10:00
Christoph Oelckers
ecd0c8c1ff - fixed a few bad scaling values. 2023-04-15 12:20:10 +02:00
Christoph Oelckers
ec9ed9588c - Exhumed: don't pass uninitialized data to the sound engine.
This was creating very noisy warnings.
2023-04-10 09:49:38 +02:00
Mitchell Richters
a68fcfc71c - Remove GameInterface::getConsoleAngles(), it's not needed anymore. 2023-04-04 07:02:39 +10:00
Mitchell Richters
8d11fef916 - Initial conversion of game input into class GameInput. 2023-04-03 18:46:36 +10:00
Mitchell Richters
2c6d8b50ea - Exhumed: Tidy up bubbles.cpp.
* Extend `BuildBubbles()` to use the actual player's angle for if we ever get multiplayer going.
2023-04-02 19:56:54 +10:00
Mitchell Richters
4c11fb1b2a - Exhumed: Tidy up remainder of anubis.cpp. 2023-04-02 19:56:54 +10:00
Mitchell Richters
754d27a8f0 - Exhumed: Tidy up AIAnubis::Tick(). 2023-04-02 19:56:54 +10:00
Mitchell Richters
8d48252f1a - Exhumed: Backup actor location in BuildAnubis(). 2023-04-02 19:56:54 +10:00
Mitchell Richters
b10b909440 - Exhumed: Rename last argument in seq_MoveSequence() to nFrame. 2023-04-02 19:56:53 +10:00
Mitchell Richters
cf63d1ab74 - Exhumed: Tidy up remainder of anims.cpp. 2023-04-02 19:56:53 +10:00
Mitchell Richters
a2bd2b17a2 - Exhumed: Tidy up BuildAnim().
* Also rename two rather unnamed args to something more appropriate.
2023-04-02 19:56:53 +10:00
Mitchell Richters
b5d4bc8573 - Exhumed: Tidy up 2d.cpp. 2023-04-02 19:56:53 +10:00
Mitchell Richters
10445635cf - Tidy up autosaving for all the games.
* There's not really any reason to need the game's world to tic once, it's already fully loaded during the `gi->NewGame()`/`gi->NextLevel()` calls.
2023-04-02 19:56:52 +10:00
Mitchell Richters
272dfa762d - Remove backend crouch toggle solution redeploy with Duke/Exhumed/Blood using new ESyncBit bit.
* I tried to make this work in 2020 but its been nothing but headache. It's something for the game to control via a flag, not the backend to determine.
* For SW, this restores its original implementation.
2023-04-02 18:32:40 +10:00
Mitchell Richters
86711f666b - Exhumed: Tidy up StartDeathSeq(). 2023-03-29 19:41:05 +11:00
Mitchell Richters
3e4dd94fe5 - Exhumed: Tidy up a bunch of small player functions. 2023-03-29 19:40:42 +11:00
Mitchell Richters
0467b02393 - Exhumed: Mark all player static arrays as const. 2023-03-29 19:39:54 +11:00
Mitchell Richters
7caec5fa69 - Clean out where inputState.ClearAllInput() is called.
* We can do this from just a few places and achieve the same result as having it sprinkled everywhere did.
2023-03-29 09:05:49 +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