Commit Graph

5990 Commits

Author SHA1 Message Date
Christoph Oelckers d947cc4765 - also took out the zoom variable so that no automap data remains in the playsim code. 2020-09-06 10:22:05 +02:00
Christoph Oelckers c1a995822d - took all automap related code out of Duke's game module. 2020-09-06 10:08:47 +02:00
Christoph Oelckers 07ea2ef350 - fixed Ramses head animation.
This now uses the DoSpiritHead variant from PowerslaveGDX because I was unable to determine where in that cryptic code something went wrong. The GDX version looks a lot more cleaned up by comparison.
Fixes #332
2020-09-06 09:48:26 +02:00
Christoph Oelckers 0b399fb384 - Exhumed: fixed time values for Ramses text scroll. 2020-09-06 09:10:45 +02:00
Mitchell Richters 72771aeb40 - Fix broken `krand()` follow changes in 1354d52c05 due to truncation occuring from `FixedToInt()` inline function.
Very very sorry... :'(
Fixes #321.
2020-09-06 16:37:04 +10:00
Christoph Oelckers d6b80bda52 - force the renderer to use radial fog.
Plane-distance based fog does not work with Polymost's projection settings - the distance value appears to be completely off and useless.
Fixes #243
2020-09-06 00:19:38 +02:00
Christoph Oelckers dc0968bf61 - fixed fog on RRRA E2L1
Fixes #183
2020-09-05 23:20:48 +02:00
Christoph Oelckers ac0eb92367 - fixed timer screwups in Exhumed.
The leveltime ticker only runs at 30 fps so all places where it replaces totalclock need to multiply it by 4.
2020-09-05 22:41:02 +02:00
Christoph Oelckers 7dbae8b8f4 - enabled autosaves.
Fixes #55
This only creates them but does not auto-resume from them.
2020-09-05 22:39:27 +02:00
Christoph Oelckers 45882a02cc - fix WT level name display. 2020-09-05 22:14:00 +02:00
Christoph Oelckers 8b2302ec67 - backslash eradication in sound definitions.
World Tour does this badly, even using double backslashes.
2020-09-05 22:01:19 +02:00
Christoph Oelckers d5b7935ca1 - fixed the CON parser to treat tabs as whitespace.
Fixes #287.

World Tour starts now but still has issues.
2020-09-05 21:53:48 +02:00
Christoph Oelckers 36b9ac54b7 - added a parser for World Tour's language files. 2020-09-05 21:33:04 +02:00
Christoph Oelckers 8dfb7967e2 - use a more precise timer for Exhumed's text scroller. 2020-09-05 20:31:45 +02:00
Christoph Oelckers a7b198d7ee - Stop music when ending a level, or when going back to the menu in Blood. Also play the sound on Blood's summary screen as an UI sound.
Fixes #349
2020-09-05 19:20:25 +02:00
Christoph Oelckers b4dd006a40 - debug output for investigating Exhumed text crawl. 2020-09-05 18:41:40 +02:00
Christoph Oelckers f36ac1dc90 - fixed issues with console on top of intermissions not appearing. 2020-09-05 18:41:18 +02:00
Christoph Oelckers 443ddf670b - let the ANM player wait until the sound has finished if it has reached the last frame before the sound ends.
In Shadow Warrior there's a few where the sound plays a bit longer than the video.
Fixes #341
2020-09-05 18:14:50 +02:00
Christoph Oelckers 607d30ef8e - fixed broken end of level timer in Duke.
Fixes #342
2020-09-05 17:56:35 +02:00
Christoph Oelckers 55c7c56709 - fixed bad sound check in Duke's E3 ending. 2020-09-05 17:56:09 +02:00
Christoph Oelckers 27acd430aa - reset the screen job clock when advancing.
Fixes #347
2020-09-05 17:37:37 +02:00
Christoph Oelckers fa50cde93f - fixed skill selection in Duke.
Screw these old shadowing menu variables. Well, the one for skill is gone now.
Fixes #344
2020-09-05 16:31:01 +02:00
Christoph Oelckers 9af093b818 - fixed screen job timer when paused
Fixes #343
2020-09-05 16:21:53 +02:00
Christoph Oelckers e0b4dde3cd - fixed: A screen job that fades out was not rendering its final (black) frame which could result in visual glitches.
Fixes #320
2020-09-05 15:59:32 +02:00
Christoph Oelckers c1786001b2 - route all game state changes through game actions.
This is to avoid problems with the main loop not calling Ticker and Render in sync.
2020-09-05 15:43:34 +02:00
Christoph Oelckers 7a5dca7d5d - renamed startgame CCMD to levelstart. 2020-09-05 14:02:07 +02:00
Christoph Oelckers 32ec9ff369 - consolidated crosshair drawing and added ZDoom's crosshair code.
For Exhumed this is the default, for the other games it is an option.
Fixes #269.
2020-09-05 13:57:26 +02:00
Christoph Oelckers 0263d8eed0 - Exhumed: Don't waste health powerup if fully healed.
Fixes #309
2020-09-05 12:29:09 +02:00
Christoph Oelckers 04dd939d65 - Exhumed: don't clear all button state when dead.
This makes it impossible to respawn.
Fixes #338
2020-09-05 12:14:30 +02:00
Christoph Oelckers 7c5635671e - Exhumed: When Ramses is talking, hide the status bar. 2020-09-05 12:01:47 +02:00
Christoph Oelckers b23424485a - re-implemented VP8 support.
Since the decoder cannot handle sound, there's two options:

1: Use the same sounds as the video it replaces.
2: If an identifiable streamable sound with the same base name is found, it will be played along with the video.
Fixes #133
2020-09-05 11:58:19 +02:00
Christoph Oelckers 80cea90854 - implemented zoom by mouse wheel for the automap.
Fixes #121
2020-09-05 09:10:24 +02:00
Christoph Oelckers adbedd30c4 - consolidated the 4 functions for handling the automap zoom. 2020-09-05 00:58:25 +02:00
Christoph Oelckers 6e6d74f058 - update the sector for the interpolated camera position in Exhumed.
Let's hope that fixes #272..
2020-09-05 00:21:10 +02:00
Christoph Oelckers b54fd2f054 - fixed: Entering the menu from SW's intro may not stop the sound.
This is a singular special case, everything else must do it.
Fixes #335
2020-09-05 00:07:06 +02:00
Christoph Oelckers cdd2329b63 - fixed levelwarp for games with linear level counting.
Fixes #337
2020-09-05 00:00:55 +02:00
Christoph Oelckers d2de11cd99 - hide the message display on intermission screens.
Fixes #336
2020-09-04 23:56:04 +02:00
Christoph Oelckers f72b283519 - fixed alignment of Exhumed's menu captions. 2020-09-04 23:31:41 +02:00
Christoph Oelckers 5a90f35aed - fixed order of Exhumed cinema texts and their color.
Fixes #286
2020-09-04 23:16:21 +02:00
Christoph Oelckers b7db8b988d - SW: Ignore follow mode setting when not on the automap.
Fixes #311.
2020-09-04 22:54:11 +02:00
Christoph Oelckers 2e8b808683 - added a C_ClearMessages function for the console and fixed game restart after death.
Fixes #322
2020-09-04 22:23:38 +02:00
Christoph Oelckers 1eb99f69c2 - transitioned Exhumed to level change events. 2020-09-04 21:59:38 +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 5bc80d2468 - macro cleanup 2020-09-04 21:17:24 +02:00
Christoph Oelckers fd2ce0321e - transitioned SW to level change event system 2020-09-04 21:15:15 +02:00
Christoph Oelckers b8d2d626ca - cleaned out some leftover network variables 2020-09-04 20:48:29 +02:00
Christoph Oelckers 3eef0db6f6 - check if a map file exists before starting it. 2020-09-04 20:47:40 +02:00
Christoph Oelckers 97f395bd72 - transitioned Blood to the new level change messaging system 2020-09-04 20:46:44 +02:00
Christoph Oelckers 77f96a1c75 - fixing some issues. Level transitions in Duke are working now. 2020-09-04 19:43:36 +02:00
Christoph Oelckers e5e8c02f1d - WIP level transition refactored to a game independent event system. 2020-09-04 19:43:35 +02:00
Christoph Oelckers 1cf0ca3f75 - save the global view variables in a savegame.
I have no idea why but these did not get restored to something useful anymore.
2020-09-04 01:17:06 +02:00
Christoph Oelckers b253ae123f - run screen jobs with uncapped frame rate.
Fixes #325
2020-09-03 18:36:37 +02:00
Christoph Oelckers 8f0a885f63 - route 'give' through the network for all games. 2020-09-03 17:39:41 +02:00
Christoph Oelckers fb334e7f1a - transitioned Blood's give command and changed SW's not to call the cheat handler. 2020-09-03 16:31:31 +02:00
Christoph Oelckers 3e5e956b72 - run most cheats through the network.
The remaining excpetions are the "give" CCMD and any level change action.
Unfortunately the implementation of most cheats is not multiplayer safe so right now it'd only be useful for demo recording (assuming that worked to begin with... ;))
2020-09-03 01:32:51 +02:00
Christoph Oelckers a0874a26a7 - noclip cheat and splitting of Exhumed's cheat code into its own file. 2020-09-03 00:41:32 +02:00
Christoph Oelckers 66bf8113b8 - implemented the 'god' cheat as a network command.
This was mainly chosen as something simple to get the basics set up.
2020-09-03 00:29:17 +02:00
Christoph Oelckers 66d8eae8e1 - implemented the framework for freeform network commands.
Unlike ZDoom this uses callbacks for implementation to keep game specific parts encapsulated to the game code.
2020-09-02 23:27:02 +02:00
Christoph Oelckers b3d89a6a0b - removed the old main loop. 2020-09-02 23:03:48 +02:00
Christoph Oelckers b49e050baf - transitioned Exhumed to the new main loop.
Fixed #301
2020-09-02 22:55:57 +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 a222a7d7c9 - transitioned Shadow Warrior to new main loop.
Problem: Does not work yet with cl_syncinput = 0. Something about those angle and horizon settings is not right yet.
2020-09-02 20:58:37 +02:00
Christoph Oelckers 141b5c00cd - cleanup. 2020-09-02 20:58:37 +02:00
Christoph Oelckers 4d5e2f5bda - dead data removal in network.cpp and the player struct. 2020-09-02 20:58:21 +02:00
Christoph Oelckers b3d4bab4dd - deleted sync.cpp. 2020-09-02 20:57:03 +02:00
Christoph Oelckers 621a1e0b3d - removed the packet averaging code.
This is also part of the backend code and won't be needed here anymore.
2020-09-02 20:57:03 +02:00
Christoph Oelckers e19923ce4b - removed setGameClockStart.
This won't be needed anymore.
2020-09-02 20:57:03 +02:00
Mitchell Richters 6e6f5dbb5b - Blood: Further tweak positioning for when ammo remaining gets lower than 10. 2020-09-02 19:42:16 +10:00
Mitchell Richters 1e8066ac59 - Blood: Tweak positioning for when using `cl_showmagamt 1`.
This moves the ammo count and inventory item icon/count over by 9px to compensate.
2020-09-02 19:13:30 +10:00
Christoph Oelckers aabbbcb2ff - reset the network timer after lengthy operations.
This includes loading a level and busy-waiting for a sound to play.
Also block these loops and the sounds they wait for in network games to avoid problems from longer delays here.
The problem seems to be directly inherited from ZDoom which shows the same issue with screen wipes.

Fixes #297
2020-09-02 10:00:07 +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
Christoph Oelckers b21f49a1e1 - handle r_NoInterpolate in Blood's ticker so that the game isn't locked to 30 fps. 2020-09-02 07:11:47 +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
Mitchell Richters 253d1a3989 - SW: Re-position actortime clocking.
I believe this is the right place and I got it wrong when doing e32cd81cc7. The change in this commit is more like where Duke times actortime.
2020-09-02 09:28:41 +10:00
Mitchell Richters 715a61adbd - Blood: Re-position actortime clocking and remove #ifdef guarded call to non-existent function.
I believe this is the right place and I got it wrong when doing e32cd81cc7. The change in this commit is more like where Duke times actortime.
2020-09-02 09:15:18 +10:00
Christoph Oelckers 921f4e54d9 - made a slash for the ammo display in Blood. 2020-09-02 00:45:27 +02:00
Christoph Oelckers e5612b82c7 - fixed: The tile manager created its backup arrays before loading .def files.
This could let such textures disappear with the new main loop.
2020-09-02 00:36:49 +02:00
Christoph Oelckers 8d63e735d0 - transitioned Blood to the new main loop.
Mostly working but interpolation is not correct yet and for some strange reason the numbers on the HUD are gone.
2020-09-01 23:34:04 +02: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 e320e79df0 - use gFrameClock in DoSectorLighting
The higher precision of gameclock went totally unused in here.
2020-09-01 20:12:02 +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 b19681b50c - use gFrameClock plus interpolation for angles in viewProcessSprites
Both more reliable and precise.
2020-09-01 20:02: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 31fc39b051 - Blood code cleanup
deleting blocks of unused code, in particular some networking leftovers.
Also moving a few functions around
2020-09-01 19:49:05 +02:00
Christoph Oelckers 6726c19f9c - removed constexpr from FloatToAngle.
I overlooked the xs_CRoundToInt call in there.
2020-09-01 19:48:21 +02:00
Christoph Oelckers c957397573 - undid the workarounds for undefined-ness of negative shifts.
For any mainstream platform that is totally irrelevant and besides, in C++20 it will be well defined and all current compilers on the relevant platforms treat it accordingly.
This is not worth deoptimizing the code.
2020-09-01 19:47:01 +02:00
Christoph Oelckers dfb6c0d6fa - Blood: moved the precaching code to its own file. 2020-09-01 19:39:30 +02:00
Christoph Oelckers 0cc019686d - minor optimization of m_fixed.h
Use constexpr where possible to allow using these function in static initializers.
Avoid dividing by constant values. Better multiply with the inverse which is quite a bit faster.
2020-09-01 19:37:05 +02:00
Christoph Oelckers 763be58134 - tinkering with the savepic code.
This was definitely missing but it's not the cause of the empty savepic.
2020-09-01 19:21:00 +02:00
Mitchell Richters 3f886ad818 - SW: Fix change in 1354d52c05 that accidentally caused minor loss of precision in the panel code. 2020-09-01 23:35:00 +10:00
Mitchell Richters 9605e41f9f - SW: Fix Q16.16 operation not using m_fixed inlines. The one that got away... 2020-09-01 23:28:47 +10:00
Mitchell Richters 17da849add - SW: Get synchronised input going in a testable way. This is not a complete re-factor, just enough to get it going.
* Remove bool `PedanticMode`.
* Transition appropriate lines to `cl_syncinput`.
* Remove inlines added purely only to maintain DOS demo compatibility.
* Fix a few pedantic Q16.16 >> Int >> Q16.16 conversions.
2020-09-01 23:08:23 +10: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 d40e53eb53 - more Exhumed pitch change fixes. 2020-08-31 21:48:17 +02:00
Christoph Oelckers 6b1fa22aed - fixed view centering in Exhumed.
Switched to GDX's code because the one present here looked quite weird.
This still does not feature interpolation.
Fixes #296
2020-08-31 21:41:39 +02:00
Christoph Oelckers 3204a3e5fc - negated the meaning of SB_AIMMODE.
This is because 'classic' aim mode will reset the view if the mouseaim key is not pressed.
The problem with this is that an empty input packet will trigger a view reset. If the meaning is inverted the default aim mode is free mouse view which doesn't try to alter any view state and is therefore preferable for an empty packet.

