Christoph Oelckers
cd599a7a15
- Duke: abstracted all checks for TILE_APLAYER with an isPlayer method.
2021-12-31 18:51:43 +01:00
Christoph Oelckers
5498699faf
- use DCoreActor::sector() wherever possible.
2021-12-30 16:51:56 +01:00
Mitchell Richters
225a2a39da
- Duke: Replace player_struct
noise_*
variables with a vector.
2021-12-31 00:19:33 +11:00
Mitchell Richters
1e90b0bbbe
- Duke: Replace player_struct
bobposy
with bobpos.Y
calls.
2021-12-30 23:00:44 +11:00
Mitchell Richters
034e1fd175
- Duke: Replace player_struct
bobposx
with bobpos.X
calls.
2021-12-30 23:00:44 +11:00
Mitchell Richters
0bc26e78ba
- Duke: Replace player_struct
loogiey[64]
with loogie[64].Y
calls.
2021-12-30 23:00:43 +11:00
Mitchell Richters
e196a4daa3
- Duke: Replace player_struct
loogiex[64]
with loogie[64].X
calls.
2021-12-30 23:00:43 +11:00
Mitchell Richters
2d6bc783c4
- Duke: Replace player_struct
exity
with exit.Y
calls.
2021-12-30 23:00:43 +11:00
Mitchell Richters
8d2595ea84
- Duke: Replace player_struct
exitx
with exit.X
calls.
2021-12-30 23:00:43 +11:00
Mitchell Richters
fd8c7bfa52
- Duke: Replace player_struct
poszv
with vel.Z
calls.
2021-12-30 23:00:41 +11:00
Mitchell Richters
b2023efb44
- Duke: Replace player_struct
posyv
with vel.Y
calls.
2021-12-30 23:00:41 +11:00
Mitchell Richters
31ed257f39
- Duke: Replace player_struct
posxv
with vel.X
calls.
2021-12-30 23:00:41 +11:00
Christoph Oelckers
12619671e6
- Duke/RR: added fudging to work around aiming randomization issues with the pistol when autoaim is off.
...
Solution is the same as in RedNukem/EDuke32: do one hitscan directly in aiming order and if that hits a sprite, use it as aiming target.
2021-12-30 09:58:10 +01:00
Christoph Oelckers
34f14aa4c3
- added vector variants of FindDistance2D and FindDistance3D
2021-12-30 09:58:07 +01:00
Mitchell Richters
3adf81e4f9
- Duke: Replace player_struct
oposz
with opos.Z
calls.
2021-12-30 09:57:07 +01:00
Mitchell Richters
111aa16e64
- Duke: Replace player_struct
oposy
with opos.Y
calls.
2021-12-30 09:57:07 +01:00
Mitchell Richters
0e897c29b0
- Duke: Replace player_struct
oposx
with opos.X
calls.
2021-12-30 09:57:07 +01:00
Mitchell Richters
baf78848eb
- Replace spritetypebase
z
with pos.Z
calls and eliminate spritetypebase
pos
union.
2021-12-30 09:57:06 +01:00
Mitchell Richters
cecb8dc48e
- Replace spritetypebase
y
with pos.Y
calls.
2021-12-30 09:57:05 +01:00
Mitchell Richters
33ca55023f
- Replace spritetypebase
x
with pos.X
calls.
2021-12-30 09:57:05 +01:00
Mitchell Richters
b2ab64bb62
- Capitalise vec3_t
z
variable.
2021-12-30 09:57:03 +01:00
Mitchell Richters
68e2691be7
- Capitalise vec3_t
y
variable.
2021-12-30 09:57:03 +01:00
Mitchell Richters
c549cc5276
- Capitalise vec3_t
x
variable.
2021-12-30 09:57:02 +01:00
Mitchell Richters
118ceb18ca
- Capitalise vec2_t
y
variable.
2021-12-30 09:57:02 +01:00
Mitchell Richters
3c9cd926ba
- Capitalise vec2_t
x
variable.
2021-12-30 09:57:02 +01:00
Christoph Oelckers
1240818122
- getting rid of DDukeActor::s, final part.
2021-12-30 09:57:00 +01:00
Christoph Oelckers
a982c7e590
- player.cpp + noise.cpp.
2021-12-30 09:56:58 +01:00
Christoph Oelckers
55cb5aaac6
- global search & replace of ->s-> with ->spr.
...
This is the largest part of uses of DDukeActor's 's' pointer.
2021-12-30 09:56:56 +01:00
Christoph Oelckers
2d648924e8
- the final Duke flags.
2021-12-30 09:56:49 +01:00
Christoph Oelckers
e02f4d8fd1
- randomFlip stuff.
...
To avoid casting from int to flags.
2021-12-30 09:56:49 +01:00
Christoph Oelckers
c5ae454207
- another big batch of automatic replacements.
2021-12-30 09:56:48 +01:00
Christoph Oelckers
5b65e214e0
- global search & replace of the more frequent sprite flag patterns.
2021-12-30 09:56:48 +01:00
Christoph Oelckers
b263c3ac6b
- wall and sprite flags in Duke, just simple cases.
2021-12-30 09:56:46 +01:00
Christoph Oelckers
b0e3c6b5ec
- some remaining sector flag stuff
2021-12-30 09:56:45 +01:00
Christoph Oelckers
8606045689
- Duke: made gamevars type safe and capable of managing actor pointers.
...
Also a few unrelated changes needed to make it compile again.
2021-12-26 23:09:56 +01:00
Christoph Oelckers
122a1f009d
- moved gamevar storage to player and actor objects respectively.
...
For actors this eliminates the need to for sprite indices which was the intended goal. It also properly associates the gamevars with their owners.
2021-12-26 23:09:56 +01:00
Mitchell Richters
0c6e55d1b8
- Silence all the -Wuninitialized
and -Wmaybe-uninitialized
warnings relating to HitInfo
objects passed through to functions by reference.
2021-12-26 23:09:50 +01:00
Christoph Oelckers
75b36cbd1c
- Duke: made player.i a real pointer
...
How could I overlook this one.
2021-12-26 23:09:45 +01:00
Christoph Oelckers
b7a5ea8ef6
- moved some common utilities into the backend.
2021-12-26 23:09:44 +01:00
Christoph Oelckers
4788c7ba5e
- made Collision derive from a common base class and refactored clipmove to a single engine-side entry point.
...
Done for Doom so far.
2021-12-26 23:08:57 +01:00
Christoph Oelckers
10dce7dd2d
- adapted all hitscan calls in Duke/RR.
2021-12-26 23:08:56 +01:00
Christoph Oelckers
3bd1272e08
- sectnum removal step
2021-12-25 21:28:56 +01:00
Christoph Oelckers
d1f7269ca8
replaced cursectnum with a cursector pointer
2021-12-25 21:28:56 +01:00
Christoph Oelckers
69a7b4d0bc
- final cleanup before replacement
2021-12-25 21:28:55 +01:00
Christoph Oelckers
312b1fd39f
- cursectnum first half
2021-12-25 21:28:55 +01:00
Christoph Oelckers
b1b0c5d25c
— Duke: use twoSided utility where appropriate.
2021-12-25 21:28:54 +01:00
Christoph Oelckers
cc41f4e7c6
- migrated Duke's added sector properties.
2021-12-25 21:28:48 +01:00
Christoph Oelckers
2949361c82
- Duke/RR: added null checks to all spawn() calls
2021-11-29 00:56:32 +01:00
Christoph Oelckers
baf36a321b
- inside, haskey and removed unused processmove functions.
2021-11-29 00:56:30 +01:00
Christoph Oelckers
09c2677fe7
- lots of EGS calls.
2021-11-29 00:56:29 +01:00
Christoph Oelckers
7a9e39a96b
- delete some inactive code.
2021-11-29 00:56:26 +01:00
Christoph Oelckers
caa9ef6dd3
- make access_wallnum a pointer
2021-11-29 00:56:22 +01:00
Christoph Oelckers
4823152107
- hitawall
2021-11-29 00:56:22 +01:00
Christoph Oelckers
b68c66dae6
-Duke/RR: started migrating hitscan to pointer usage.
2021-11-29 00:56:21 +01:00
Christoph Oelckers
81894fd831
- Duke: shootbloodsplat
2021-11-29 00:56:18 +01:00
Christoph Oelckers
2d91786516
- changed all sector variables being passed to pushmove to full ints
2021-11-08 23:18:40 +01:00
Christoph Oelckers
2e1ff313b0
- Duke: only use the main clipmove function and match clipmove_ex’s interface
2021-11-08 23:11:29 +01:00
Christoph Oelckers
1eeb8864a4
- Duke/RR: eliminated all uses of 'char' outside of text management
2021-11-07 16:30:55 +01:00
Christoph Oelckers
f95af3368b
- use ints in hitscan wrapper as well.
2021-11-07 16:20:59 +01:00
Christoph Oelckers
9a1c80c464
- Duke: added a wrapper for player_struct::cursectnum to directly return the sector pointer.
...
This eliminates more than 10% of the existing direct references to the sector[] array.
2021-11-06 21:59:42 +01:00
Christoph Oelckers
1c0e3d849b
- addressed the updatesector related deprecation warnings with Duke.
2021-11-06 20:46:08 +01:00
Christoph Oelckers
83fe41e71e
- made updatesector receive a 32 bit int pointer and deprecated the 16 bit variant.
2021-11-06 15:53:16 +01:00
Mitch Richters
a1570c185f
- Duke: Remove posx
/posy
/posz
variables and replace with points in the previously unionised pos
vec3_t
variable.
2021-10-31 17:52:52 +11:00
Christoph Oelckers
948f194064
- fixed warnings in Duke.
2021-10-08 19:21:29 +02:00
Christoph Oelckers
2b6bc414f5
- Duke: fixed a few places using a sprite index where a player index is needed.
2021-08-30 08:08:33 +02:00
Christoph Oelckers
f84f58e714
- ported Duke and RR status bars.
...
Compiles but not tested yet.
2021-05-15 14:27:32 +02:00
Christoph Oelckers
cb2bc7967a
- fixed the remaining warnings.
2021-05-12 21:50:01 +02:00
Mitchell Richters
93edeac791
- Clean-up of input functions.
...
* Remove unused `getincanglef()`.
* Remove unused `getincangleq16()`.
* In `PlayerHorizon` struct, clamp value when setting target in `__settarget()`, not each public `settarget()` overload.
* Rename `PlayerAngle` method `applylook()` to `applyinput()`.
* Rename `PlayerHorizon` method `sethorizon()` to `applyinput()`.
* In `PlayerHorizon::applylook()`, slightly clean return to centre code so it doesn't do math if already at 0.
* In `PlayerAngle::applylook()`, slightly clean rotscrnang/look_ang code so it doesn't do math if already at 0 and reposition where mouse input is applied so that if input is applied, the player never enters a spin.
* In `Duke3d::player_struct::apply_seasick()`, use `buildfang()` method instead of scaling float to BAM within function.
2021-04-21 20:41:04 +10:00
Christoph Oelckers
dc8b72b2ce
Merge branch 'master' into newrenderer2
...
# Conflicts:
# source/games/duke/src/actors.cpp
# source/games/duke/src/hudweapon_d.cpp
# source/games/duke/src/hudweapon_r.cpp
# source/games/duke/src/render.cpp
2021-04-15 19:34:03 +02:00
Christoph Oelckers
96d78ab9e6
- made DukeActor::s a pointer.
...
As a reference we would never be able to export this to scripting
2021-04-15 19:21:43 +02:00
Mitchell Richters
2176435831
- Duke: Replace sprite z pos numeric values with correct enum values for each game.
2021-04-15 18:02:16 +10:00
Mitchell Richters
6cebd7fca2
Merge branch 'master' into newrenderer2
2021-04-15 18:01:26 +10:00
Mitchell Richters
aeb16e390c
- Duke: Add resurrected
flag to handle resurrection via cheating or when pissing in RR.
2021-04-15 18:00:58 +10:00
Mitchell Richters
f254eeb465
- binaryangle.h: Remove lookangle
class and replace use with binangle
.
...
* Added in fca846272e
to deal with signed adjustments but its just not needed.
* Made better use of `binangle`/`fixedhoriz` class getters and setters than before as well.
2021-04-11 15:45:53 +10:00
Mitchell Richters
ba57429ac6
- Blood, Duke & SW: Create new backend chasecam function and replace game-specific versions with it.
...
* Based off SW's implementation.
2021-02-18 21:47:37 +11:00
Mitchell Richters
2abda0e27d
- All Games: Migrate each game's clock counter to backend solution.
2021-02-18 21:47:33 +11:00
Christoph Oelckers
40593b866f
- WW2GI: fixed event numbering.
...
There is a typo in the CON files that assigns EVENT_AIMUP and EVENT_AIMDOWN the same number. The source did not replicate this which caused several events to call the wrong handler.
Fixes #252
2021-01-30 23:42:44 +01:00
Mitchell Richters
b36bea7c69
- Replace scale()
calls with Scale()
from common.
2021-01-05 07:31:34 +11:00
Mitchell Richters
868aa7f07a
- Replace mulscale()
calls with MulScale()
from common.
2021-01-05 07:31:24 +11:00
Mitchell Richters
aae175f287
- Replace divscale##()
calls with MulScale()
from common.
...
* Regex for reference: divscale([0-9]+)\((.+)(\)+)
2021-01-05 07:31:20 +11:00
Mitchell Richters
2396179dfc
- Replace mulscale##()
calls with MulScale()
from common.
...
* Regex for reference: mulscale([0-9]+)\((.+)(\)+)
2021-01-05 07:31:15 +11:00
Mitchell Richters
edba971b7f
- Duke: Remove newOwner check from cef1f8275b
& cb93560a4a
that were just cancelling out each other, and clean up 2x if (p->newOwner != nullptr)
checks into one.
2021-01-03 18:51:43 +11:00
Mitchell Richters
9833c94114
- Duke: Pass the player_struct through to FinalizeInput() in line with other functions.
2021-01-02 11:04:03 +11:00
Mitchell Richters
6d12159006
- Duke/SW: Consolidate each game's slopetilting function into backend solution.
...
* Based on SW's implementation purely for its commentary, but includes a fix from Duke's.
* Allow disabling Duke's slopetilting via `cl_slopetilting` like SW.
2021-01-02 00:30:11 +11:00
Christoph Oelckers
553bb2af19
- moved 'frags' into player_struct.
...
Again for reducing the work with the script interface.
2020-11-29 14:10:03 +01:00
Christoph Oelckers
7ad0750839
- grouped all of Duke's constant per-session state in a single struct.
...
Mainly done so later the script export can be done more easily.
This also renames a few of the affected variables for clarity.
2020-11-29 13:54:58 +01:00
Christoph Oelckers
48b16d5233
- cleanup on player CVAR use.
2020-11-29 13:22:04 +01:00
Mitchell Richters
50b4d8cc99
- buildutils: Replace sintable[]
use within Duke's player.cpp with bsin()
/bcos()
.
2020-11-22 21:18:04 +01:00
Christoph Oelckers
d8e331ef0f
- changed Duke/RR palette handling to only retrieve the currently active palette right before rendering.
...
Storing this in the player_struct is pointless and a relic from having to use real hardware palette switches.
With this now just being a translation index being passed to the backend it can be cheaply retrieved right when used and nowhere else.
Also making some changes to how RRRA's psychedelic cactus handles the projection. This fixes issues with occasionally passing a bad matrix.
2020-11-05 07:31:48 +01:00
Christoph Oelckers
0eb10f0313
- newowner and related code.
2020-11-04 20:40:25 +01:00
Christoph Oelckers
d773601d81
- player.i, part 3
2020-11-04 20:39:43 +01:00
Christoph Oelckers
17737eea85
- wrapped hitscan in a variant returning an actor.
2020-11-03 20:43:38 +01:00
Christoph Oelckers
768487584e
- aim and all calling instances.
...
This also takes care of RR's chicken arrow storing an actor reference in lotag.
2020-11-03 20:42:03 +01:00
Christoph Oelckers
8268c1b538
- shootfireball, shootflamethrowerflame, shootknee
2020-11-03 20:21:53 +01:00
Christoph Oelckers
3fdeedcae7
- player.cpp is free of array references, except one that's unavoidable for now.
2020-11-03 19:25:07 +01:00
Christoph Oelckers
79f850d126
- PlayerColorChanged, hits, hitasprite.
2020-11-03 19:21:44 +01:00
Christoph Oelckers
61013af910
- fixed three crashes found when testing WW2GI.
2020-11-03 19:21:43 +01:00
Christoph Oelckers
a514910aa4
- use an actor pointer in Get/SetGameVarID's parameters to weed out the ordering screwups.
2020-11-03 19:21:43 +01:00
Christoph Oelckers
de92287d0b
- fixed the messed up parameter order of OnEvent.
...
This should serve as a textbook example why passing around indices is a very, very bad idea!
2020-11-03 19:21:42 +01:00
Christoph Oelckers
3ea6887c43
- replaced a bit more.
2020-11-03 19:21:42 +01:00
Christoph Oelckers
33f730baf3
- replaced "sprite[p->i]" globally.
2020-11-03 19:21:42 +01:00
Christoph Oelckers
861342a278
- guts_d and guts_r.
2020-11-01 11:32:34 +01:00
Christoph Oelckers
9cdaaff42b
- migrated EGS and deletesprite to new actor interface.
...
Inline wrappers for old code exist.
The backupplayer inline was moved into player.cpp because that's the only place it gets used.
2020-10-21 19:14:41 +02:00
Christoph Oelckers
e94274a543
- holoduke_on is now a pointer as well.
2020-10-21 16:31:18 +02:00
Christoph Oelckers
7c88de0b42
- made player.actorsqu a pointer and added the needed infrastructure for that.
2020-10-21 16:31:17 +02:00
Christoph Oelckers
99e3eeb19e
- split up shoot_r as well and consolidated both blood splat functions.
2020-10-21 01:03:38 +02:00
Christoph Oelckers
3d36381752
- converted all stat iterators outside sector*.cpp.
2020-10-15 01:34:28 +02:00
Christoph Oelckers
758fab1804
- replaced several sector iterators in Duke code.
2020-10-15 01:34:27 +02:00
Mitchell Richters
c08851e4c0
- Blood/Duke/RR/SW: Drop resetinputhelpers()
.
2020-10-12 14:42:43 +11:00
Mitchell Richters
9bcdeae6cd
- InputPacket: Change q16avel
to avel
, changing type from fixed_t to float.
2020-10-08 14:47:30 +11:00
Mitchell Richters
fca846272e
- gamecontrol: Initial setup of PlayerAngle
struct and deployment within Duke.
...
* Struct made up of binangle class units.
* Create signed clone of binangle for use with look_ang and rotscrnang.
* Append currently outgoing function names with `2` at the end to avoid conflict.
2020-10-07 23:13:29 +11:00
Mitchell Richters
f39939d114
- gamecontrol: Initial setup of PlayerHorizon
struct and deployment within Duke.
...
* Started with the most complicated game first.
* Struct made up of fixedhoriz class units.
* Append currently outgoing function names with `2` at the end to avoid conflict.
2020-10-07 17:12:48 +11:00
Mitchell Richters
09a05f354c
- Re-standardise horizon around 0 and not 100.
...
* Blood had this right. It makes sense that the horizon be based around as it's easier to work with.
* Removed all associated game math to deduct default horizon of 100 when doing weapon zvel etc, meaning actual horizon can just be used.
* Re-did return to center function to work on the already converted pitch. Return speed should be 1:1 with previous code.
2020-10-07 13:28:45 +11:00
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
64113f8f9c
- Blood/Duke/SW: Smooth out player's zpos adjustment while in 3rd person view.
2020-09-23 23:12:59 +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
298949ceb8
- more compat.h cleanup
...
Its elimination is getting closer. :)
2020-09-08 18:48:18 +02:00
Mitchell Richters
1354d52c05
- Major cleanup of Q16.16 utilisation within games and engine.
...
* Remove fix16.h/cpp and utilise library from m_fixed.h.
* Extend m_fixed.h with two inline functions for int to/from float operations.
* Replace fix16_floor operations with those from xs_Float.h
* Replace multiple Q16.16 conversions from 0 to just be 0.
* Replaced all found in-game bit-shifts and multiplications/divisions with inline functions from m_fixed.h
* Replaced many casts of FRACUNIT as double in SW's panel.cpp as it is converted to double by way of type promotion.
* Fixed missed precision fixes in SW's panel.cpp where some types weren't declared correctly.
* Replaced 100+ `Cos()/Sin() >> 16` operations for Blood with inline functions `CosScale16()/SinScale16()`.
2020-09-01 23:00:47 +10:00
Christoph Oelckers
e5d963c515
- refactored third person view to only access the clock in its worker function
...
Timer values in interface code are undefined, these should not access anything that changes at real time.
Also use smoothratio to do the calculation in frame time, not tic time.
2020-08-31 19:27:22 +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
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
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
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
Christoph Oelckers
7417160abd
- when closing the main menu, go directly to the full console.
...
Fixes #27
2020-08-23 20:48:48 +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
2919cdcb44
- clamp the calculated horizAngle
to -180/180 to stop overflowing if player moves the mouse stupidly quick while cl_syncinput 1
is set.
2020-08-05 19:56:49 +10:00
Mitchell Richters
03bccb3a06
- functionalise significant portions of 0ee3ab4df8
.
2020-08-05 19:24:42 +10:00
Mitchell Richters
736811e864
- properly tune sethorizon()
so that 'frominput' bool can be removed. Returning to centre function is essentially consistent between input states now.
2020-08-05 17:59:01 +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
65428a2d1a
- revert ea98978ae7
and baed75ff8a
, and do in a more compatible way with synchronised and unsychronised input.
2020-08-05 17:43:14 +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
cb93560a4a
- fix regression from e474ebc2b7
by which the player could adjust their angle on a camera while cl_syncinput 0
(default) was set.
...
* Issue doesn't occur with `cl_syncinput 1` because `processinput()` returns when p->newowner >= 0 before `applylook()` is called from within it.
* Fixes #96 .
2020-08-04 13:02:19 +10:00
Mitchell Richters
d3d9bb0823
- partially revert 19e4393a4f
by adding the player's mouse input after calculating the true pitch of p->q16horiz
.
...
* Need to add `p->horizAdjust` in with `p->q16horiz` because the values passed to that variable are the same as what would have been directly added to `p->q16horiz` in `processinput()`.
* Leaving mouse input to apply after calculating the pitch lets us take advantage of the calculated pitch's accuracy to provide consistent mouse input across the pitch's range.
2020-08-03 22:39:09 +10:00
Mitchell Richters
19e4393a4f
- add all the horizon values before converting into true pitch inside sethorizon()
.
2020-08-03 22:13:10 +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
531df48d38
- interpolate p->hard_landing
for Duke 3D.
2020-08-03 15:06:25 +10:00
Mitchell Richters
43ff42b330
- interpolate p->random_club_frame
for Duke 3D.
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
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
9f391c3e9f
- possible fix for continual rotscrnang thrashing when dead that was reported in #66 .
2020-07-29 18:57:06 +10:00
Mitchell Richters
6626323e3e
Revert "- possible fix for continual rotscrnang thrashing when dead that was reported in #66." What was I thinking?
...
This reverts commit e019939590
.
2020-07-29 05:50:19 +10:00
Mitchell Richters
e019939590
- possible fix for continual rotscrnang thrashing when dead that was reported in #66 .
2020-07-29 05:37:46 +10:00
Mitchell Richters
27b3c8e0f8
- fix interpolation for p->q16rotscrnang
. Setting p->oq16rotscrnang
in displayrooms()
(at frame rate) isn't where it should be done.
2020-07-28 22:24:30 +10: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
Mitchell Richters
ea98978ae7
- move p->wackedbyactor
chase-cam code into applylook()
for increased smoothness.
2020-07-28 12:30:09 +10:00
Mitchell Richters
baed75ff8a
- move p->actorsqu angle changes from moveplayers()
to applylook()
so that it can be applied when not running synchronous input.
...
Fixes #54 .
2020-07-28 12:21:35 +10:00
Christoph Oelckers
07a7cade70
- removed dead weaponswitch variable
2020-07-26 17:55:22 +02:00
Christoph Oelckers
5870d3d89d
- horizSkew is fixed point, dokneeattack ignored that.
...
fixes #14
2020-07-26 13:49:25 +02:00
Christoph Oelckers
c7a9b5678b
- reimplemented autoaim mode 2 (hitscan only)
2020-07-26 09:06:08 +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
Mitchell Richters
54d73ce9f8
- fix 'Quick Turn' for Duke.
2020-07-23 14:05:36 +10:00
Mitchell Richters
be0cbeed65
- ensure p->lookRight is reset to false in start checklook()
like lookLeft is.
...
Repairs issue where player never returned to centre when they pressed the look right key.
2020-07-23 13:34:47 +10:00
Mitchell Richters
77ff6f324c
- ensure rotscrnang turns right when looking right.
...
Doesn't repair issue when looking right doesn't return again, will isolate and repair.
2020-07-22 20:44:16 +10:00
Christoph Oelckers
6227f9f7fd
- optimizations for better savegame performance.
2020-07-21 21:32:38 +02:00
Christoph Oelckers
06fa1391f5
- did some cleanup on the global variables.
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
ded0edae0c
- fixed return_to_center
2020-07-18 14:30:17 +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
a0cd407632
- cleanup on pausing code.
2020-07-15 18:10:31 +02:00
Christoph Oelckers
4598cf13d7
- reverted the frags array to its original form, moved InitRRRASkies to zz_common.cpp and deleted zz_premap.cpp.
2020-07-14 21:42:46 +02:00
Christoph Oelckers
915b566612
- another safety commit.
2020-07-07 17:56:20 +02:00
Christoph Oelckers
dd45749650
- got rid of m_level_number and m_volume_number.
...
These were only needed so that G_NewGame_EnterLevel could be called without parameters. Ouch!
2020-07-07 10:17:02 +02:00
Christoph Oelckers
34874d1a21
- migrated displayrest and took the opportunity to un-fuck the palette management.
2020-07-07 04:54:12 +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
2b61b44188
- remove unused variable.
2020-07-05 08:58:13 +02:00
Christoph Oelckers
78f88e460e
- G_DoThirdPerson replaced by the original 'view'.
2020-07-04 22:44:33 +02:00
Christoph Oelckers
7f96d182b7
- palette stuff, input functions corrected.
2020-07-03 16:17:37 +02:00
Christoph Oelckers
e92ca71fe5
- shareware screens
2020-06-30 00:15:48 +02:00
Christoph Oelckers
6be1a9a9e4
- copyright
2020-06-28 09:03:31 +02:00
Christoph Oelckers
4dee181405
- still needed
2020-06-22 00:00:57 +02:00
Christoph Oelckers
df545d34eb
haskeys
2020-06-21 23:46:30 +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
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
Christoph Oelckers
9c3189475a
- renamed unprocessed files and added missing WT firefly effect.
2020-06-21 22:38:05 +02:00
Christoph Oelckers
242f78de13
- make moveactors work and RR weapon name cleanup.
...
# Conflicts:
# source/games/duke/src/sbar.cpp
2020-06-21 22:38:04 +02:00
Christoph Oelckers
51d4853375
- checkavailweapon
2020-06-21 22:36:08 +02:00
Christoph Oelckers
2cc4176ed8
- addweapon.
2020-06-21 22:36:07 +02:00
Christoph Oelckers
7493956613
- removed the dynamic weapon map indirection.
2020-06-21 22:36:07 +02:00
Christoph Oelckers
cb54a03d60
- wip
...
# Conflicts:
# source/games/duke/src/sbar.cpp
2020-06-21 22:36:07 +02:00
Christoph Oelckers
30cf62d9c2
- renamed all tile variables so that the engine can be reverted to the old constant setup instead of the mostly useless tile remapping feature.
...
If this is supposed to be made customizable it has to be done very differently.
# Conflicts:
# source/games/duke/src/game.cpp
# source/games/duke/src/sbar.cpp
2020-06-21 22:36:06 +02:00
Christoph Oelckers
bd6047a097
- started porting functions - using a simple one as the first case.
2020-06-21 22:36:05 +02:00
Christoph Oelckers
0596078978
- prepared folder for merging.
2020-06-21 22:18:12 +02:00
Christoph Oelckers
99958342a9
- prepare the branch for adding new commits
...
# Conflicts:
# source/core/gamecontrol.cpp
2020-06-21 20:59:16 +02:00
Christoph Oelckers
b8b38e075d
- moving to the right place.
2020-06-21 20:59:08 +02:00