Commit Graph

5414 Commits

Author SHA1 Message Date
Evan Ramos 81f85ee480 SW: Fix regression causing the last heat seeker to be a normal missile
It was caused by the fix for crashing when firing outside the map.

Also port said fix to the bunny rockets.
2020-08-12 19:16:25 +02:00
Christoph Oelckers 09a3567f14 - fix some more sloppiness with Blood's global game state.
Fixes #171.
2020-08-12 19:11:16 +02:00
Christoph Oelckers 2dad86a304 - made some adjustments to DMessageBoxMenu to handle screens that must close the menu before performing their option.
Fixes #173. The "End Game" menu option needs this.
2020-08-12 19:04:19 +02:00
Christoph Oelckers 2d545767ef - completely clear all texture data when setting a frame size.
SMK tries to draw a texture from it before the first frame has been rendered. This ensures that it gets a fully black frame.
Fixes #167.
2020-08-12 01:32:05 +02:00
Christoph Oelckers 05fbfa3f25 - Blood: When starting a new game, reset the global flag immediately.
Otherwise the game can get stuck in an endless loop when trying to set up a level.
Fixes 168.
2020-08-12 01:16:29 +02:00
Christoph Oelckers 57edd370a7 - fixed: When quitting the game, first clear the menu.
This is to ensure that the menu stack is empty.
Fixes 170
2020-08-12 01:15:03 +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 83796e9eed - changed map startup order to first play a cutscene before loading the level.
Something with the timers is screwing up here if a cutscene gets played - Blood's timer code is even worse than Duke's.
Fixes #151.
2020-08-11 23:21:08 +02:00
Christoph Oelckers 4c01f1e073 - don't count chickens as kill.
Fixes #160.
2020-08-11 21:42:41 +02:00
Christoph Oelckers 0686928ee8 - fixed transition to credits in blood.
Fixes #150.
2020-08-11 20:26:50 +02:00
Christoph Oelckers fcc271ed7b - treat 100 as maximum volume for 2D sounds when coming from the SFX data.
Without this, many sounds are way too quiet, e.g. at tne beginning of E2M1 or the end of E3M7.

Fixes #146.
2020-08-11 20:17:56 +02:00
Christoph Oelckers 85364c2bb6 - let all video players respect the SoundEnabled setting.
Fixes #164.
2020-08-11 19:52:54 +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
Mitchell Richters 7243c08379 - stop weapon from moving up and down while `cl_weaponsway 0` is set.
* Default zDelta is -2048, so only add (zDelta / 128.) if `cl_weaponsway 1` and add (-2048. / 128.) otherwise.
* Fixes #134 a bit better.
2020-08-11 08:40:42 +10:00
Christoph Oelckers 1d03d3d6a2 - fixed HUD meter and crosshair default size.
Fixes #137
2020-08-10 23:06:24 +02:00
Christoph Oelckers 7a2b1ee0aa - moved Blood's updatePauseStatus call to the main loop.
Fixes #149
2020-08-10 22:44:24 +02:00
Christoph Oelckers 030ca6f75d - reset the timer after the initial cutscene in Blood 2020-08-10 22:22:27 +02:00
Christoph Oelckers 070f04093a - clear the buffer for the cutscene textures when starting a new cutscene.
Otherwise the first frame may display garbage.
2020-08-10 22:16:02 +02:00
Christoph Oelckers 97b202955c - strip the drive letter off WAV names for cutscenes. 2020-08-10 22:11:00 +02:00
Christoph Oelckers 5165834441 - handle GS_FULLCONSOLE in Blood 2020-08-10 22:02:58 +02:00
Christoph Oelckers cf5be7fbfa - default gl_control_tear to false.
This doesn't work that well with animated cutscenes.
2020-08-10 22:02:37 +02:00
Christoph Oelckers e93ec79608 - Blood: restart music after level warp. 2020-08-10 21:41:16 +02:00
Christoph Oelckers 3ba5ca46c9 - fixed font alignment in Blood 2020-08-10 21:14:42 +02:00
Christoph Oelckers ca740ad709 - increase volume for summary screen's speeches in Duke.
Fixes #125
2020-08-10 20:59:04 +02:00
Christoph Oelckers b1c8046470 - fixed dimming checks for menu.
Now with proper game state management this can be done better.
2020-08-10 20:43:51 +02:00
Christoph Oelckers 28b9aafe69 - disable translucency for menu text shadows.
It didn't look that great.
2020-08-10 20:27:00 +02:00
Christoph Oelckers 7317caf567 - do not loop the scream sound on the summary screen.
Fixes 143.
2020-08-10 20:24:49 +02:00
Christoph Oelckers 8a2d34cceb - fixed typo in BUNZ cheat. 2020-08-10 20:22:12 +02:00
Christoph Oelckers ddf238ff19 - fixed cheat args parser.
Fixes 139
2020-08-10 20:18:21 +02:00
Mitchell Richters 09f347353a - fix `cl_weaponsway()` for Blood.
Fixes #134.
2020-08-10 22:08:44 +10:00
Mitchell Richters db6d2e4d89 - fix `cl_viewbob()` for Blood.
Fixes #134.
2020-08-10 22:08:44 +10:00
Mitchell Richters 4c74c172e3 - fix screenjob.cpp `PlayVideo()` returning after stripping drive letter without checking whether it was able to re-open the file thereafter successfully.
Fixes #128.
2020-08-10 21:15:17 +10:00
Christoph Oelckers d3df4e580c - do not restart one-page image scrollers with Enter
Instead go back one menu level.

