Commit graph

205 commits

Author SHA1 Message Date
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
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
d391e56d81 - Blood: Fix a few more issues following horizon change. Chase-cam now has proper z-pos. 2020-09-23 13:20:57 +10:00
Mitchell Richters
3d58a09aeb - Blood: Fix player's z-pos with changed horizon. 2020-09-23 08:54:19 +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
Mitchell Richters
d2501007f2 - Blood: Adapt uplifted DoPlayerHorizon() from SW to Blood.
* Horizon now standardised on 100 like the other games.
* Need to determine where/why/how the player's horizon is starting out at 0 and get it to init at 100 like the other games.
2020-09-20 16:21:36 +10:00
Mitchell Richters
c38c1cb1f1 - Blood: Re-do interpolating code in viewDrawScreen() in preparation for returning unsynchronised input.
* Changed config so `cl_interpolate` bool doesn't apply to player's overall movement. While it might be handy for debugging moving sector objects, I see no valid reason why there'd be a need to ever un-interpolate the player's position.
2020-09-20 16:20:10 +10:00
Mitchell Richters
20c73e1249 - Blood: Remove r_horizcenter and standardise horizon in game to that of the default in the backend (currently 100).
* The use of this will go when the input is re-factored to operate on the standard horizon of 100, not 0.
2020-09-20 16:20:08 +10:00
Mitchell Richters
c835d9cadc - Blood: Revert upstream unsynchronised input implementation. 2020-09-20 16:20:04 +10:00
Christoph Oelckers
8d2d36457f - consolidated the map name display on startup
Fixes #275
2020-09-08 18:28:41 +02:00
Christoph Oelckers
9d39f770d4 - reimplemented player sprite display on Blood's automap. 2020-09-06 21:15:59 +02:00
Christoph Oelckers
809f8b5d4b - hooked up the new automap framework. 2020-09-06 12:44:58 +02:00
Christoph Oelckers
d61d279168 - excised Blood's entire automap code. 2020-09-06 10:59:45 +02:00
Christoph Oelckers
8114309e89 - compat.h cleanup.
* use static_assert directly. Raze is C++17, no need for that macro shit.
* removed CONSTEXPR - I seriously fail to see the use here, many of the functions marked as CONSTEXPR cannot possibly even be constant evaluated so the declaration makes no sense. Removed most of these and replaced the valid ones with the official constexpr keyword.
* got rid of EDUKE_PREDICT_FALSE - this makes zero sense in script parsing code, at best it will save a few microseconds. Clean code wins.
* replaced Blrintf with xs_CRoundToInt. Shitty name is shitty name, even if derived from POSIX.
* replaced Bstr*casecmp with str*icmp. As these get defined in the CMake project based on actual compiler checks they are preferable here.
* removed lots of other stuff that is not needed with a minimum compiler requirement of C++17.
2020-09-04 21:24:48 +02:00
Christoph Oelckers
97f395bd72 - transitioned Blood to the new level change messaging system 2020-09-04 20:46:44 +02:00
Christoph Oelckers
b1a3080671 - migrated Exhumed to a local ticker as well.
gameclock is history - all games now run on a timer that increments once per tick under their own control and not independently of the ticker routine.
2020-09-02 21:42:12 +02:00
Christoph Oelckers
4feae913cd -Blood: merge redundant gFrameCount and gLevelTime variables, reset the timers as the first thing when loading a level.
They need to be reset when level data gets set because the current value is used as base.
It was most easily observed at the start of the first level where the grave only would open after a lengthy delay - which was the play time of the last level being played.
2020-09-02 07:47:26 +02:00
Mitchell Richters
c5636e9917 - Blood: Partially revert b8b8e7a638 in case someone really wants to run with cl_interpolate 0. 2020-09-02 14:55:44 +10:00
Mitchell Richters
b8b8e7a638 - Blood: Get synchronised input going in a testable way. This is not a complete re-factor, just enough to get it going. 2020-09-02 13:20:37 +10:00
Christoph Oelckers
7747fc7fb0 - rewrote the EndMgr in Blood to work as a screen job.
This removes the special handling for it in the main loop.
Some functions and variables in the kill and secret managers were also given more meaningful names.