Fixes #292
2020-08-31 20:51:22 +02:00
Christoph Oelckers ac5abd8aac - removed ready2send variable.
It's a leftover from the old netcode.
2020-08-31 20:25:08 +02:00
Christoph Oelckers 827c406437 - don't play activation sound when not having a Holoduke powerup. 2020-08-31 20:04:20 +02:00
Christoph Oelckers f0ca87dc82 - fixed mixed up Holoduke messages.
Fixes #289
2020-08-31 20:01:55 +02:00
Christoph Oelckers 923833ccec - animated menus without frame rate cap
The frame rate cap is only deactivated if there's actual animations running so that leaving the game in the menu won't make the engine run at high frame rates.
Fixes #288.
2020-08-31 19:56:13 +02:00
Christoph Oelckers 54d65bfcfc - fixed some warnings 2020-08-31 19:28:05 +02: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 a8bb6ba515 - base the turbo turn timer on the actual level tic rate
This has a threshold that could lead to different behavior, depending on whether synchronized or unsynchronized input is used, it also used an undefined state of gameclock for its calculations.

By basing this on the levelclock consistency is ensured.
2020-08-31 19:23:05 +02:00
Christoph Oelckers 71c3441b1e - transitioned cloudclock.
This timer runs at 60 Hz in the render code, so it needs to take smoothratio into account.
2020-08-31 19:22:21 +02:00
Christoph Oelckers 9a208185d6 - levelclock increment after tick.
This ensures that the first tick always gets a value of 0.
2020-08-31 19:21:02 +02:00
Christoph Oelckers bf4f538c61 - a few more places where gameclock could be substituted.
Nothing here needs higher precision.
2020-08-31 19:20:04 +02:00
Christoph Oelckers 2bf368d49b - redid the timer for the automap zoom
Add more precision and uncouple from the game timer
2020-08-31 19:18:53 +02:00
Christoph Oelckers 45a22eb3cd - do proper interpolation of the snorkel in RR. 2020-08-31 19:06:53 +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 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 007c6e122d - gameclock abstraction
This may need more work to have a reliable timer
2020-08-31 00:16:43 +02:00
Christoph Oelckers 7684f9e3e6 - fixed duplicate symbol error on macOS 2020-08-31 00:15:48 +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
Christoph Oelckers b8258da997 - cleaning out some trash from compat.h.
The header from hell...
2020-08-30 23:34:40 +02:00
Christoph Oelckers 00d35bc42c - fixed the number pulsing on Duke's and RR's HUD. 2020-08-30 22:52:50 +02:00
Christoph Oelckers 98557947da - gameclock must also be set before calling gi->Render.
This runs at the display's frame rate so the timer value from the Ticker call is not precise enough to do all the work.
2020-08-30 22:52:20 +02:00
Christoph Oelckers ba8dc788fe - hotfixing some Exhumed map transition issues.
This avoids crashing on LEV20, but the whole thing is simply too poorly implemented to actually work - this needs to be redone so that the map transition does not occur in the middle of the game ticker.
2020-08-30 21:45:21 +02:00
Mitchell Richters 5daaa1fc06 - fix issues with `cl_syncinput 0`. 2020-08-31 05:24:29 +10:00
Christoph Oelckers 511cb51e7f - these 2 variables no longer exist. 2020-08-30 21:20:05 +02:00
Christoph Oelckers 26f6bac060 - Exhumed: save the status variables to savegames again.
Since this status bar depends on explicit updates, this data needs to be restored after loading, and just saving it out is the easiest way to ensure that.
Fixes #274
Fixes #276
2020-08-30 21:16:37 +02:00
Christoph Oelckers a9bf1ab4bc - Exhumed: Renamed changelevel CCMD to Levelwarp for consistency.
Fixes #278
2020-08-30 21:07:00 +02:00
Christoph Oelckers 5136e7dc2d - SW: Moved the key display on the fullscreen HUD above the ammo display.
Space is a bit too tight when activating the clip display otherwise, especially on 4:3 screens.
2020-08-30 21:01:29 +02:00
Mitchell Richters d0e390c554 - Blood: Don't treat akimbo shotguns as a reloading weapon. It doesn't go through the reload sequence like when the player doesn't have the power-up. 2020-08-30 20:24:39 +02:00
Mitchell Richters c0374cf890 - SW: Move static function `DoReloadStatus()` into the class as private function 2020-08-30 20:24:38 +02:00
Mitchell Richters 26ffc82cc0 - SW: Remove duplicated code from dd832aaea3f688b375c74643606f299c76d92f3b. 2020-08-30 20:24:38 +02:00
Mitchell Richters c555540e24 - Blood: Implement `cl_showmagamt` for the game's shotgun.
* Tile set for `kSBarNumberAmmo` does not include a slash. Hack put in place to get me a slash from a specific tile of a different font. It "works" and I don't think it looks too bad.
2020-08-30 20:24:38 +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
Mitchell Richters 10962e2193 - SW: Implement `cl_showmagamt` for the game's shotgun and uzi.
* SW does not have any special characters in its BigFont, so currently there's no divider between ammunition amounts. This is to be discussed on the PR.
2020-08-30 20:24:37 +02:00
Mitchell Richters eb3a21e677 - Duke: Implement `cl_showmagamt` for the RR's pistol and shotgun. 2020-08-30 20:24:37 +02:00
Mitchell Richters 161647ed5b - Duke: Implement `cl_showmagamt` for the game's pistol. 2020-08-30 20:24:37 +02:00
Mitchell Richters 6f653da0fc - DBaseStatusBar: Create function `DBaseStatusBar::CalcMagazineAmount()` for use with calculating magazine values when drawing the HUD. 2020-08-30 20:24:37 +02:00
Mitchell Richters aeb807bea1 - gamecvars.cpp: Create CVAR `cl_showmagamt`. 2020-08-30 20:24:37 +02:00
Mitchell Richters e32cd81cc7 - Unify `stat fps` for all games. 2020-08-30 20:24:36 +02:00
Christoph Oelckers 59a964bb83 - same for SW 2020-08-30 20:24:36 +02:00
Christoph Oelckers 747dac6c41 - Exhumed: Mark unused function arguments in standard C++ fashion. 2020-08-30 20:24:36 +02:00
Christoph Oelckers 84e54e4fdb - deleted several unused local variables
None of the initializers here is modifying gamestate, this looks like overcautious preservation for demo compatibility.
2020-08-30 20:24:23 +02:00
Christoph Oelckers 3a7b23f655 remove unused stuff 2020-08-30 20:23:48 +02:00
Christoph Oelckers 765f211e05 - things are mostly working again.
Rendering produces an image again, input gets properly processed, but unsynchronised mouse input isn't properly applied yet.
2020-08-30 19:59:46 +02:00
Christoph Oelckers c3fa9b76c4 - fixed: The render style must be set to a defined value at the start of rendering a scene. 2020-08-30 17:40:04 +02:00
Christoph Oelckers 2602774571 - fixed: The render style must be set to a defined value at the start of rendering a scene. 2020-08-30 17:38:24 +02:00
Christoph Oelckers 38d10cc591 - game input works, but still no 3D scene rendered. 2020-08-30 13:04:07 +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 d59284c96b - transitioned Duke to the new main loop.
Everything compiles, but hasn't been tested. Doing a safety commit first.
2020-08-30 12:02:32 +02:00
Christoph Oelckers 0c455acaa2 - more work to switch over to the new loop.
Mainly separation of ticker and render calls
2020-08-30 10:42:44 +02:00
Christoph Oelckers 367b4ce051 - this should be all we need from GZDoom to hook up the main loop. 2020-08-30 09:32:34 +02:00
Christoph Oelckers 1e0b8038e5 - removed I_ResetTime entirely and refactored SW's use of it. 2020-08-30 08:13:34 +02:00
Christoph Oelckers 49106c5b5e - Duke: Do not reset the global ticker.
The new main loop code cannot handle that. Instead set a start value for gameclock so that gameclock can be based on an arbitrary time value instead of directly representing global time.
2020-08-30 08:04:33 +02:00
Christoph Oelckers 34510ae9b3 - added ticker stub to the game interface. 2020-08-30 08:03:03 +02:00
Christoph Oelckers cc04d41903 - Duke: moved the clock reset to a separate function and deleted the unused lockclock variable. 2020-08-30 07:53:20 +02:00
Christoph Oelckers d49aedacea - continued work on main loop - added a few new entry points to the game interface. 2020-08-30 00:55:49 +02:00
Christoph Oelckers c0ebe3e08b - hooked up ZDoom's d_net.cpp file.
Still not active but this contains some code needed to do a proper main loop that can work with the networker.
2020-08-29 23:24:18 +02:00
Christoph Oelckers 15adf1f6e5 - hooked up ZDoom's i_net.cpp to compile within the project.
Note about the license: This file was available from GZDoom 2.4.x under the Doom source license which is compatible with Build.
This isn't used yet.
2020-08-29 22:07:47 +02:00
Christoph Oelckers fab561d757 - cleaned up Duke's main GameTicker function.
* moved the part that alters the input before queuing it to GetInput
* moved moveloop into the main function
* reshuffled a few things for better grouping by task.
2020-08-29 21:20:10 +02:00
Christoph Oelckers 20426a5a4f Revert "- pass loc as a parameter to Duke's GetInput function to uncouple it from the global variable."
This reverts commit a03b6cf57c.

