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
2f05a93547
Merge branch 'Packet' into back_to_basics2
...
# Conflicts:
# source/core/gamestruct.h
# source/games/duke/src/gameloop.cpp
# source/games/duke/src/player_d.cpp
2020-08-31 00:09:56 +02:00
Mitchell Richters
1617938d4f
- Duke: When using cl_showmagamt 1
, increase pistol maximum by 4 so that when you have full ammunition, you have a full clip.
...
* On the fence about this. Lower makes the game harder, and higher could mean the difference between life and death. I do think that if we're showing amounts in the magazine, full ammo should constitute a full magazine. I think the max of 200 is an oversight from the original devs as all other games have proper defaults that reflect the magazine or cylinder capacity.
2020-08-30 20:24:38 +02:00
Christoph Oelckers
38d10cc591
- game input works, but still no 3D scene rendered.
2020-08-30 13:04:07 +02:00
Mitchell Richters
7ff73ae2f1
- Duke: Add missing World Tour flamethrower from alt weapon mode implementation completed in 51a08fbaf3
.
2020-08-29 22:30:45 +10: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
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
88a49b0d22
- Duke: Restore RPG harsh recoil behind a CVAR.
...
# Conflicts:
# source/core/gamecvars.cpp
# source/core/gamecvars.h
2020-08-26 16:45:41 +02:00
Mitchell Richters
839a7bcbe4
- subjective fix to Duke 3D's RPG harsh recoil.
2020-08-26 16:45:41 +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
e083f78f8e
- stop Duke screaming while falling if player puts the jet pack on.
...
No need to keep screaming if the player has saved themselves.
2020-08-11 15:40:02 +02:00
Mitchell Richters
cf548e055e
- clamp player sprite's xvel between 0 and 512 to stop it going into the negative with rapid posx/posy changes due to teleporting.
...
* With steroids and a controller (controllers have a slightly higher max fvel/svel than a keyboard), I could not get xvel to exceed 503.
* Fixes #123 .
2020-08-09 16:24:48 +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
Christoph Oelckers
ba3c353198
- use the correct code for the devastator in operateweapon.
...
The code present was from EDuke 2.1, I have no idea if it ever worked there. It was replaced with JFDuke's.
Fixes #104 .
2020-08-05 22:36:38 +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
9f8d50c0a1
- add horizAdjust after processing pitch adjustments and call sethorizon()
in processinput_d()
after dokneeattack()
.
...
Fixes #101 .
2020-08-05 14:23:07 +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
6bd050e201
- fix some interpolation harshness with p->weapon_pos
.
2020-08-03 15:06:25 +10:00
Mitchell Richters
7efa905a01
- fix some interpolation harshness with p->kickback_pic
.
2020-08-03 15:06:25 +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
abb23a7bd0
- fix remaining interpolation issue with weapon swaying when taking off again from a stand-still.
2020-08-02 21:20:53 +02: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
Mitchell Richters
1fc117341e
- add oq16ang
to weaponhit struct to allow interpolation of security cameras at full precision.
...
* Improves implementation from f64083bda9
.
2020-07-29 08:39:33 +10:00
Mitchell Richters
f64083bda9
- backport camera interpolation from DukeGDX. Fixes #63 .
2020-07-29 06:57:01 +10:00
Mitchell Richters
9b51e29d20
Revert "Revert "- removed duplicate application in moving down code for the jetpack.". What was I thinking?"
...
This reverts commit 3b522e4c50
.
2020-07-29 05:50:06 +10:00
Mitchell Richters
3b522e4c50
Revert "- removed duplicate application in moving down code for the jetpack.". What was I thinking?
...
This reverts commit 34b213a99f
.
2020-07-29 05:49:38 +10:00
Christoph Oelckers
34b213a99f
- removed duplicate application in moving down code for the jetpack.
...
Fixes #62
2020-07-28 21:41:37 +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
8643459cbe
- re-added EDuke32's last_quick_kick to remove flicker during the animation. Fixes #7 .
2020-07-26 10:18:55 +02: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
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
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
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
7872b701ce
- CCMD cleanup.
2020-07-04 21:36:27 +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
d6e021a63d
- statistics output
2020-07-03 21:44:57 +02:00
Christoph Oelckers
6be1a9a9e4
- copyright
2020-06-28 09:03:31 +02:00
Christoph Oelckers
99067f3bd6
- a small bit more is gone.
2020-06-23 21:12:15 +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
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
fadbe61b9c
-processinput_d
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
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
cb14555ef6
- world tour weapon code added and redundancy reduction.
2020-06-21 23:46:26 +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