Fixed #129
2020-08-10 01:12:53 +02:00
Christoph Oelckers c7e664d3a6 - animate status bar elements
Fixes #127
2020-08-10 00:36:50 +02:00
Christoph Oelckers 0492c5f4d3 - optimized reverb settings.
Fixes #124
2020-08-09 13:26:48 +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
Mitchell Richters cf548e055e - clamp player sprite's xvel between 0 and 512 to stop it going into the negative with rapid posx/posy changes due to teleporting.
* With steroids and a controller (controllers have a slightly higher max fvel/svel than a keyboard), I could not get xvel to exceed 503.
* Fixes #123.
2020-08-09 16:24:48 +10:00
Christoph Oelckers d731bf4e57 - fixed typo in floor damage check.
This rendered the boots ineffective on lava.
Fixes #114
2020-08-07 23:30:08 +02:00
Christoph Oelckers dfa3519ebc - stop screaming sound when landing.
Fixes #116
2020-08-07 22:20:29 +02:00
Christoph Oelckers 596367f10f - Screenblend fixes. 2020-08-07 22:00:43 +02:00
Christoph Oelckers f8c65839f0 - fixed broken jumping.
This was a nasty, but typical case for Duke where a variable did not contain what the name said and was carried along way too much code.

Fixes #112
2020-08-07 21:59:11 +02:00
Christoph Oelckers 4b69a181c3 - use symbolic constants for some statnums 2020-08-06 20:54:51 +02:00
Christoph Oelckers 4cfeb9b2cc - fixed bouncing flame in VACA2.
Taking a hint from EDuke32 here.
2020-08-06 20:54:02 +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
Christoph Oelckers 9060abbafd - 8 more SW headers gone. 2020-08-06 00:18:45 +02:00
Mitchell Richters bbe05b0c81 - harden `FinalizeInput()` with else blocks on each if statement after checking whether all movement is blocked.
Fixes #105.
2020-08-06 07:25:04 +10:00
Christoph Oelckers 3e8ff96e6b - added workaround for DukeDC's ending cutscene which was abusing undefined behavior in the original code. 2020-08-05 22:57:45 +02:00
Christoph Oelckers 514c029e47 - this wasn't supposed to get committed. 2020-08-05 22:40:47 +02:00
Christoph Oelckers a30933871e - fixed most end of game cutscenes. 2020-08-05 22:36:39 +02:00
Christoph Oelckers ba3c353198 - use the correct code for the devastator in operateweapon.
The code present was from EDuke 2.1, I have no idea if it ever worked there. It was replaced with JFDuke's.
Fixes #104.
2020-08-05 22:36:38 +02:00
Christoph Oelckers 72806e27eb - cleanup work on SW
* consolidating smaller headers to reduce number of files
* remap all unmapped keyboard checks to corresponding buttons
2020-08-05 22:36:38 +02:00
Christoph Oelckers 4a0e155637 - fixed starting of bonus screen music.
It must not be done in the constructor of the screen but when actually playing the first frame.
2020-08-05 22:36:38 +02:00
Christoph Oelckers 4fef66c78a - SW script parser cleanup 2020-08-05 22:36:37 +02:00
Mitchell Richters a3dfa58662 - correct typo in Blood text string because I'm OCD like that. 2020-08-05 23:17:57 +10:00
Mitchell Richters ddd30e742c - ensure player's angle input while playing with `cl_syncinput 0` is scaled appropriately when sector's lotag is ST_2_UNDERWATER. 2020-08-05 22:57:47 +10:00
Mitchell Richters d1a68421bd - fix `cl_weaponsway` for Duke. 2020-08-05 20:04:14 +10:00
Mitchell Richters 2919cdcb44 - clamp the calculated `horizAngle` to -180/180 to stop overflowing if player moves the mouse stupidly quick while `cl_syncinput 1` is set. 2020-08-05 19:56:49 +10:00
Mitchell Richters 03bccb3a06 - functionalise significant portions of 0ee3ab4df8. 2020-08-05 19:24:42 +10:00
Mitchell Richters 0142449d95 - clamp angle velocity as originally intended. 2020-08-05 17:59:46 +10:00
Mitchell Richters 736811e864 - properly tune `sethorizon()` so that 'frominput' bool can be removed. Returning to centre function is essentially consistent between input states now. 2020-08-05 17:59:01 +10:00
Mitchell Richters 0ee3ab4df8 - revert most of e474ebc2b7 and adjust player's angle/horizon in a way that's compatible with `cl_syncinput 0` and `cl_syncinput 1`.
Previous attempts at leveraging `applylook()` and `sethorizon()` in different spots had pros and cons, but ultimately changing where these functions were called from was a net negative and had hard to diagnose issues.

Maintaining two types of player input is considerable work. Lessons have been learned and will be beneficial when it comes time to re-doing the other games. Ideas from PR #98 for optimising RRRA vehicle experience while `cl_syncinput 0` is in use have been implemented here.
2020-08-05 17:53:41 +10:00
Mitchell Richters 65428a2d1a - revert ea98978ae7 and baed75ff8a, and do in a more compatible way with synchronised and unsychronised input. 2020-08-05 17:43:14 +10:00
Mitchell Richters bb0129c331 - add missed savegame addition when doing 9f8d50c0a1. 2020-08-05 17:39:02 +10:00
Mitchell Richters 9f8d50c0a1 - add horizAdjust after processing pitch adjustments and call `sethorizon()` in `processinput_d()` after `dokneeattack()`.
Fixes #101.
2020-08-05 14:23:07 +10:00
Christoph Oelckers 454e0e36c9 - added a sound for advancing multi-screen menus.
Fixes #100.
2020-08-05 00:32:29 +02:00
Christoph Oelckers f363aca1b7 - fixed the crane in Duke3D.
Fixes #92
2020-08-05 00:28:14 +02:00
NY00123 22b492a5b3 SW: If a saved load is loaded at a point which is right after killing
a boss, ensure that FinishTimer and FinishAnim are appropriately
updated. This commit bumps GameVersion.
Additionally, the set of FinishAnim to 0 in NewLevel had
to move to a different location (InitLevelGlobals2), so
it doesn't override the value stored in the saved game.