Turns out this wasn't really useful.
2020-08-29 21:09:04 +02:00
Christoph Oelckers e3839b01bc - removed in_mousesmoothing.
This not only was redundant with m_filter, even worse, it was in the wrong place.
Control_GetInput is used to read the current input state from the backend and can get called at uneven intervals, or even multiple times during the same frame, so smoothing the movement here can lead to erratic behavior.
With this change CONTROL_GetInput will return the same data unless it gets updated between calls.
2020-08-29 18:37:22 +02:00
Christoph Oelckers a03b6cf57c - pass loc as a parameter to Duke's GetInput function to uncouple it from the global variable. 2020-08-29 18:07:49 +02:00
Christoph Oelckers 56d0647412 - migrated the last 3 remaining UI controls to CCMDs. 2020-08-29 17:49:15 +02:00
Christoph Oelckers eb34b41716 - fixed keyboard look in Blood. 2020-08-29 17:07:25 +02:00
Mitchell Richters be33872b42 - Blood: Implement `WeaponSel_Alt` for game. 2020-08-29 22:51:20 +10: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 7659107b75 - removed SW's SK_AUTO_AIM for good.
When networking becomes a thing again this can be done as a server CVAR without such a messy approach.
2020-08-29 02:19:41 +02:00
Christoph Oelckers 3a9bcb0b64 - moved Exhumed's cheat bits back into the game module.
They are no longer part of the packet interface.
2020-08-29 02:17:28 +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 c47b60e193 - Fix compile regression from 847fa48724.
Fixes #283.
2020-08-29 08:16:05 +10: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 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
Christoph Oelckers 536e7455f2 - moved I_StartFrame to the top of the loop and cleaned up baselayer.hj 2020-08-28 08:44:44 +02:00
Christoph Oelckers d73bf62465 Revert "- Set frame-time as close to the buffer swap as possible, and calculate smoothratio for Duke/SW as late as possible."
This reverts commit 97feb483ab.
2020-08-28 08:25:51 +02:00
Mitchell Richters ea2790ce08 - Duke: Switch game tic back to a while loop. I didn't mean to commit it this way in ab06235971.
* I doubt anyone will be running this on a system where computing a tic might take longer than a tic, but it's more consistent with the other games and is what it was.
2020-08-28 15:29:41 +10:00
Mitchell Richters 97feb483ab - Set frame-time as close to the buffer swap as possible, and calculate smoothratio for Duke/SW as late as possible.
* Micro-optimisation, but was getting a very occasional jitter in Duke 3D that seems to have gone with this.
2020-08-28 15:27:16 +10: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
Christoph Oelckers ee7d558282 - removed the remains of sending pause with the input packets.
None of this was really working anymore, but will have to be rethought once a network stream exists again.
But even then, this is better sent as a separate command, and in MP only.
2020-08-27 22:38:52 +02:00
Christoph Oelckers e0ca98602d - made Blood's inventory cycle-able.
IMO it's a totally annoying limitations to block wraparound of the cursor.
2020-08-27 22:29:45 +02:00
Christoph Oelckers 447573aa36 - consolidation of invprev, invnext and invuse. 2020-08-27 22:19:24 +02:00
Christoph Oelckers 43de0d8312 - consolidation of inventory item activation through hotkeys.
This also adds hotkeys for Exhumed which never implemented them.
2020-08-27 21:25:09 +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 8bb13bc4c2 - InputState: Exclude volume keys from setting `AnyKeyStatus` to true. 2020-08-27 13:05:05 +02:00
Mitchell Richters a2b51edcdb - Duke: Delete enum created in 3e79e7b63f and move `CRACK_TIME` to `miscConstants`.
* Didn't have a very good look, apparently...
2020-08-27 16:09: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 89f5b26988 - fixed badly placed include. 2020-08-27 00:27:10 +02:00
Christoph Oelckers f597f7c265 - made the GameFunc constants global again.
With most of the more specific features being migrated to CCMDs the list is relatively clean now, with merely 2 buttons that are game specific.
2020-08-27 00:25:59 +02:00
Christoph Oelckers 4b299fa412 - Exhumed also handled. 2020-08-27 00:58:21 +02:00
Christoph Oelckers 99486cba7e - gave Blood the same treatment. 2020-08-27 00:21:11 +02:00
Christoph Oelckers c7e667a17a - transition weapon selection in SW.
Thanks to the macro insanity for trivial operations in this code base this turned out to be a lot more troublesome than Duke...
2020-08-27 00:06:59 +02:00
Mitchell Richters 55f688b13f - SW: Rename `q16horz` to `q16horiz` and `q16aimvel` to `q16horz` for consistency and to avoid confusion down the track. 2020-08-27 08:00:50 +10:00
Christoph Oelckers e768a2bf24 - use new bitmask for weapon selection in Duke. 2020-08-26 23:02:55 +02:00
Christoph Oelckers 36d676ca20 - renamed ESyncBits so that the replacement can take that name later. 2020-08-26 22:39:15 +02:00
Christoph Oelckers 78a024a50c - fixed: Exhumed's sound module did not check the 'sound disabled' CVAR. 2020-08-26 22:26:28 +02:00
Christoph Oelckers b4df1fd662 - fixed Ramses text display.
Fixes #265.
2020-08-26 22:22:46 +02:00
Christoph Oelckers 1a25504d02 - looks like the nAngle field in the PLayerInput struct isn't used for anything anymore. 2020-08-26 21:32:18 +02:00
Christoph Oelckers 83c8770d02 - fixed Ramsed head display and not freezing the input when it is active. 2020-08-26 21:28:57 +02:00
Christoph Oelckers 096a2bd4e9 - fixed some of the sound issues in Exhumed
* ambient sounds were constantly restarted resulting in garbled sound.
* sound priorities were not checked. This was used to limit some sounds to one instance per actor or to allow terminating other sounds playing on the same actor.
2020-08-26 20:22:11 +02:00
Christoph Oelckers e5a4276a5a - fixed infinite loop. 2020-08-26 20:20:36 +02:00
Christoph Oelckers 4e846f8d66 - do not print game init messages to the notify display. 2020-08-26 20:19:54 +02:00
Mitchell Richters e3fe1b2b60 - Exhumed: Correctly transform player velocities when running on single 30Hz timer.
Thanks, Graf :)