Fixes #313
2020-09-01 21:27:32 +02:00
Christoph Oelckers
fda74a47b4 - use gFrameClock plus interpolation for third person view and tick the flash counter for the CTF HUD in the ticker, not the drawer.
This removes a lot of mess.
2020-09-01 20:15:34 +02:00
Christoph Oelckers
d0a3e1781e - Blood: eliminated gameclock in weapon draw code 2020-09-01 20:10:36 +02:00
Christoph Oelckers
4b45ee150f - Blood: replaced several uses of gameclock with gFrameClock
Mainly those which do not use its full precision.
Choke needs interpolation support, though.
2020-09-01 20:08:37 +02:00
Christoph Oelckers
0fa742f0ca - Blood: fixed some issues with precaching.
This code was still unaware of hardware rendering and created useless software buffers for some textures.
2020-09-01 19:59:15 +02:00
Christoph Oelckers
dfb6c0d6fa - Blood: moved the precaching code to its own file. 2020-09-01 19:39:30 +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
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
e32cd81cc7 - Unify stat fps for all games. 2020-08-30 20:24:36 +02:00
Christoph Oelckers
ffe5b114f3 - the engine starts on the new main loop and is capable of running the intros and the menu, but not the game yet. 2020-08-30 12:49:21 +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
5bfd4069ef - Blood: Cleanup some timing variables following timing uplift.
* Remove cast of int on `gFrameClock` since gFrameClock is now just an int.
* Remove unused `gFrameTicks`.
* Remove unused `gFrameRate`.
* Rename `gFrame` to `gFrameCount` so it's easier to search and distinguish from `gFrameClock` without relying on regex.
2020-08-26 20:55:46 +10:00
Mitchell Richters
76776d24d7 - All Games: Remove use of ClockTicks and replace with int. 2020-08-26 09:49:42 +10:00
Mitchell Richters
aba5c4c134 - All Games: Remove use of timerGetHiTicks(). 2020-08-26 09:49:36 +10:00
Mitchell Richters
d358c71f82 - Blood: Migrate to GZDoom time code like Duke, SW and Exhumed. 2020-08-26 09:49:23 +10:00
Christoph Oelckers
c09a5150a9 - added some predefined fullscreen modes
This is to cut down on boilerplate code because these encode the virtual screen size in the mode parameter, making it unnecessary to specify a virtual size separately.
2020-08-24 20:25:53 +02:00
Christoph Oelckers
0ee042fb60 - same procedure for Blood 2020-08-24 19:47:09 +02:00
Christoph Oelckers
41a1120033 - added a native style display mode to the notification message display.
Fixes #9
2020-08-23 22:39:53 +02:00
Christoph Oelckers
0843f5f04a - ported the final level's text screen and exported its text to the string table. 2020-08-22 18:12:19 +02:00
Christoph Oelckers
ef78e8602a - major cleanup and consolidation of the screen/hud resizing code.
This is now being handled by the backend, except for the processing of the key bindings which cannot be done yet.
2020-08-16 02:55:50 +02:00
Christoph Oelckers
3455610031 - base palette cleanup.
Avoid passing this anywhere in the client code. It should only be set right before rendering the 3D view and the only code using the base palette should be the 3D renderer and hud_drawsprite.
Also make the palette override CVARs 3D view only in debug mode.
2020-08-14 21:18:14 +02:00
Christoph Oelckers
66cb7f61a4 - fixed rendering on narrow screens with an aspect ratio less than 4:3 and removed some parts that are no longer needed. 2020-08-14 21:01:27 +02:00
Christoph Oelckers
3ba5ca46c9 - fixed font alignment in Blood 2020-08-10 21:14:42 +02:00
Mitchell Richters
db6d2e4d89 - fix cl_viewbob() for Blood.
Fixes #134.
2020-08-10 22:08:44 +10:00
Christoph Oelckers
825b286424 - removed some redundant parts in level.cpp
Let's use the underlying data directly.
2020-08-03 19:11:48 +02:00
Christoph Oelckers
5704c57fe0 - changed the byte order swappers to use ZDoom's versions
This is to reduce redundancy, plus, these are native on Windows and macOS.
2020-08-03 19:09:57 +02:00
Mitchell Richters
ae2d2c7948 - interpolate zDelta with higher precision from updated CalcSmoothRatio() function that returns a double instead of an int. 2020-08-03 09:07:19 +10:00
Mitchell Richters
61820ddef5 - interpolate bobx and boby with higher precision from updated CalcSmoothRatio() function that returns a double instead of an int. 2020-08-03 08:50:48 +10:00
Christoph Oelckers
4a049c1a4d - split sprite animation off view.cpp 2020-08-02 19:59:14 +02:00
Christoph Oelckers
e2498a53a9 - split Blood prediction code into its own file. 2020-08-02 19:43:45 +02:00