# Conflicts:
#	source/sw/src/game.cpp
2020-08-04 20:11:37 +02:00
Mitchell Richters 157933e902 - fixed regression from b9eef9c6a3 where the angle wouldn't apply if horizon was specified. 2020-08-04 23:13:22 +10:00
Mitchell Richters b9eef9c6a3 - make ang and horiz optional on each game's `warptocoords` CCMD as suggested in commentary for 1dc6edfa56. 2020-08-04 22:33:17 +10:00
Mitchell Richters 8817914744 - add printcoords as an `ADD_STAT()` define and move string code into static function for shared use between CCMD and ADD_STAT. 2020-08-04 21:56:32 +10:00
Mitchell Richters b08d571be9 - create Blood dynamic CCMD `warptocoords`.
* The setting of the player's horizon/viewangle probably still requires work, but warping to pos x/y/z works fine.
2020-08-04 19:10:43 +10:00
Mitchell Richters a9b05eff86 - fix coolie death issues raised in https://forum.zdoom.org/viewtopic.php?f=340&t=69254 in manner suggested by OP. 2020-08-04 19:02:26 +10:00
Mitchell Richters 3e44d850b3 - fix issues with Exhumed and SW `warptocoords` CCMDs when cherry-picking from public branch. 2020-08-04 18:04:44 +10:00
Mitchell Richters 24d847f4ec - create Duke dynamic CCMD `warptocoords`. 2020-08-04 18:04:02 +10:00
Mitchell Richters af830518a6 - create Exhumed dynamic CCMD `warptocoords`. 2020-08-04 17:53:37 +10:00
Mitchell Richters 1dc6edfa56 - create SW dynamic CCMD `warptocoords`. 2020-08-04 17:53:34 +10:00
Mitchell Richters 38fa10326d - create engine CCMD `printcoords`. 2020-08-04 17:53:31 +10:00
Mitchell Richters 2bdf5f38e5 - remove code meant to have been deleted when performing e474ebc2b7. Makes `processinput_r()` match `processinput_d()`. 2020-08-04 17:13:28 +10:00
Mitchell Richters bc103595ce - force `scaleAdjust` to be 1 when `cl_syncinput` is 1.
* Above calculation has some micro variances to it which were leading to strange behaviour like the bike's tilting not working properly with `cl_syncinput 1`.
2020-08-04 17:11:32 +10:00
Mitchell Richters 293c1af4c2 - interpolate `p->TiltStatus` for RR(RA). 2020-08-04 17:11:00 +10:00
Mitchell Richters cdb8e5b94e - do these in the order that `processinput()` does them in. 2020-08-04 16:30:20 +10:00
Mitchell Richters a2a668cd7b - fix vehicle turning issues following `cl_syncinput` changes/fixes in e474ebc2b7. 2020-08-04 16:28:57 +10:00
Mitchell Richters cb93560a4a - fix regression from e474ebc2b7 by which the player could adjust their angle on a camera while `cl_syncinput 0` (default) was set.
* Issue doesn't occur with `cl_syncinput 1` because `processinput()` returns when p->newowner >= 0 before `applylook()` is called from within it.
* Fixes #96.
2020-08-04 13:02:19 +10:00
Christoph Oelckers 41cc5cac34 - fixed responsiveness issues with Blood's weapon selection.
This shouldn't really do anything and might point to some deeper implementation flaw.
2020-08-04 00:06:36 +02:00
Christoph Oelckers b0c1140649 - fixed bad default for viewDrawText's alpha.
Like so many other things in Build the concept of alpha is hopelessly stupid and really makes no sense, and this was carried over here.
2020-08-03 21:26:19 +02:00
Christoph Oelckers 4bab061bd0 - removed some dead code from SW. 2020-08-03 20:53:00 +02:00
Christoph Oelckers d526c6401f - use the generic cheat system for Blood. 2020-08-03 20:51:31 +02:00
Christoph Oelckers d729bc898c - fixed character counter in MakeUTF8. 2020-08-03 20:18:33 +02:00
Christoph Oelckers 724c811de3 - Moved message storage to the map records. 2020-08-03 20:16:32 +02:00
Christoph Oelckers 35a5c4e23c - undid hardcoded coupling of Mapinfo slots with episode/level pairs in Blood.
This both lifts the imposed limit of 16 levels and will allow dynamic management of global mapinfo data.
2020-08-03 20:11:30 +02:00
Christoph Oelckers d87f0dc0b0 - uninitialized variable fixed 2020-08-03 20:07:23 +02:00
Christoph Oelckers 0036402be8 - removed most of the network code in Blood.
Mainly to expose the parts that still get used in single player because there's some problems here that need addressing.
ENet is also gone now.
2020-08-03 20:06:27 +02:00
Christoph Oelckers dea0804f9a - how could this compile? 2020-08-03 19:14:33 +02: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
Christoph Oelckers 3c8da8c421 - moved LocalKeys to controls.cpp
to consolidate input code in one file.
2020-08-03 19:08:49 +02:00
Mitchell Richters 7493d4e334 - remove unused getters from `player_struct`. 2020-08-03 23:01:53 +10:00
Mitchell Richters aead65183c - draw the crosshair using `getHalfLookAng()` inline function, making use of its double precision and optionally interpolated result. 2020-08-03 22:56:43 +10:00
Mitchell Richters d3d9bb0823 - partially revert 19e4393a4f by adding the player's mouse input after calculating the true pitch of `p->q16horiz`.
* Need to add `p->horizAdjust` in with `p->q16horiz` because the values passed to that variable are the same as what would have been directly added to `p->q16horiz` in `processinput()`.
* Leaving mouse input to apply after calculating the pitch lets us take advantage of the calculated pitch's accuracy to provide consistent mouse input across the pitch's range.
2020-08-03 22:39:09 +10:00
Mitchell Richters 1556e80dd2 - apply same RR horizon workaround from e474ebc2b7 for when `cl_syncinput 1` is set for angle as well. 2020-08-03 22:31:44 +10:00
Mitchell Richters 19e4393a4f - add all the horizon values before converting into true pitch inside `sethorizon()`. 2020-08-03 22:13:10 +10:00
Mitchell Richters 573cb363ae - add new weapon interpolation variable from `player_struct` into savegame code. 2020-08-03 21:26:28 +10:00
Mitchell Richters e474ebc2b7 - multiple input fixes for both games, and for both `cl_syncinput 0` and `cl_syncinput 1` modes.
* For RR, `processweapon_r()` was performing angle and horizon changes directly which provided a harsh experience with the default `cl_syncinput 0` mode.
* Added `angAdjust` variable to `player_struct` for use with ticrate angle adjustments.
* Renamed `horizAngleAdjust` to `horizAdjust` so that there is less confusion with the new `angAdjust` variable.
* Removed `horizSkew` variable, can just use `horizAdjust` for this.
* Replaced all calls to `addang()` and `addhoriz()` with the appropriate additions/subtractions to `angAdjust` and `horizAdjust` respectively.
* Removed now unused `addang()` and `addhoriz()` setters from `player_struct`.
* Define new function `resetinputhelpers()` to eliminate code duplication between `processinput_d()` and `processinput_r()` functions.
* Remove `p->q16ang` and `p->q16horiz` direct setting from `FinalizeInput()`.
* Change `applylook()` to accept an `fixed_t adjustment` for changing the player's angle. This can either be `input.q16avel` when `cl_syncinput` is 0, or `sync[snum].q16angvel` when `cl_syncinput` is 1.
* Change `sethorizon()` to accept an `fixed_t adjustment` for changing the player's horizon. This can either be `input.q16horz` when `cl_syncinput` is 0, or `sync[snum].q16horz` when `cl_syncinput` is 1.
* Re-work `sethorizon()` to always adjust `p->q16horiz` using the true pitch code. This closer resembles the EDuke32 implementation as per SVN 7342.
* Re-work returning to center to work off the true pitch code and always ensure that the player returns to center.
* Implement work-around for RR where we need to call `sethorizon()` before the call to `fi.doincrements()` like the original game, but also after the call to `processweapon()` to apply any angle or horizon changes due to weapon recoil, etc. We work around this by calling `sethorizon()` from within `doincrements_r()` only if `cl_syncinput` is 1 and only if `doincrements_r()` is to return 1.
2020-08-03 21:19:45 +10:00
Mitchell Richters d9fab07c31 - interpolate `p->hard_landing` for RR. 2020-08-03 17:27:09 +10:00
Mitchell Richters c600295c93 - apply same fix from c63564eb7a for returning interpolated value for the player's `q16horiz - q16horizoff` if `cl_syncinput` is true.
* Also changed `gethalflookang()` to camel case `getHalfLookAng()` for easier reading.
* Also broke a very long if statement down into smaller chunks for readability.
2020-08-03 17:06:28 +10:00
Mitchell Richters c63564eb7a - replace `lookanghalf()` player_struct getter with inline that can accept `cl_syncinput` as a bool for whether to return an interpolated calculation or not.
New HUD was being let down by using an uninterpolated `q16look_ang` regardless of whether `cl_syncinput` was true.
2020-08-03 16:27:14 +10:00
Mitchell Richters 6bd050e201 - fix some interpolation harshness with `p->weapon_pos`. 2020-08-03 15:06:25 +10:00
Mitchell Richters 7efa905a01 - fix some interpolation harshness with `p->kickback_pic`. 2020-08-03 15:06:25 +10:00
Mitchell Richters 531df48d38 - interpolate `p->hard_landing` for Duke 3D. 2020-08-03 15:06:25 +10:00
Mitchell Richters 43ff42b330 - interpolate `p->random_club_frame` for Duke 3D. 2020-08-03 15:06:25 +10:00
Mitchell Richters 038039eb3f - interpolate `p->kickback_pic` for Duke 3D. 2020-08-03 15:06:25 +10:00
Mitchell Richters 8cc4b5062a Revert "- remove duplicate line.". In hindsight, I believe this was by design.
This reverts commit 6fd6926d8d.
2020-08-03 15:06:25 +10:00
Mitchell Richters 6ad3237b62 - backup `p->kickback_pic` in prep for interpolation and tidy up other weapon interpolation variables. 2020-08-03 15:06:25 +10:00
Mitchell Richters 11a10c1d87 - change `calc_smoothratio()` inline function from int to double that was missed in 0c12436092. 2020-08-03 11:57:39 +10:00
Mitchell Richters 034d6e129a - always calculate smoothratio while paused, but only return it during play. This is so the time keeps elapsing and you don't get a large delta between the first call back to `CalcSmoothRatio()` after the previous call. 2020-08-03 11:54:59 +10:00
Mitchell Richters 5792a2389a - consistency cleanup with a use of `calcSinTableView()` use within hudweapon_d.cpp. 2020-08-03 11:07:55 +10:00
Mitchell Richters 80291f9cb7 - For RR, pass vehicle TiltStatus through to backend as the double that it is. 2020-08-03 11:06:23 +10:00
Mitchell Richters 8526bd6a17 - interpolate weapon HUD for RR and make full use of `calcSinTableValue()`'s double precision. 2020-08-03 11:05:41 +10:00
Mitchell Richters 48e4bccc6d - oops. Missed change of `hudDraw()` `zDelta` from int to double while implementing ae2d2c7948. 2020-08-03 10:23:15 +10:00
Mitchell Richters 348acf95e0 - change division of delta between currentTime and lastTime from 8 to 72 to ensure smoothratio doesn't clip at 65536.
* Divisor of delta is there so smoothratio always starts off with some kind of value. After 10 minutes at 1100 fps, closest final result to 65536 was:

ototalclk: 4573
totalclk: 4576
gametics: 33.333 ms
elapsedTime: 33.331 ms
ratio: 0.999938
result: 65531.941356
2020-08-03 10:00:06 +10:00
Mitchell Richters 70794df76c - remove bitwise & operations on calls to `calcSinTableValue()` since they're no longer necessary, and remove last use of `sintable[]` from hudweapon_d.cpp. 2020-08-03 09:19:14 +10: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 8a31e96602 - use all available precision to render Blood's weapon animations mpre smoothly, instead of throwing it away by needlessly storing it in some integer fields. 2020-08-03 00:25:40 +02:00
Christoph Oelckers be9402c4e0 - fixed Blood not accepting any input after loading a saved game. 2020-08-03 00:10:18 +02:00
Christoph Oelckers 38616d90a3 - renamed some members of Blood's EPISODEINFO struct. 2020-08-02 23:47:21 +02:00
Christoph Oelckers e434df5328 - always play menu sounds by calling M_MenuSound to check the menu_sounds CVAR. 2020-08-02 22:16:26 +02:00
Christoph Oelckers d083e12967 - added the "back" sound to the menu. 2020-08-02 22:14:58 +02:00
Christoph Oelckers 8acc4101be - simplified calcSinTableValue and inlined it.
There's no need for all this magic voodoo - the sin function already returns the proper values all by itself.
2020-08-02 22:03:22 +02:00
Christoph Oelckers 9606601554 - wraooed "q16look_ang / (2. * FRACUNIT)" in an inline function.
No need to write it out each time, this wpuld be a nightmare if it ever had to be refactored.
2020-08-02 21:45:57 +02:00
Christoph Oelckers 6a305748ff - removed some C cruft from compat.h. 2020-08-02 21:25:03 +02:00
Mitchell Richters 0bcb37860a - interpolate `p->weapon_pos` for smooth switching of weapons. 2020-08-02 21:20:54 +02:00
Mitchell Richters 85dcffc442 - use new `fmulscale16()` static inline for high precision interpolation in place of manual code. 2020-08-02 21:20:54 +02:00
Mitchell Richters 3d165ee182 - extend mulscale/divscale pragmas with double versions of each. 2020-08-02 21:20:54 +02:00
Mitchell Richters 9c8593018b - define new function `calcSinTableValue()` to calculate an equivalent `sintable[]` entry.
* Returns a true double result.
* Also supports fractional input for fractional input. That is, if `sintable[1]` = 50 and `sintable[2]` = 100, `calcSinTableValue(1.5)` = 75.
* Increased precision of `BANG2RAD` define to use double and not float.
* As such, revert addition of `sintablef[]`.
2020-08-02 21:20:54 +02:00
Mitchell Richters abb23a7bd0 - fix remaining interpolation issue with weapon swaying when taking off again from a stand-still. 2020-08-02 21:20:53 +02:00
Mitchell Richters 6fd6926d8d - remove duplicate line. 2020-08-02 21:20:53 +02:00
Mitchell Richters 11b3f5a78a - increase precision of local variable `x` for `displaypistol()`. 2020-08-02 21:20:53 +02:00
Mitchell Richters 184465460e - make full use of `sintablef[2048]`. 2020-08-02 21:20:53 +02:00
Mitchell Richters 977ddc5aa8 - make full use of Q16.16 resolution for player's angle and horizon values. 2020-08-02 21:20:52 +02:00
Mitchell Richters 3a4a224877 - interpolate `p->weapon_sway`. 2020-08-02 21:20:52 +02:00
Mitchell Richters 4499e05b06 - pass `smoothratio` through to `displayweapon()`. 2020-08-02 21:20:52 +02:00
Mitchell Richters 0c12436092 - change returned value for `CalcSmoothRatio()` from int to double and pass through to `displayrest()` for future use with `displayweapon()`.
* `displayrooms()` ultimately should be adjusted as well. For now, just relying on integer truncation as this is just a proof of concept.