# Conflicts:
#	source/exhumed/src/exhumed.cpp
2020-08-26 17:27:15 +02:00
Mitchell Richters 0c300c181f - Exhumed: Unify game with single timer instead of getting forward/side velocity at 120Hz.
* Player movement is close, but not exactly as it was. Requires more work if it is to be considered.

# Conflicts:
#	source/exhumed/src/exhumed.cpp
#	source/exhumed/src/ps_input.h
2020-08-26 17:26:42 +02:00
Christoph Oelckers f90d953ab5 default cl_smoothsway to false. 2020-08-26 17:23:08 +02:00
Christoph Oelckers abf715eace - unified the packet structures of all games.
Currently the bit fields are still separate and they have to be merged, but for now the added memory does not matter.
Having this structure in the common parts will allow work on consolidating the input code, though.
2020-08-26 17:12:48 +02:00
Christoph Oelckers 2ae5f960c5 - renamed fields in Exhumed's packed struct.
One step closer to getting these merged.
2020-08-26 17:09:47 +02:00
Christoph Oelckers c7f5f05e14 - cleaned up gamecvars.cpp and deleted a large amount of unused ones. 2020-08-26 17:05:17 +02:00
Mitchell Richters 4fcec5f6d3 - SW: Alt implementation for preparing a nuke.
* Given the original code in `pNukeAction()` (poorly named), the intent appeared to be that the weapon should go off-screen for preparation, returning once weapon initialised.
* Commit restores that behaviour behind a CVAR.

# Conflicts:
#	source/core/gamecvars.cpp
#	source/core/gamecvars.h
2020-08-26 17:00:19 +02:00
Christoph Oelckers 5a77aace2f - strip the structure for local input off the fields not needed here.
Now it's basically the same as Dukes.
2020-08-26 16:59:42 +02:00
Christoph Oelckers c1b1182f90 - fix weapon selection in Exhumed.
Like Blood it looks like the request isn't processed immediately so it needs to stick around.
2020-08-26 16:59:42 +02:00
Christoph Oelckers d0655a1068 - renamed the fields in Blood's packet structure to match Duke's. 2020-08-26 16:59:41 +02:00
Christoph Oelckers 3fc79940f2 - merged the bit fields in Blood's packet structure.
Whatever this was for it made that thing extremely unwieldy.
With these merged the resulting structure doesn't look much different from Duke's anymore.
2020-08-26 16:59:41 +02:00
Christoph Oelckers b76168f673 - moved the main event processing functions into the global main loop.
Now, with all the Build timer stuff removed these calls were all identical between games.
2020-08-26 16:59:41 +02:00
Mitchell Richters a9f556c1bd - SW: Restore random element to player's weapon left/right bobbing behind a CVAR.
# Conflicts:
#	source/core/gamecvars.cpp
#	source/core/gamecvars.h
2020-08-26 16:45:42 +02:00
Mitchell Richters 50793184ee - SW: Remove random element from player's weapon left/right bobbing causing bob value to be between 24-48 and lock to 36. 2020-08-26 16:45:42 +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 60f334f57c - Exhumed: Partially restore sound issues following cc5e6d19c3.
* Restored call of `UpdateSounds()` to `GameLoop()` and not `DrawView()` like previously.

