Commit graph

337 commits

Author SHA1 Message Date
Mitchell Richters
16cee1148b - Duke: Change a few ps[] to use the p alias available following changes in f4fff5ee30. 2020-09-25 00:09:31 +10:00
Christoph Oelckers
f4fff5ee30 - moved sync structure into the playerstruct for easier maintenance. 2020-09-23 18:18:23 +02:00
Mitchell Richters
470f481619 - Duke: Simplify entire camera angle setup. 2020-09-23 15:34:03 +10:00
Mitchell Richters
ac635ebd0f - Blood/RR: Replace a few playerSet*() calls with playerAdd*(). Because the setters continually set until target is reached, can cause some perceivable smoothness issues if ticker re-targets's player's angle/horizon before input code has reached target. 2020-09-22 22:50:27 +10:00
Mitchell Richters
59e4fae064 - Game input: Fix miscellaneous issues.
* Duke/RR: Fix `SB_CENTERVIEW` not clearing while `cl_syncinput 1`.
* Duke/RR: Remove superfluous call to `apply_seasick()`.
* RR: Change two calls from `playerSetAngle()` to `playerAddAngle()` Updated version of `playerSetAngle()` doesn't stop setting angle until target is reached, a bit too strict for this and compromised vehicle turning.
* `applylook()`: Remove dead flag. Was only used with Duke, no other game called the function when dead anyway. Since the input helpers are processed outside of `applylook()` now this is not needed.
* `applylook()`: Extend function with a bit of commentary.
2020-09-21 17:12:53 +10:00
Mitchell Richters
f806cdcec6 - Blood/Duke/RR/SW: Unify the player's angle/horizon helper functions. 2020-09-21 17:12:51 +10:00
Mitchell Richters
7bf1cacc7f - Blood/Duke/RR/SW: Unify the player's angle function.
* For Blood/SW, exposes `SB_LOOK_LEFT`/`SB_LOOK_RIGHT` to games, hooking up `q16look_ang` and `q16rotscrnang` within.
* For SW, use Duke & Blood's return to center function and remove `PF_TURN_180` bit.
* For RR, replace a few misused bits with some bools inside of `player_struct`.
* Since bulk of functionality is sourced from Duke (30Hz), apply proper scaling so SW speed matches (40Hz).
2020-09-21 17:12:26 +10:00
Mitchell Richters
0ab3b33a6c - Blood/Duke/RR/SW: Unify the player's horizon function.
* For Duke/SW, we continually apply `SB_CENTERVIEW` only if it was previously a toggled action, similar to Blood.
* For SW, we remove two SW-specific bits (`PF_LOCK_HORIZ` and `PF_LOOKING`) that are no longer needed.
* For Duke, we remove `return_to_center` and just use the `SB_CENTERVIEW` action bit as required.
* For `sethorizon()`, feature set and adjustment speeds are an averaged out accumulation across Duke/SW:
** GameTicRate is factored in for adjustment decisions to provide consistency for SW being the faster game.
** Adjustment amounts are half way between Duke/SW.
2020-09-20 20:01:36 +10:00
Christoph Oelckers
f5d14f826a - added the SHOOT event and fixed some issues with poor code generation for the game data accessors.
They created different code depending on the passed index, this was changed to always emit the optional parameter, even when not needed, so that the interpreter does not need to second-guess.
2020-09-17 23:06:54 +02:00
Mitchell Richters
ce82eaf899 - Duke/RR: Address weapon drawer interpolation concerns raised in #403. 2020-09-16 21:01:09 +10:00
Christoph Oelckers
03aad6559b - added a global leveltimer variable to Duke.
This timer only gets incremented by the main game ticker when the playsim is running.