# Conflicts:
#	source/core/gamecontrol.cpp
#	source/core/gamecontrol.h
2020-08-02 21:20:52 +02:00
Mitchell Richters 4301706e00 - promote `fclamp()` and `fclamp2()` to double. 2020-08-02 21:20:06 +02:00
Mitchell Richters 7b8e40c7e1 - create sintable `sintablef[2048]` as sintables of doubles.
* Also change BANG2RAD define to be a double and not a float.
2020-08-02 21:20:06 +02:00
Christoph Oelckers 18c3d9b240 - get the frame time right at the start of the frame, not when performing interpolations.
This is to factor think time out of the time span between frames and to avoid changes if the smoothratio gets calculated multiple times.
2020-08-02 21:16:01 +02:00
Mitchell Richters 3861064f62 - use 1/8 of delta time as initial elapsed time when calculating smoothratio on a new ototalclk.
* Pushes final result closer to 65536 and always ensures smoothratio never starts at 0.
2020-08-02 20:57:09 +02:00
Mitchell Richters 4830989d32 - remove all code used to get current display's refresh rate.
* Serves no purpose in Raze or GZDoom and appears to only have been added to the backend to facilitate the older interpolation code that was excised in 893686709b.
2020-08-02 20:57:09 +02:00
Mitchell Richters f8952d5cae - directly cast `steady_clock::now()` to nanoseconds instead of microseconds then multiplying by 1000. 2020-08-02 20:57:08 +02:00
Mitchell Richters 5000fde281 - restore legacy interpolation path behind CVAR `cl_legacyintrpl`.
* Hoping the old path being available will allow the new code to be merged.
* Applied offset to sum of `(totalclk - ototalclk)` of 0.5 to ensure calculated smoothratio under legacy path always returns a value.
* For the above, consider Duke 3D with 4 game tics per ticrate, the returned values would be:
0
16384
32768
49152
* With offset of 0.5, the following values are returned depending on how far advanced `totalclk` is from `ototalclk`:
8192
24576
40960
57344
2020-08-02 20:57:08 +02:00
Mitchell Richters 0aca26e197 - determine `smoothRatio` immediately after a potential change to `ototalclock` has occurred. 2020-08-02 20:57:08 +02:00
Mitchell Richters 52d9fd4cda - add `cl_debugintrpl` CVAR to print interpolation information to the console.
* Also revert back to use of `xs_CRoundToInt()` that was accidentally removed previously.
2020-08-02 20:57:08 +02: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 733f3aa490 - increase granularity of `CalcSmoothRatio()`. 2020-08-02 20:57:07 +02:00
Christoph Oelckers 00ecea47aa - use CCMDs for input in Blood where appropriate. 2020-08-02 20:44:37 +02: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
Christoph Oelckers a9820abcae - migrated the remaining 2D content in Blood away from rotatesprite. 2020-08-02 19:00:32 +02:00
Christoph Oelckers 4e9ea9ef60 - fixed bad merge from some time agp. 2020-08-02 18:12:43 +02:00
Christoph Oelckers 1392f4db01 - handle the view frame with backend features. 2020-08-02 18:02:13 +02:00
Christoph Oelckers fc390e244f - background for text screens. 2020-08-02 17:45:03 +02:00
Christoph Oelckers 1150e3ee0d - removed unused stuff from screen.cpp and deleted screen.h. 2020-08-02 13:54:36 +02:00
Christoph Oelckers 7846178130 - missed this... :( 2020-08-02 13:53:14 +02:00
Christoph Oelckers 3a32e8840f - ported Blood's status bar to the Status bar class.
Now it allows downscaling just like Duke's.
2020-08-02 13:35:34 +02:00
Christoph Oelckers b259b94300 - implemented status bar scale control for Blood. 2020-08-02 08:48:23 +02:00
Christoph Oelckers cc8798f6e2 - preparations for rendering Blood's status bar through the Statusbar class. 2020-08-02 08:39:51 +02:00
Christoph Oelckers 49a25c417b - split Blood's status bar code off into its own file. 2020-08-01 21:23:33 +02:00
Christoph Oelckers ec846a3e63 - fixed shadows on Blood's text. 2020-08-01 20:07:32 +02:00
Christoph Oelckers 9dac66b6f0 - fudging for the broken FIRE animation.
Unfortunately the only thing that can be done here from inside the engine is to increase the likelihood of the animation actually starting.
Ideally the broken script should be replaced but with the way CON replacements are done this is not possible.
2020-08-01 17:54:38 +02:00
Christoph Oelckers 4332d02885 - fixed sound playback for doors etc.
The play code locked out the MUSICANDSFX actor but never properly checked for the sound being finished.
Fixes #87
2020-08-01 11:56:02 +02:00
Christoph Oelckers 76ba45ac8d - fixed the reactor for good.
Fixes #70
2020-08-01 09:55:48 +02:00
Christoph Oelckers f75d30d858 - partial reactor fix.
This fixes the position of the debris - but there's still something else as the lightning beam still doesn't get removed.
2020-08-01 01:04:17 +02:00
Christoph Oelckers c7c59d33ff - always set the spam timer when a quote is supposed to be printed, even if it gets rejected. 2020-07-31 21:16:07 +02:00
Christoph Oelckers 6d24a20f5c - QUOTE_DEAD may never repeat.
This gets spammed hard enough to get past the timer filter.
2020-07-31 21:14:43 +02:00
Christoph Oelckers 2f94ae8160 - removed Blood's message display.
We'll use the common one in c_console from now on.
2020-07-31 21:06:56 +02:00
Christoph Oelckers a12cdf849e - fixed text in the menu 2020-07-31 21:05:57 +02:00
Christoph Oelckers 7bf3d5186f - Blood font refactoring. 2020-07-31 21:05:09 +02:00
Christoph Oelckers 5bae2fcef5 - moved global include out of namespace. 2020-07-31 21:04:28 +02:00
Christoph Oelckers 713c41c0a9 - fixed bad ordering of directives. 2020-07-31 21:03:23 +02:00
Christoph Oelckers b6cb0ce1a1 - consolidated shade to light conversion 2020-07-31 20:58:55 +02:00
Christoph Oelckers b308e730ea - started replacing rotatesprite with DrawTexture.
As an added bonus, thia now allows stretching the menu caption box for longer texts, rotatesprite could not do that.
2020-07-31 20:39:02 +02:00
Mitchell Richters f0e0a3db41 - quick and dirty fix to get SW menu input cranking again (mostly for testing PR #77 under SW since it's the only game with a clock of 120/3). 2020-07-31 16:26:16 +10:00
Mitchell Richters 24b0e4438e - Reset `p->oq16horizoff` to `p->q16horizoff` in `resetplayerstats()`. 2020-07-31 14:23:58 +10:00
Mitchell Richters ecf8bb699a - Reset `p->oq16look_ang` to `p->q16look_ang` in `resetplayerstats()`. 2020-07-31 14:21:10 +10:00
Christoph Oelckers d0909b8224 - calculate proper distances in the sound code.
The original code didn't factor in that z has a different scale than x and y and use a function  with severe precision issues.
Fixes #81
2020-07-31 00:08:39 +02:00
Christoph Oelckers 0ac11955df - improve message spam prevention. 2020-07-30 21:09:11 +02:00
Christoph Oelckers 6980c64f7b - BONUS_SPEECH1-4 are not continuous.
Fixes #83
2020-07-30 18:36:52 +02:00
Mitchell Richters 02dfa10d27 - remove redundant if statement left over from 2260c2353d. 2020-07-30 08:49:01 +10:00
Mitchell Richters 2260c2353d - re-factor interpolation backups into discrete functions for calling from multiple places.
Fixes #66.
2020-07-30 08:24:27 +10:00
Christoph Oelckers 5ed624a48d - Blood: stop music before showing the summary screen. 2020-07-29 23:39:37 +02:00
Christoph Oelckers 347ed51036 - refactored Blood's main loop.
* moved Smacker video playing code into the backend, so now all games can play all supported video formats
* logos and level intro/exit videos use ScreenJob
2020-07-29 23:18:08 +02:00
Christoph Oelckers 0958bccade Disabled all adult censoring in Duke and RR.
Aside from being "authentic" the parental lock is just a stupid feature with often unwanted side effects.
2020-07-29 22:43:06 +02:00
Christoph Oelckers 5faf202b97 - fixed missing speech at the end of E1L2.
This was caused by a broken check for adult mode.
Fixes #33.
2020-07-29 22:40:29 +02:00
Christoph Oelckers e9b3e8ae09 - when in single player, always play talk sounds from the player actor.
It seems some places manage to play these sounds from undefined actors that may or may not be in range.
Fixes #75
2020-07-29 22:26:14 +02:00
Christoph Oelckers a861126657 - fixed incorrect sprite being passed to reactor() function. 2020-07-29 20:59:32 +02:00
Christoph Oelckers bd3b2bc5bf - always align the "loogies" to a virtual 320x200 screen to render them consistently. 2020-07-29 20:04:57 +02:00
Christoph Oelckers fb184388a2 - un-spam the "protective boots on" message
Fixes #72
2020-07-29 19:38:21 +02:00
Christoph Oelckers 5776f69d92 - transfer palette to gibs for LIZTROOP
EDuke did it for all actors - not sure if that is right. Needs checking.
2020-07-29 19:31:24 +02:00
Mitchell Richters 9f391c3e9f - possible fix for continual rotscrnang thrashing when dead that was reported in #66. 2020-07-29 18:57:06 +10:00
Mitchell Richters 9c1faaa3ac - scaling consistency changes from uplifting Redneck Rampage HUDs. 2020-07-29 18:36:50 +10:00
Mitchell Richters d72e69ac55 - FullscreenHUD1 tweaks for Redneck Rampage. 2020-07-29 18:36:23 +10:00
Mitchell Richters f2fca857be - FullscreenHUD2 tweaks for Redneck Rampage. 2020-07-29 15:38:56 +10:00
Mitchell Richters b77a0809fa - Statusbar tweaks for Redneck Rampage. 2020-07-29 15:09:08 +10:00
Mitchell Richters 742fab83df - properly scale imgWeap x position based on length of ammo string.
* Simple divisor based on length of string was insufficient, ammo sprite was too close to ammo count when ammo string length was 1-2.
* Using chain-cannon with ammo levels at 100, 10 and 1, at 2560x1440 the sprite is always 48px from the 1 in the ammo count.
2020-07-29 14:13:35 +10:00
Mitchell Richters 72c4a5281c - move inventory item used amount down 0.5px in Duke FullscreenHUD1 to perfectly line it up. 2020-07-29 09:17:57 +10: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
Christoph Oelckers 10e4482245 - fixed counter on summary screen. 2020-07-28 22:37:11 +02:00
Mitchell Richters c26ab9fc36 - left-align health and armor values. Proportionally space ammo sprite depending on length of ammo string (15px * format.Len()). 2020-07-28 22:19:13 +02:00
Mitchell Richters 23c24b01a4 - new alignment for Fullscreen HUD1. 2020-07-28 22:19:13 +02:00
Mitchell Richters 6626323e3e Revert "- possible fix for continual rotscrnang thrashing when dead that was reported in #66." What was I thinking?
This reverts commit e019939590.
2020-07-29 05:50:19 +10:00
Mitchell Richters 9b51e29d20 Revert "Revert "- removed duplicate application in moving down code for the jetpack.". What was I thinking?"
This reverts commit 3b522e4c50.
2020-07-29 05:50:06 +10:00
Mitchell Richters 3b522e4c50 Revert "- removed duplicate application in moving down code for the jetpack.". What was I thinking?
This reverts commit 34b213a99f.
2020-07-29 05:49:38 +10:00
Christoph Oelckers ea28356971 - avoid spamming the "Squished!" message. 2020-07-28 21:44:55 +02:00
Christoph Oelckers 34b213a99f - removed duplicate application in moving down code for the jetpack.
Fixes #62
2020-07-28 21:41:37 +02:00
Mitchell Richters e019939590 - possible fix for continual rotscrnang thrashing when dead that was reported in #66. 2020-07-29 05:37:46 +10:00
Christoph Oelckers 3bcef7d587 - disable transparency testing, unless explicitly requested.
Fixes #60
2020-07-28 21:28:10 +02:00
Christoph Oelckers b49d04fd6e - fixed: The video player did not check the sound CVARs.
Fixes #58
2020-07-28 21:05:14 +02:00
Christoph Oelckers 7e8688ae2d - fixed snd_channels menu entry.
Fixes #57
2020-07-28 20:59:17 +02:00
Christoph Oelckers d531f4b029 - reduce message spam when holding down the quick_kick button.
If not kept in check this will flood the console with endless messages.
2020-07-28 20:43:33 +02:00
Christoph Oelckers a2ff8b3354 - removed JFDuke-based kill count reduction for slimers because it doesn't seem to work right. 2020-07-28 20:31:08 +02: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 4a3366d798 - slight pixel tweaks to FullscreenHUD2 and original status bar. 2020-07-28 16:47:34 +10:00
Mitchell Richters ea98978ae7 - move `p->wackedbyactor` chase-cam code into `applylook()` for increased smoothness. 2020-07-28 12:30:09 +10:00
Mitchell Richters baed75ff8a - move p->actorsqu angle changes from `moveplayers()` to `applylook()` so that it can be applied when not running synchronous input.
Fixes #54.
2020-07-28 12:21:35 +10:00
Christoph Oelckers e345bf389f - removed some inactive pieces of code. 2020-07-28 00:05:56 +02:00
Christoph Oelckers 92d94543e5 - removed the Blood demo code as it won't be usable in this form anyway. 2020-07-28 00:01:16 +02:00
Christoph Oelckers 74c4bbc0e0 - preparations for refactoring Blood's HUD drawer, mainly to pass the palette explicitly to the drawers. 2020-07-27 23:29:10 +02:00
Christoph Oelckers ecdc92e6b9 - copied some changes to kill count management from DukeGDX. 2020-07-27 20:53:31 +02:00
Christoph Oelckers 8a92ecb70c - some minor reordering of code to only have one call to credLogosDos. 2020-07-27 19:45:34 +02:00
Christoph Oelckers 709dac7c37 - more Polymer leftover. 2020-07-27 19:39:27 +02:00
Christoph Oelckers c7fca86cf5 - removed incomplete Polymer code from Blood.
Looks like this was abandoned - this was still mostly Duke3D code
2020-07-27 19:38:58 +02:00
Christoph Oelckers 218a9c84fd - removed the last remaining Blood helpers from the file system, also deleted a few short files whose contents could be moved. 2020-07-27 19:38:41 +02:00
Christoph Oelckers 5f14153f3b - deleted declaration of deleted function. 2020-07-27 19:37:59 +02:00
Christoph Oelckers dcd773ed9d - removed some unused pieces of code. 2020-07-27 19:37:58 +02:00
Christoph Oelckers 4e3ad09d70 - merged 5 more headers into misc.h.
These small header files are really counterproductive, file count has already gone down from 143 to 106.
2020-07-27 19:37:17 +02:00
Christoph Oelckers b2f794bde5 - cache QAVs outside the file system as well.
- delete some voxel code that's software rendering only.
- apply Big Endian byte swapping for SFXs, as well, now that this no longer involves hacking the file system cache.
2020-07-27 19:37:02 +02:00
Christoph Oelckers b804589f81 - implemented a proper cache for Blood's SEQs.
Messing around in the file system cache should be a no-go, so now it's no longer done.
This also allows reenabling the byte swapping needed for Big Endian.
2020-07-27 19:28:54 +02:00
Christoph Oelckers bbbd7fadbb - merged several of Blood's smaller headers. 2020-07-27 19:17:13 +02:00
Christoph Oelckers ab9854a215 - merged the 3 sound related headers in Blood. 2020-07-27 19:17:13 +02:00
Christoph Oelckers dfda0c9cb2 - rewrote Blood's map loader to use FileReader directly instead of implementing its own wrapper around the lump cache.
Also deleting a few other unused files.
2020-07-27 19:17:00 +02:00
Christoph Oelckers aea6467d00 - call D_ProcessEvents in Blood's main loop. 2020-07-27 19:12:49 +02:00
Christoph Oelckers 63f4d82aeb - removed the 8 pixel offset for the Scuba Gear in display modes with reduced viewport size.
I have no idea why this was originally done, it makes no sense.
Fixes  #50
2020-07-27 18:59:05 +02:00
Christoph Oelckers 94b445db26 - The bonus screen's counter is a bit broken so help it to actually play Duke's speech.
(Hopefully) fixes #44
2020-07-27 18:17:40 +02:00