Partially addresses #253.
2020-08-26 23:22:44 +10:00
Mitchell Richters 62388e30be - fix `C_SetNotifyFontScale()` for RR.
Fixes #264.
2020-08-26 22:33:19 +10: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
Christoph Oelckers ddd6a300ab - added UpdateSounds calls to the blocking loops in Duke's and SW's StartGame functions. 2020-08-26 04:15:33 +02:00
Christoph Oelckers cc5e6d19c3 - fixed sound updating by moving the engine's UpdateSound call into the main loop.
This needs to be called unconditionally for every frame being rendered, not all of the game modules did that.
Placing this call here ensures that it is independent of anything the games do.
2020-08-26 04:10:16 +02:00
Christoph Oelckers de871c9ab9 - use the game timer, not the Build timer for the sound eviction delay.
This is supposed to wait for two game frames to be on the safe side.
2020-08-26 03:50:07 +02:00
Mitchell Richters e1424d454f - Duke: Clean out some left over stub code during initial testing. 2020-08-26 11:23:57 +10:00
Mitchell Richters 4eec9dca63 - Duke/SW: Use `I_GetBuildTime()` instead of `gameclock` in game-side sound code.
* Code is called where `gameclock` might not be set.
2020-08-26 10:09:02 +10:00
Mitchell Richters ef728429e0 - Core: Remove legacy smoothratio calculator `CalcSmoothRatio()`. 2020-08-26 09:49:47 +10:00
Mitchell Richters e0aaaf1f60 - All Games: Move `gameclock` and `lastTic` to gamecontrol. 2020-08-26 09:49:44 +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 1c8b0a20fb - Build: Remove all timer code. 2020-08-26 09:49:40 +10:00
Mitchell Richters 2bf11ad378 - All Games: Remove use of `timerGetTicks()`. 2020-08-26 09:49:38 +10:00
Mitchell Richters aba5c4c134 - All Games: Remove use of `timerGetHiTicks()`. 2020-08-26 09:49:36 +10:00
Mitchell Richters b883204f6a - All Games: Remove remaining use of `totalclock` and associated timing code. 2020-08-26 09:49:34 +10:00
Mitchell Richters c207437a57 - Duke: Rename `cloudtotalclock` to `cloudclock`.
* Mostly so it doesn't come up on searches for `totalclock`.
2020-08-26 09:49:32 +10:00
Mitchell Richters d358c71f82 - Blood: Migrate to GZDoom time code like Duke, SW and Exhumed. 2020-08-26 09:49:23 +10:00
Mitchell Richters 39541408f2 - Exhumed: Fix what I believe is a typo. 2020-08-26 09:49:02 +10:00
Mitchell Richters 2748d6dc64 - Exhumed: Rename remaining use of `totalclock` locally in screenjobs to `currentclock` like Duke. 2020-08-26 09:48:59 +10:00
Mitchell Richters a6cc3c4128 - Exhumed: Migrate to GZDoom time code like Duke and SW. 2020-08-26 09:48:57 +10:00
Mitchell Richters 76b05dbcd6 - Build (and games): Remove `totalclocklock`. 2020-08-26 09:48:56 +10:00
Mitchell Richters 576b13248e - Build: Use `I_GetBuildTime()` in place of `totalclocklock` in `animateoffs()`. This makes the SW menu work pre-game. 2020-08-26 09:48:54 +10:00
Mitchell Richters 40739d9176 - SW: Add `ogameclock` and use in places where `ototalclock` was used.
* Duke used `ototalclock` only to keep track of when the game ticked. SW uses it in the rendering code for differentials between tics so we should preserve that to prevent issues down the track.
2020-08-26 09:48:51 +10:00
Christoph Oelckers d38a3a1fb1 - added autoaim switch for Exhumed.
Pointers for the needed change taken from GDX.
This applies only to hitscan weapons the rest do not appear to autoaim.
Fixes #260
2020-08-26 00:22:11 +02:00
Christoph Oelckers 9440ddb68f - thinned out Blood's network code. 2020-08-25 23:04:08 +02:00
Christoph Oelckers 84b6af24d3 - renamed the fields in SW's packet structure to match Duke's.
Preparation for moving the packet management into public code.
2020-08-25 22:06:01 +02:00
Christoph Oelckers 70cac1db54 - removed unused parts from timer.cpp. 2020-08-25 21:47:03 +02:00
Christoph Oelckers 5af71c0af2 - Exhumed: Implement "Quit to title".
Fixes #252
2020-08-25 21:34:12 +02:00
Christoph Oelckers efc83e1a5f - Exhumed: properly terminate the "Ramses" save block.
Fixes #258
2020-08-25 21:30:00 +02:00
Christoph Oelckers 6b0e1baf02 - added a timerUpdateClock call to the main loop so that Blood and Exhumed work again.
This may only be removed when nothing uses totalclock anymore. We're not there yet.
2020-08-25 21:24:45 +02:00
Christoph Oelckers a323591d5a - call C_RunDelayedCommands() from a centralized place. 2020-08-25 21:16:37 +02:00
Christoph Oelckers fd12ad382f - add shadows to the statistics display.
Fixes #256
2020-08-25 20:58:32 +02:00
Christoph Oelckers 5df0a7241f - disabled a few menu options for unsupported features in Exhumed.
Fixes #255
2020-08-25 20:40:30 +02:00
Christoph Oelckers e97fb2ab7f - reduce message spam in the notification display. 2020-08-25 20:21:18 +02:00
Christoph Oelckers 8256b54005 - applied a few fixes:
* removed the timer callback stuff that came back through the backdoor.
* do not use gameclock in the UI code - use the underlying timer directly.
* UpdateSounds must still use totalclock, until this can be refactored in its entirety.
2020-08-25 20:20:35 +02:00
Mitchell Richters c888bc802d - SW: Make a bit more use of the calculated smooth ratio. 2020-08-25 19:51:32 +02:00
Mitchell Richters 386661f1ba - SW: Migrate to GZDoom time code like Duke. 2020-08-25 19:51:32 +02:00
Mitchell Richters d04aa603dd Revert "Revert "- Duke: Remove left-over line." and re-do as a multiplier of `TICSPERFRAME` for better clarity as to what's happening rather than a bit-shift."
This reverts commit 0cdd27b61534219a0d00b794a45a09f26a95afaa.
2020-08-25 19:51:12 +02:00
Mitchell Richters d3b506eb2b - Duke (and Engine): Eliminate use of totalclock for game.
* Breaks every other game except Duke unless/until they get migrated. Done for the purpose of demonstrating PR #244.

# Conflicts:
#	source/build/src/timer.cpp
#	source/games/duke/src/game.cpp
2020-08-25 19:51:12 +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 e9c0831ccc Revert "- Duke: Remove left-over line." and re-do as a multiplier of `TICSPERFRAME` for better clarity as to what's happening rather than a bit-shift.
* It's also better that everything be based off the one tic clock and not call `I_GetBuildTime()` to set `gameclock`. This also ensures that `gameclock` always increases in intervals of 4.

