Commit Graph

11666 Commits

Author SHA1 Message Date
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