Commit graph

161 commits

Author SHA1 Message Date
Mitchell Richters
c823e33bb3 - Duke/RR: Fix remaining issues with drug mode.
* Primary issue was call to `renderSetAspect()` within `setdrugmode()` wasn't mulscaling with `viewingrange`.
* Changed `setdrugmode()` to `getdrugmode()` to return `p->drug_aspect`. This is so `renderSetAspect()` needs to only be called from one place only.
2020-11-06 20:52:43 +11:00
Christoph Oelckers
977223287e - cap the frame rate of RRRA's cactus drug mode.
This was running at full render speed.
2020-11-05 07:31:48 +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
083454986b - made camsprite an actor variable. 2020-11-04 20:40:26 +01:00
Christoph Oelckers
0eb10f0313 - newowner and related code. 2020-11-04 20:40:25 +01:00
Christoph Oelckers
d0db810ab0 - ud.camerasprite -> actor. 2020-11-04 20:40:08 +01:00
Christoph Oelckers
770897b8b9 - player.i, part 1 2020-11-04 20:39:42 +01:00
Christoph Oelckers
7c6ea9cff7 - activatebysector. 2020-11-04 19:55:17 +01:00
Christoph Oelckers
7aca51a6c4 - 6 more loops. 2020-11-04 19:55:17 +01:00
Christoph Oelckers
4d4cb2da9b - handle the cheap-ass ROR code. 2020-11-04 19:55:17 +01:00
Christoph Oelckers
773aa9976d - fixed compilation of release build. 2020-11-04 07:01:25 +01:00
Christoph Oelckers
33f730baf3 - replaced "sprite[p->i]" globally. 2020-11-03 19:21:42 +01:00
Christoph Oelckers
3d36381752 - converted all stat iterators outside sector*.cpp. 2020-10-15 01:34:28 +02:00
Christoph Oelckers
760a557f73 - converted the remaining sector iterators in Duke. 2020-10-15 01:34:27 +02:00
Mitchell Richters
6ecbb2587e - Duke: Fix z position when on certain cameras following changes in 09a05f354c. 2020-10-10 16:17:02 +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
e2691d4184 - Duke: Clean up a few missed things during f39939d114. 2020-10-07 18:34:52 +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
Christoph Oelckers
ddc968f607 - disable palette emulation when map global fog is active.
This doesn't work well together and is pointless anyway as everything needs to be rendered at full brightness.
Fixes #99
2020-10-03 18:04:07 +02:00
Mitchell Richters
4ff3810711 - Blood/Duke/RR/SW: Improvements to 3rd person viewing by modifying the rendered player's posz so the camera is looking further above the camera sprite as EDuke32 does. Blood just enables the crosshair when using 3rd person view. 2020-09-25 17:52:00 +10: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
470f481619 - Duke: Simplify entire camera angle setup. 2020-09-23 15:34:03 +10:00
Mitchell Richters
88608e0682 - Duke: Interpolate camera sprite angle in animatecamsprite(). Fixes a "fixme". 2020-09-23 14:42:33 +10:00
Mitchell Richters
6570366a97 - Duke: Fix camera interpolations following uplift in 9615308fb3. 2020-09-09 20:46:17 +02:00
Christoph Oelckers
9615308fb3 - Duke: fixed camera views glitching when changing their targets.
A nearly typical problem of this code. Not all relevant properties of the camera target were changed at once - there was a two frame discrepancy in which the camera pointed in some undefined direction after the change.

Fixes #15
2020-09-08 23:47:30 +02:00
Christoph Oelckers
18b39fd952 - first stage of generic automap code.
Lines and textures get rendered, not all colors are correct - sprites yet to do...
2020-09-06 20:49:43 +02:00
Christoph Oelckers
dc0968bf61 - fixed fog on RRRA E2L1
Fixes #183
2020-09-05 23:20:48 +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
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
847fa48724 - cleaned out the remaining parts of baselayer.h
In particular this means to remove the option to disable widescreen aspect ratios. The way this was handled makes no sense with the current render backend.

The aspect ratio code will have to be redone entirely to properly obey the backend's settings.
2020-08-28 09:06:49 +02:00
Mitchell Richters
c5f523fb3c - Duke: Make a bit more use of the calculated smooth ratio. 2020-08-25 19:48:52 +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
7859a29e95 - use global variables to track automap state
So far implemented in Duke/RR.
2020-08-24 19:31:43 +02:00
Christoph Oelckers
70bc99dba7 - Duke: draw the screen border after all the content it's supposed to mask. 2020-08-19 22:16:57 +02:00
Mitchell Richters
47dbc46213 - fixed the interpolation issues while on a crane.
* Partially addresses issues discussed in #105 and #106.
2020-08-06 15:39:45 +10:00
Mitchell Richters
1cf857e788 - create an enum for MaxSmoothRatio and replace multiple hard-coded uses of '65536' constant. 2020-08-02 20:57:08 +02: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
843cc94b6f - readability improvements for all the long-winded interpolation code. 2020-07-29 07:10:28 +10:00
Mitchell Richters
f64083bda9 - backport camera interpolation from DukeGDX. Fixes #63. 2020-07-29 06:57:01 +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
9fe3af370b - call renderSetRollAngle() with full precision for Duke. 2020-07-25 15:29:10 +10:00
Christoph Oelckers
945dbc9f7e Use type safe angle and horizon classes for the render interface
These need to be robust and not allow implicit conversions.
2020-07-23 17:03:11 +02:00
Christoph Oelckers
902fbf6f5d - got rid of MODE_TYPE since this will be handled in the backend in the future. 2020-07-21 22:59:24 +02:00
Christoph Oelckers
61f5247b71 -let's hope this will solve the pausing problem for good.
The checks for game pause were totally inconsistent, so now there is a utility function that tells whether the game is supposed to run or not.
pause can also take 3 values now - 0 for no pause, 1 for pause from opening the menu or console or 2 for hitting the pause button.
2020-07-21 22:46:26 +02:00
Christoph Oelckers
ba7997b611 - implemented most of the savegame code and deleted the old one. 2020-07-20 23:07:44 +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
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
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
7f3c0ef16c - safety commit 2020-07-07 09:39:33 +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
43ff87f47f - lightened player.h a bit more. 2020-07-06 23:50:14 +02:00
Christoph Oelckers
83bcfcfd0c - Big cleanup. 2020-07-06 22:53:20 +02:00
Christoph Oelckers
5d93e946c2 - moved all prediction code into a separate (inactive) source file. 2020-07-06 11:39:39 +02:00
Christoph Oelckers
c6b619214f - cleanup of viewborder code.
The view border will now only be rendered in one place - inside displayrooms. None of the 2D content still depends on what it is set to.
2020-07-06 00:15:22 +02:00
Christoph Oelckers
90d5d7ba75 . ugh. 2020-07-05 21:24:55 +02:00
Renamed from source/games/duke/src/ror.cpp (Browse further)