This reverts commit 63eac13d6442357fdab57067ec913a2ce8ce72db.
2020-08-25 19:48:38 +02:00
Mitchell Richters be5419e77c - i_time: Add `I_GetBuildTimeFrac()`.
* Currently not needed, but adding for feature parity.
2020-08-25 19:48:26 +02:00
Mitchell Richters 2231386830 - Duke: Create function to reset timer and apply in game where timer restarts are needed. 2020-08-25 19:48:15 +02:00
Mitchell Richters 7d1f021fcd - Duke: Remove left-over line. 2020-08-25 19:47:45 +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 ab06235971 - Duke: Demonstration of a re-timed game and associated interpolation improvements that come from it.
# Conflicts:
#	source/games/duke/src/game.cpp
2020-08-25 19:43:28 +02:00
Christoph Oelckers 435e13dfa4 cleanup of the timer interface.
* rewrote all uses of timerSetCallback. Most were unnecessary or long obsolete, the sound updates need to run per frame, not per tic and the UI tickers need to be handled in the main loop anyway.
* Use a more precise timer to animate the menu transition.
* uncouple other menu animations from the game timer.
2020-08-25 19:42:11 +02:00
Christoph Oelckers a55da24277 - hooked up the chat display.
Currently not really useful, aside from being usable to enter cheats. For this the cheat must be prefixed with a '#' to be recognized.
2020-08-25 18:51:56 +02:00
Christoph Oelckers cf36e7d770 - SW: stop cutscene sound before going to the summary screen. 2020-08-25 18:28:50 +02:00
Christoph Oelckers 7d30218d8e - fixed: In SW the automap follow mode blocked all game input, even when the automap was off. 2020-08-25 18:09:57 +02:00
Christoph Oelckers ce853c5376 - Blood does not restart the intro sequence.
Fixes #247
2020-08-25 18:06:16 +02:00
Christoph Oelckers a0e4d6f62c - implemented proper scaling support for the notify display - both the classic and advanced variant. 2020-08-25 18:03:15 +02:00
Christoph Oelckers 1a633ce6a6 - give Exhumed some automap labels as well.
This game didn't have them originally so here the 'native' mode does not exist.
2020-08-25 00:27:14 +02:00
Christoph Oelckers 7c1e64757a - use generalized automap label code for Shadow Warrior, too. 2020-08-25 00:16:02 +02:00
Christoph Oelckers faf23d8ff0 - proper defaults for Blood. 2020-08-25 00:01:33 +02:00
Christoph Oelckers 777bbd4bd8 - use the generalized code to display automap labels in Blood. 2020-08-24 23:59:09 +02:00
Christoph Oelckers 6672b8af99 - generalized the automap label code.
Using proper scaling and should be reusable from all games now.
2020-08-24 23:14:55 +02:00
Christoph Oelckers 25ade79b90 - stat display fine tuning. 2020-08-24 22:18:45 +02:00
Christoph Oelckers fef7608705 - made a few fixes for the fullscreen HUD in Nam:
* the font was placed too low
* the Duke health icon is not a health icon in this game so it had to be exchanged for something proper.
2020-08-24 22:12:56 +02:00
Christoph Oelckers 88bcaf37ab - changed the scale range of hud_statscale so that 1 is for fullscreen 320x200. 2020-08-24 22:02:49 +02:00
Christoph Oelckers e7c58a5b29 - make hud_scale a floating point CVAR. 2020-08-24 21:48:47 +02:00
Christoph Oelckers 3a6ccac8ea - fixed bad offset with vertically mirrored sprites.
Fixes #239
2020-08-24 21:15:22 +02:00
Christoph Oelckers 6d1e3e77fc - fixed item percentage display on SW's status bar.
Fixes #242
2020-08-24 20:46:14 +02:00
Christoph Oelckers 76811a1881 - InputState cleanup
This removes most of the InputState class because it is no longer used.
The only remaining places still checking scan codes are the modifiers for sizeup and sizedown.
All the rest was remapped to safer methods. The multiplayer taunts are currently inoperable, they will need support of shift-bindings to get proper support.
2020-08-24 20:34:18 +02:00
Christoph Oelckers b88a279a57 - removed the mouse wheel up event hackery
With the weapon cycling commands being done as CCMDs this is no longer needed.
2020-08-24 20:26:32 +02: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 f1a988b221 - make use of map bindings
All automap controls have been moved there, and sizeup/sizedown have been made CCMDs, taking screen size management entirely out of the game modules
2020-08-24 20:20:15 +02:00
Christoph Oelckers 092fb55db3 - hooked up the automap bindings.
Now, with centralized state management these can finally work.
2020-08-24 19:55:21 +02:00
Christoph Oelckers e158775e67 - … and for Exhumed
This game does not implement follow mode.
Note: Follow mode needs to be simplified across games!
2020-08-24 19:54:26 +02:00
Christoph Oelckers 0ee042fb60 - same procedure for Blood 2020-08-24 19:47:09 +02:00
Christoph Oelckers debb4b17b6 - transitioned SW's automap to the global variables
Also copied the automap label output to the status bar for proper ordering.
2020-08-24 19:36:17 +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
Mitchell Richters 89a15335df - Exhumed: Clear the screen in the 2D drawer prior to drawing in `menu_DoPlasma()`.
Fixes #237.
2020-08-24 17:44:39 +10:00
Mitchell Richters e8057cd871 - Exhumed: Fix menu scaling upon opening following changes in 979cc63835.
Fixes #238.
2020-08-24 17:11:51 +10:00
Mitchell Richters 6cbd607f31 - Exhumed: Stop playing `kSoundJonLaugh2` in `DLobotomyScreen` screenjob if `skiprequest` is true. 2020-08-24 16:51:38 +10:00
Mitchell Richters b5823385e1 - Exhumed: Fix if statement in `DrawWeapons()` following changes in e225e85ae1. 2020-08-24 16:02:12 +10:00
Mitchell Richters e225e85ae1 - Exhumed: Perform weapon bobbing with maximum precision and implement `cl_weaponsway`. 2020-08-24 13:22:52 +10:00
Christoph Oelckers fed70e6df7 - make Exhumed's intro block the UI.
Fixes #235.
2020-08-24 00:36:47 +02:00
Christoph Oelckers c60acd7af4 - fixed RR's HUD positioning when the weapon bar is active. 2020-08-24 00:35:04 +02:00
Christoph Oelckers e25d1c4cda - improvements for automap labels.
* use a CVAR to decide whether to show them at the top or bottom
* draw them on top of the screen border so that they don't get overdrawn on smaller windows.
2020-08-24 00:25:42 +02:00
Christoph Oelckers e7c1595531 - allow using a better font for the map name on the automap.
- allow displaying the map label on the automap.

