Commit graph

667 commits

Author SHA1 Message Date
Mitchell Richters
51a08fbaf3 - Duke: Implement WeaponSel_Alt for Duke and RR. 2020-08-29 21:27:58 +10:00
Christoph Oelckers
dc1f56e8f9 Merge remote-tracking branch 'remotes/Github_private/back_to_basics2' into Packet
# Conflicts:
#	source/core/inputstate.cpp
#	source/exhumed/src/exhumed.h
2020-08-29 01:19:48 +02:00
Christoph Oelckers
fe7f3a2f9e - handle the run key. 2020-08-29 00:57:07 +02:00
Christoph Oelckers
b9e0f493b2 - transitioned the 5 primary action keys: Open, Jump, Crouch and Fire/AltFire. 2020-08-28 23:25:08 +02:00
Christoph Oelckers
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
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
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
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
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
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
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
4e846f8d66 - do not print game init messages to the notify display. 2020-08-26 20:19:54 +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
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
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
62388e30be - fix C_SetNotifyFontScale() for RR.
Fixes #264.
2020-08-26 22:33:19 +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
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
76b05dbcd6 - Build (and games): Remove totalclocklock. 2020-08-26 09:48:56 +10: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
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
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
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
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
e7c58a5b29 - make hud_scale a floating point CVAR. 2020-08-24 21:48:47 +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
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
7859a29e95 - use global variables to track automap state
So far implemented in Duke/RR.
2020-08-24 19:31:43 +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
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
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
1a0e413d5c - use CCMDs for Exhumed's input where applicable.
- made crosshair toggle consistent across games.
2020-08-23 16:11:18 +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
d8db31bdd8 - Duke: Don't flash the weapon's ammo icon when flashing text for low ammo in RR FullscreenHUD1. 2020-08-21 10:18:31 +02:00
Mitchell Richters
2cabc4b14d - Duke: Don't flash the weapon's ammo icon when flashing text for low ammo in Duke FullscreenHUD1. 2020-08-21 10:18:31 +02:00
Mitchell Richters
4e0bef35c0 - simplify some of my math in the the fullscreen HUD drawers.
May no one ever see the original code again... :S
2020-08-21 16:23:44 +10:00
Mitchell Richters
3067bad9b9 - Blood/Duke/Exhumed/SW: Fix map CCMD so the game doesn't return to the menu if incorrect map specified (or crash in the case of Exhumed). 2020-08-21 15:11:02 +10:00
Christoph Oelckers
78bfbdb253 - Exhumed status bar work.
Unfortunately this is a bit limited due to how the data was designed.
2020-08-20 17:04:21 +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
Christoph Oelckers
5cfd427e42 - renamed local totalclock variables to reduce noise for the forthcoming timer cleanup. 2020-08-19 17:23:18 +02:00
Christoph Oelckers
94beac937d - scale down the notify display by 2 in RR.
Its fonts are double the size as the other games and this must be factored in here for HUD scaling to work as expected.
2020-08-19 16:40:54 +02:00
Christoph Oelckers
0a8f7e60b6 - fixed incompatibility of FindDistance3D with Shadow Warrior.
Fixes #200 and most likely many other issues as well.
2020-08-18 23:49:44 +02:00
Mitchell Richters
b03450f200 - Repair minor Duke3D regression where timerUpdateClock() was no longer called in newgame() once 7bb6b6a1ee removed `handleevents()'.
Repairs issue when starting new games and the clock isn't right (particularly noticable on E1L1 start).
2020-08-17 21:53:47 +10:00
Christoph Oelckers
7bb6b6a1ee - do not call handleEvents outside the main loop.
In other places I_GetEvent should be used to call the system's message pump and keep the app responsive, but all game side processing should be skipped.
2020-08-16 10:00:13 +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
8595b9fa47 -play SW's intro through the screen job framework. 2020-08-15 13:04:15 +02:00
Christoph Oelckers
3f9cc1412c - transitioning helper for screen jobs. 2020-08-15 10:55:21 +02:00
Christoph Oelckers
53cf248269 - added a few missing World Tour bits.
Looks like GDX missed the redefined new types of the old bosses.
Also guard the commentary sprites by a CVAR.
2020-08-15 10:25:30 +02:00
Christoph Oelckers
ff38cfe179 - open the in-game menu only when really inside a game and actually playing.
Fixes #182
This isn't foolproof but it's probably the best that can be done.
2020-08-14 22:41:32 +02:00
Christoph Oelckers
2403e8cb2c - fixed RRRA summary screens. 2020-08-14 22:31:54 +02:00
Christoph Oelckers
37ea207d5a - fixed another one of those stupidly badly designed iterator loops.
Fixes #176.
2020-08-14 21:49:12 +02:00
Christoph Oelckers
52ddac21b0 - fixed RR's transition to its final map. 2020-08-14 21:30:09 +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
9c40c2f6af - don't draw screenblends when not in a 3D view.
Fixed #174.
2020-08-12 22:52:41 +02:00
Christoph Oelckers
80d1b71899 - fixed sounds disappearing when the owning actor was deleted.
These sounds now get unlinked so that they can play out normally.

Fixes #119.
2020-08-12 20:15:02 +02:00
Christoph Oelckers
cbfa8abd34 - fixed some messed up conditionals in RR's switch code.
Fixes #166
2020-08-12 00:31:04 +02:00
Christoph Oelckers
4c01f1e073 - don't count chickens as kill.
Fixes #160.
2020-08-11 21:42:41 +02:00
Mitchell Richters
e083f78f8e - stop Duke screaming while falling if player puts the jet pack on.
No need to keep screaming if the player has saved themselves.
2020-08-11 15:40:02 +02:00
Christoph Oelckers
6a10a7f266 - changed the rules for dimming the menu to be more clear
It will no longer depend on the game state when the menu was opened but the current game state - only on the dedicated menu screen there's no dimming - everywhere else a dim gets applied.

Also renamed GS_DEMOSCREEN to GS_MENUSCREEN for clarity
2020-08-11 00:46:27 +02:00
Christoph Oelckers
000c00dc91 - block game input during intro cutscenes
Fixes #158
2020-08-11 00:42:08 +02:00
Christoph Oelckers
ca740ad709 - increase volume for summary screen's speeches in Duke.
Fixes #125
2020-08-10 20:59:04 +02:00
Mitchell Richters
a3a7a8f6be - repeat of cf548e055e for RR. 2020-08-09 16:41:42 +10:00
Mitchell Richters
fb6a58904a - Set glcycle_t class as active when stat fps is active.
Fixes #122.
2020-08-09 16:39:15 +10:00