This timer gets used for all playsim-related timing and animations so that these are decoupled from imprecisions in the global timer.
2020-08-31 00:33:41 +02:00
Christoph Oelckers
34104a74d8 reduce dependency of code on global gameclock variable
passing it as parameter to operateweapon*
2020-08-31 00:17:40 +02:00
Christoph Oelckers
38d10cc591 - game input works, but still no 3D scene rendered. 2020-08-30 13:04:07 +02:00
Christoph Oelckers
694444b62a - converted the remaining input bits.
Looks like it is working in all games except Blood (not that it surprises me that it's Blood again which has issues...)
2020-08-29 13:32:55 +02:00
Mitchell Richters
51a08fbaf3 - Duke: Implement WeaponSel_Alt for Duke and RR. 2020-08-29 21:27:58 +10:00
Christoph Oelckers
dc1f56e8f9 Merge remote-tracking branch 'remotes/Github_private/back_to_basics2' into Packet
# Conflicts:
#	source/core/inputstate.cpp
#	source/exhumed/src/exhumed.h
2020-08-29 01:19:48 +02:00
Christoph Oelckers
fe7f3a2f9e - handle the run key. 2020-08-29 00:57:07 +02:00
Christoph Oelckers
b9e0f493b2 - transitioned the 5 primary action keys: Open, Jump, Crouch and Fire/AltFire. 2020-08-28 23:25:08 +02:00
Christoph Oelckers
d62d2eaec7 - processed all remaining local input CCMDs and removed some bits only needed for multiplayer.
These MP bits should be reimplemented as network commands later, they only take up valuable space in the bit field.
2020-08-28 00:03:35 +02:00
Mitchell Richters
0c55c3983c - Duke: Fix potential interpolation issues for RR's shotgun observed while working on something else. 2020-08-27 22:47:18 +10:00
Mitchell Richters
65a54361b4 - Duke: Apply same fix in 3e79e7b63f for RR, accidentally missed. 2020-08-27 15:55:32 +10:00
Mitchell Richters
3e79e7b63f - Duke: Fix bug where player wasn't cracking knuckles after 777 idle tics while cl_syncinput was 1.
* Use opportunity to replace the literal constant of `777` with an enum.
2020-08-27 15:54:49 +10:00
Christoph Oelckers
10df3e094a - rework of weapon input to use common features in shared code.
This also adds stubs for all unimplemented features in the games for easier addition.
2020-08-27 00:53:35 +02:00
Christoph Oelckers
36d676ca20 - renamed ESyncBits so that the replacement can take that name later. 2020-08-26 22:39:15 +02:00
Mitchell Richters
afb09456e0 - Duke: Migrate away from using totalclock and use new game-specific gameclock with underlying timer code in common.
* Build timer still requires initialisation due to multiple `timerSetCallback()` that still need to work.

# Conflicts:
#	source/core/menu/menu.cpp
#	source/games/duke/src/game.cpp
2020-08-25 19:47:31 +02:00
Mitchell Richters
a3a7a8f6be - repeat of cf548e055e for RR. 2020-08-09 16:41:42 +10:00
Christoph Oelckers
d731bf4e57 - fixed typo in floor damage check.
This rendered the boots ineffective on lava.
Fixes #114
2020-08-07 23:30:08 +02:00
Christoph Oelckers
dfa3519ebc - stop screaming sound when landing.
Fixes #116
2020-08-07 22:20:29 +02:00
Christoph Oelckers
f8c65839f0 - fixed broken jumping.
This was a nasty, but typical case for Duke where a variable did not contain what the name said and was carried along way too much code.

Fixes #112
2020-08-07 21:59:11 +02:00
Mitchell Richters
ddd30e742c - ensure player's angle input while playing with cl_syncinput 0 is scaled appropriately when sector's lotag is ST_2_UNDERWATER. 2020-08-05 22:57:47 +10:00
Mitchell Richters
d1a68421bd - fix cl_weaponsway for Duke. 2020-08-05 20:04:14 +10:00
Mitchell Richters
03bccb3a06 - functionalise significant portions of 0ee3ab4df8. 2020-08-05 19:24:42 +10:00
Mitchell Richters
0ee3ab4df8 - revert most of e474ebc2b7 and adjust player's angle/horizon in a way that's compatible with cl_syncinput 0 and cl_syncinput 1.
Previous attempts at leveraging `applylook()` and `sethorizon()` in different spots had pros and cons, but ultimately changing where these functions were called from was a net negative and had hard to diagnose issues.

Maintaining two types of player input is considerable work. Lessons have been learned and will be beneficial when it comes time to re-doing the other games. Ideas from PR #98 for optimising RRRA vehicle experience while `cl_syncinput 0` is in use have been implemented here.
2020-08-05 17:53:41 +10:00
Mitchell Richters
2bdf5f38e5 - remove code meant to have been deleted when performing e474ebc2b7. Makes processinput_r() match processinput_d(). 2020-08-04 17:13:28 +10:00
Mitchell Richters
1556e80dd2 - apply same RR horizon workaround from e474ebc2b7 for when cl_syncinput 1 is set for angle as well. 2020-08-03 22:31:44 +10:00
Mitchell Richters
e474ebc2b7 - multiple input fixes for both games, and for both cl_syncinput 0 and cl_syncinput 1 modes.
* For RR, `processweapon_r()` was performing angle and horizon changes directly which provided a harsh experience with the default `cl_syncinput 0` mode.
* Added `angAdjust` variable to `player_struct` for use with ticrate angle adjustments.
* Renamed `horizAngleAdjust` to `horizAdjust` so that there is less confusion with the new `angAdjust` variable.
* Removed `horizSkew` variable, can just use `horizAdjust` for this.
* Replaced all calls to `addang()` and `addhoriz()` with the appropriate additions/subtractions to `angAdjust` and `horizAdjust` respectively.
* Removed now unused `addang()` and `addhoriz()` setters from `player_struct`.
* Define new function `resetinputhelpers()` to eliminate code duplication between `processinput_d()` and `processinput_r()` functions.
* Remove `p->q16ang` and `p->q16horiz` direct setting from `FinalizeInput()`.
* Change `applylook()` to accept an `fixed_t adjustment` for changing the player's angle. This can either be `input.q16avel` when `cl_syncinput` is 0, or `sync[snum].q16angvel` when `cl_syncinput` is 1.
* Change `sethorizon()` to accept an `fixed_t adjustment` for changing the player's horizon. This can either be `input.q16horz` when `cl_syncinput` is 0, or `sync[snum].q16horz` when `cl_syncinput` is 1.
* Re-work `sethorizon()` to always adjust `p->q16horiz` using the true pitch code. This closer resembles the EDuke32 implementation as per SVN 7342.
* Re-work returning to center to work off the true pitch code and always ensure that the player returns to center.
* Implement work-around for RR where we need to call `sethorizon()` before the call to `fi.doincrements()` like the original game, but also after the call to `processweapon()` to apply any angle or horizon changes due to weapon recoil, etc. We work around this by calling `sethorizon()` from within `doincrements_r()` only if `cl_syncinput` is 1 and only if `doincrements_r()` is to return 1.
2020-08-03 21:19:45 +10:00
Mitchell Richters
6ad3237b62 - backup p->kickback_pic in prep for interpolation and tidy up other weapon interpolation variables. 2020-08-03 15:06:25 +10:00
Mitchell Richters
8526bd6a17 - interpolate weapon HUD for RR and make full use of calcSinTableValue()'s double precision. 2020-08-03 11:05:41 +10:00
Mitchell Richters
3a4a224877 - interpolate p->weapon_sway. 2020-08-02 21:20:52 +02:00
Mitchell Richters
02dfa10d27 - remove redundant if statement left over from 2260c2353d. 2020-07-30 08:49:01 +10:00
Mitchell Richters
2260c2353d - re-factor interpolation backups into discrete functions for calling from multiple places.
Fixes #66.
2020-07-30 08:24:27 +10:00
Christoph Oelckers
0958bccade Disabled all adult censoring in Duke and RR.
Aside from being "authentic" the parental lock is just a stupid feature with often unwanted side effects.
2020-07-29 22:43:06 +02:00
Mitchell Richters
f49ded7962 - make cl_syncinput work for Duke.
* Current setup was broken and unusable.
* Fixed interpolation issues.
* Only call `GetInput()` at frame-rate when `cl_syncinput` is 0.
* Create `oq16look_ang` and interpolate it for enhanced smoothness.
* Always reset `horizAngleAdjust` and `horizSkew` in `processinput_d()`.
* Don't pre-scale `sb_avel` in `processinput_d()` and `processinput_r()`.
* Promote `p->angvel` from short to fixed_t.
* Don't descale `sync[snum].q16horz` in `processinput_d()` and `processinput_r()`.
* Ensure `false` bool is provided to `sethorizon()` call  in `processinput_d()` and `processinput_r()`.
* Reset `p->q16angvel` in `resetplayerstats()`.
2020-07-28 22:12:09 +10:00
Mitchell Richters
158fd46581 - change Duke's synchronized_input to CVAR cl_syncinput. 2020-07-28 21:38:28 +10:00
Christoph Oelckers
a0cc798c9c - cleaned up the sound system interface to have consistent naming and no aliases. 2020-07-25 09:32:54 +02:00
Christoph Oelckers
b9f0e35d4b - fixed the crosshair. 2020-07-24 19:43:33 +02:00
Christoph Oelckers
d16d8f0d0e - fixed issues reported by XCode 2020-07-23 17:02:59 +02:00
Christoph Oelckers
7eb158bf72 - properly tabified everything. 2020-07-20 23:21:27 +02:00
Christoph Oelckers
c16115d76c - first stage of new savegame code.
This also refactors the animateptr array into something serializable. This kind of pointer lookup is virtually unrestorable without creating platform locked savegames.
2020-07-20 20:40:29 +02:00
Christoph Oelckers
16efa87701 - started sorting variables in globals.h and removed player.h after cleaning it out. 2020-07-20 18:43:50 +02:00
Christoph Oelckers
3028b3f3fd - merged game.h into global.h and game.cpp into global.cpp.
Meaning that all global declarations are in one file now.
2020-07-20 18:43:50 +02:00
Christoph Oelckers
08909f414a - merged playerdata_t into player_struct 2020-07-20 18:43:49 +02:00
Christoph Oelckers
c3fb679992 - more header cleanup work, macros.h is gone. 2020-07-20 18:43:49 +02:00
Christoph Oelckers
ba69084aa5 - consolidated the movement block check after discovering that it wasn't handling things properly for all games. 2020-07-18 01:34:13 +02:00
Christoph Oelckers
6c2600df51 - cleanup of the main input code.
Only 8 kb code left that is clearly recognizable as coming from EDuke32.
2020-07-18 00:34:20 +02:00
Christoph Oelckers
01d3ca870d - more consolidation between old and new input paths.
This also simplifies the one_eighty handling to be closer to the original idea.
2020-07-17 11:46:23 +02:00
Christoph Oelckers
dc9c8a0e60 - consolidation of pitch code for aim mode 0. 2020-07-17 00:32:26 +02:00
Christoph Oelckers
fca4bdcafb - split out the main movement calculation out of P_PlayerInputBoat and used the original code for providing a replacement. 2020-07-16 18:58:31 +02:00
Christoph Oelckers
38751d19ac - changed all SYNCINPUT #defines into runtime checks so that both parts can be used and consolidated the 4 versions of the SeaSick code. 2020-07-16 17:59:25 +02:00
Christoph Oelckers
f530732c46 - adjustments for input 2020-07-16 15:03:09 +02:00
Christoph Oelckers
39a6ab6f0e - input update - safety commit 2020-07-15 23:44:07 +02:00
Christoph Oelckers
99161e2e4a - made ps an array of player_struct like it originally was. 2020-07-15 00:26:58 +02:00
Christoph Oelckers
915b566612 - another safety commit. 2020-07-07 17:56:20 +02:00
Christoph Oelckers
43ff87f47f - lightened player.h a bit more. 2020-07-06 23:50:14 +02:00
Christoph Oelckers
1644c1d33a - cleanup continues. 2020-07-06 23:02:41 +02:00
Christoph Oelckers
e272245537 - fixing some HUD stuff. 2020-07-06 15:48:51 +02:00
Christoph Oelckers
f2380f8829 - constant cleanup. 2020-07-06 13:26:26 +02:00
Christoph Oelckers
d13b2dc130 - got rid of the dynamic tilemap.
Most tile access is in game specific code, the remaining code only accesses 51 tiles
2020-07-03 23:56:14 +02:00
Christoph Oelckers
6be1a9a9e4 - copyright 2020-06-28 09:03:31 +02:00
Christoph Oelckers
e113851a39 OnMotorcycle etc. 2020-06-22 00:40:16 +02:00
Christoph Oelckers
603afdde87 - weapon draw code tested and old version removed.
# Conflicts:
#	source/games/duke/src/zz_player.cpp
2020-06-22 00:06:27 +02:00
Christoph Oelckers
7ec3232a3a - removed old process input code. 2020-06-21 23:46:30 +02:00
Christoph Oelckers
a966e34caa - broken palette checks fixed - the new input routine mostly works. 2020-06-21 23:46:29 +02:00
Christoph Oelckers
ed81022d71 - RRRA weapons work again. 2020-06-21 23:46:29 +02:00
Christoph Oelckers
960e656be6 - more gone 2020-06-21 23:46:29 +02:00
Christoph Oelckers
4ecee598af - P_ProcessWeapon transitioned. 2020-06-21 23:46:29 +02:00
Christoph Oelckers
244826cfa0 processinput_r 2020-06-21 23:46:28 +02:00
Christoph Oelckers
df41875aa6 - weapon code cleaned up 2020-06-21 23:46:28 +02:00
Christoph Oelckers
1c29a44d3e - use access functions to change horizon. 2020-06-21 23:46:28 +02:00
Christoph Oelckers
2085167703 - safety commit, weapon code incompletely ported. 2020-06-21 23:46:27 +02:00
Christoph Oelckers
4acc10b99e 4 more pieces 2020-06-21 23:46:27 +02:00
Christoph Oelckers
c2d9f86832 - safety commit. 2020-06-21 23:46:27 +02:00
Christoph Oelckers
dbbc5e0790 - doincrements
# Conflicts:
#	source/games/duke/src/zz_sbar.cpp
2020-06-21 23:46:26 +02:00
Christoph Oelckers
a39f6062ce - fixed new input code and delete the old one. 2020-06-21 23:28:47 +02:00
Christoph Oelckers
2e15cec17a - safety commit 2020-06-21 23:28:47 +02:00
Christoph Oelckers
990cb2acb8 -'shoot' replaced.
# Conflicts:
#	source/build/src/palette.cpp
2020-06-21 23:24:49 +02:00
Christoph Oelckers
e1c76e4c26 - safety commit.
# Conflicts:
#	source/games/duke/src/zz_sbar.cpp
2020-06-21 23:07:42 +02:00