So far only for Duke and related games, the rest will follow.
2020-08-24 00:05:36 +02:00
Christoph Oelckers f6417f5876 - fixed bad texture validation in Duke automap. 2020-08-23 23:02:15 +02:00
Christoph Oelckers 91b31cec39 - fixed: hud_messages completely blocked the messages, even from going to the console.
It should only block the on-screen notification display, which the backend already implements. The game code should not check this CVAR again.
2020-08-23 22:46:53 +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 4469cf7edb - only go from menu to console when closing with Escape. 2020-08-23 21:24:31 +02:00
Christoph Oelckers c0da85d0ff - SW: fixed: When entering the summary screen, clear the FinishedLevel variable immediately.
So that its value won't stick around and trigger the screen again. Same when an exception occurs.
Fixes #232.
2020-08-23 20:55:21 +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
Christoph Oelckers c777fea1af - added back the player sprites in Duke/RR's player setup menu.
Fixes #46
2020-08-23 20:44:17 +02:00
Christoph Oelckers 8b8f048393 - moved parts of videoNextPage to app_loop. 2020-08-23 18:08:08 +02:00
Christoph Oelckers adb98a47ba - restructured the main loop code so that the actual loop is in the common code. 2020-08-23 17:47:05 +02:00
Christoph Oelckers 85875da77a - removed the old start-of-level-only savegame code.
This serves no purpose anymore, even with a checkpoint-based gameplay the full saves will do just as well.
2020-08-23 16:30:20 +02:00
Christoph Oelckers f7fcd341ec - removed redundant levelnum variable.
Better use the global map record.
2020-08-23 16:24:54 +02:00
Christoph Oelckers 1a0e413d5c - use CCMDs for Exhumed's input where applicable.
- made crosshair toggle consistent across games.
2020-08-23 16:11:18 +02:00
Christoph Oelckers 7fe7b9b8e0 - be gone, rotatesprite. 2020-08-23 14:59:34 +02:00
Christoph Oelckers a4a26ef6bc - removed the last uses of the original rotatesprite function. 2020-08-23 14:55:19 +02:00
Christoph Oelckers 2a3f7a48c9 - implemented a proper kill counter.
Unfortunately the display is a bit limited by the available font characters.
2020-08-23 14:39:14 +02:00
Christoph Oelckers e75cfd82f9 - the training map could not be started. 2020-08-23 14:00:53 +02:00
Christoph Oelckers 979cc63835 - use DrawTexture for rendering the menu items. 2020-08-23 13:57:56 +02:00
Christoph Oelckers 4d477bc15b - fixed uninitialized GameAction variable. 2020-08-23 13:57:31 +02:00
Christoph Oelckers 212b3ae0f9 - Exhumed: fixed map startuo 2020-08-23 12:59:01 +02:00
Christoph Oelckers 5c7b613aa7 - reworked the main loop. 2020-08-23 12:26:52 +02:00
Christoph Oelckers 7889605ff4 - condensed main loop further, started laying out the new one. 2020-08-23 09:11:32 +02:00
Christoph Oelckers 9e5ca8c408 - moved game and level init code out of app_main. 2020-08-23 08:22:59 +02:00
Christoph Oelckers 5ba384db35 - moved the main game ticker out of app_main. 2020-08-23 07:49:58 +02:00
Christoph Oelckers 3a3ba43985 - Exhumed: moved the input code out of the main loop 2020-08-23 07:41:29 +02:00
Christoph Oelckers fccd054381 - split off the entire game loop related code into its own file.
This should make it easier to work on this.
2020-08-22 22:40:22 +02:00
Christoph Oelckers 7401c0e133 - moved Ramses head code into its own file. 2020-08-22 21:39:14 +02:00
Christoph Oelckers 8589d43835 - migrated Exhumed's cheats to the global system.
This also eliminates the last pieces using that global string list. All relevant text is now in the external string table.
2020-08-22 21:13:11 +02:00
Christoph Oelckers 6d852c33dd - added CCMDs for all 'holly' cheats that didn't have an equivalent yet. 2020-08-22 20:34:58 +02:00
Christoph Oelckers 6b1d6a44d7 - exported the item pickup messages to the string table and use the global 'nomonsters' flag. 2020-08-22 20:14:00 +02:00
Christoph Oelckers bddd196539 - ported the credits screen. 2020-08-22 19:50:04 +02:00
Christoph Oelckers d94077f833 - exported cinema texts to the string table as well. 2020-08-22 18:30:48 +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 6f039164a3 - set up the computer font as SmallFont2.
Unlike the sheet font, this one is needed.
2020-08-22 16:24:42 +02:00
Christoph Oelckers 7e7f9670c1 - transitioned the text intermission screen to use DScreenJob and interpolate the scrolling text display. 2020-08-22 11:56:54 +02:00
Christoph Oelckers 8e34288a1c - moved the end level handler further out in the main loop. 2020-08-22 10:39:37 +02:00
Christoph Oelckers 8b3e3b6d4a - cleaned out some waiting code.
There's still too many loops but this at least gets rid of the empty ones.
2020-08-22 10:17:24 +02:00
Christoph Oelckers c74a1f03e3 - defer FinishLevel handling to the main loop instead of doing it deep inside the game logic code. 2020-08-22 10:03:21 +02:00
Christoph Oelckers 9f682083c8 - same procedure as last time. 2020-08-22 09:41:18 +02:00
sirlemonhead 80dd794550 PCExhumed: Handle integer overflow in PlotCourseToSprite() 2020-08-22 09:40:35 +02:00
Christoph Oelckers 2a1ef00542 - redirect messages from last commit to debug mode. 2020-08-22 09:39:49 +02:00
sirlemonhead b1c9ec1f47 PCExhumed: Handle the rest of the possible overflows for ksqrt() 2020-08-22 09:38:11 +02:00
sirlemonhead fc530a362d PCExhumed: Fix Selkis boss AI stupid typo 2020-08-22 09:34:09 +02:00
Christoph Oelckers b96f12aa34 - removed Exhumed's demo loop.
It was broken already anyway and also looks like a first grade refactoring blocker.
2020-08-22 09:31:17 +02:00
Christoph Oelckers e1fd0d8d80 - replaced most of the old text and graphics display functionality in Exhumed. 2020-08-21 22:40:09 +02:00
Christoph Oelckers ca943317e7 - ported Exhumed's map to the ScreenJob interface. 2020-08-21 22:30:51 +02:00
Christoph Oelckers 4467547c8c - fixed fortune cookie message display.
Fixes #219.
2020-08-21 21:15:32 +02:00
Christoph Oelckers a3915c6861 - added missing menu sounds for SW.
Fixes #220.
2020-08-21 21:04:16 +02:00
Christoph Oelckers a4d0e47389 - Exhumed: Play sound on Lobotomy logo
Fixes #224.
2020-08-21 19:40:18 +02:00
Christoph Oelckers 0f3555fc7c - fixed speed of SW's credits.
Fixes #229.
2020-08-21 19:38:38 +02:00
Mitchell Richters b9038db433 - remove all the discrete definitions of variables from alt HUDs in Duke/RR/SW. 2020-08-21 22:20:54 +10:00
Mitchell Richters 8e10bb8856 - SW: Don't flash the weapon's ammo icon when flashing text for low ammo in DrawHUD2. 2020-08-21 10:18:31 +02:00