Commit Graph

822 Commits

Author SHA1 Message Date
Mitchell Richters 5984fda8a1 - PlayerAngle: Repair issues with `addadjustment()` method following changes in 4ffe004483 that were affecting negative input. 2021-04-06 06:01:54 +10:00
Christoph Oelckers 869433ee2e - fixed invalidation of programmatic textures.
This is only relevant for Vulkan because it stores the descriptor sets with the material, not the hardware texture.
2021-04-05 19:18:57 +02:00
Christoph Oelckers 008391a2ad - license correction for ct_chat.cpp
This was supposed to get the same treatment as d_net.cpp, i.e get the old license restored and be released under a duplicate GPL/Doom Source license but it was somehow missed when it got added. Also removed all leftover Doom specific parts.
2021-04-05 08:59:06 +02:00
Christoph Oelckers 658712d893 - removed duplicate d_gui.h file. 2021-04-05 08:56:44 +02:00
Christoph Oelckers 8e31c34b06 - fixed tileImportFromTexture.
* the parser read numbers with leading zeros as octal, which is not wanted here
* texture lookup by file name must be forced for root directory entries.
2021-04-04 21:02:04 +02:00
Christoph Oelckers 97a0cb2a10 - handle voxel rotation in the backend to enable it for all games.
This was previously only present in the Blood module and missed in Exhumed from upstream so the entire option was rather pointless.
Fixes #290
2021-04-04 10:33:29 +02:00
Christoph Oelckers 952bccbf5f - added a check for game-side-defined voxels when discarding one-sided wall sprites viewed from the back. 2021-04-03 21:49:28 +02:00
Mitchell Richters e3c2757f1c - sethorizon(): Ensure `SB_CENTERVIEW` bit is always cleared if horizon target is set. 2021-04-02 23:23:24 +11:00
Mitchell Richters 9c01bde44e - gameinput.cpp: Block player input within `sethorizon()` and `applylook()` if target for each has been set by the ticker.
* Stops players having the ability to provide input and fight the system trying to set an input.
2021-04-02 22:47:19 +11:00
Mitchell Richters 4ffe004483 - Further work within `PlayerAngle` and `PlayerHorizon` structs following 39fe9efaff and bf2d8078a4.
* Reduce code repetition.
* Clamp incoming horizon when using `settarget()` methods.
* Eliminate double calculation that was occurring in `processhelpers()`.
2021-04-02 22:47:17 +11:00
Mitchell Richters c076310e34 - `InputState::ClearAllInput()`: Only clear `crouch_toggle` bool if outside of a level, and resend `SB_CROUCH` sync bit if inside a level and `crouch_toggle` is true.
* Fixes #287.
2021-04-01 13:46:16 +11:00
Mitchell Richters 4321efa21c - Re-arrange `swaddons[]` const char array so that `/gameroot` is picked up first following changes in f4b27bbd27.
* Since f4b27bbd27, `D:/Program Files (x86)/Steam/steamapps/common/Shadow Warrior Classic/gameroot/addons/Sw.grp` was being picked up instead of `D:/Program Files (x86)/Steam/steamapps/common/Shadow Warrior Classic/gameroot/SW.GRP`.
* Fixes #289.
2021-04-01 12:25:57 +11:00
Mitchell Richters 029f8807df - Make `360. / 2048.` a constant expression and replace all uses throughout code. 2021-04-01 10:42:22 +11:00
Mitchell Richters aa35b6a479 - binaryangle.h: Fix constexpr issue on GCC builds following bf2d8078a4. 2021-04-01 08:32:07 +11:00
Mitchell Richters c630ad9110 Revert "- subjective fix to Duke 3D's RPG harsh recoil."
This reverts commit 839a7bcbe4.

Revert "- Duke: Restore RPG harsh recoil behind a CVAR."

This reverts commit 88a49b0d22.

# Conflicts:
#	source/core/gamecvars.cpp
#	source/core/gamecvars.h
2021-03-31 20:35:18 +11:00
Mitchell Richters bf2d8078a4 - PlayerHorizon: Replicate changes to `settarget()` and `processhelpers()` methods from 39fe9efaff. 2021-03-31 19:44:50 +11:00
Mitchell Richters 39fe9efaff - PlayerAngle: Adjust how `settarget()` methods store angle for unsynchronised angle adjustments and adjust `processhelpers()` method accordingly.
* Repairs angle issues raised in https://forum.zdoom.org/viewtopic.php?f=340&p=1185365.
2021-03-31 19:43:41 +11:00
Christoph Oelckers 60979ee478 - fixed: G_BuildTiccmd needs to clear the command struct.
This could otherwise pick up some stray data from earlier calls and create bogus input.
Fixes #97
2021-03-15 10:11:49 +01:00
Christoph Oelckers aa789c7605 - adapt to changed value range of module master volume in ZMusic.
The default was far too quiet and had to be increased to let the player have comparable output to the rest of the music system.
2021-03-14 08:51:59 +01:00
Christoph Oelckers f4b27bbd27 - sort the game selection list by definition order in grpinfo.txt.
This is to have consistent ordering, independent of where the files are found.
Game order is: Duke, Blood, Shadow Warrior, Redneck Rampage, Nam, WW2GI, Exhumed, all the official mission packs are grouped below the game they belong to.
2021-03-12 23:45:03 +01:00
Christoph Oelckers ad8654ed06 - fixed maphack loader.
The duplicate 'currentSprite' variable prevented it from doing anything.
Also cleaned up the interface a bit to avoid using a global variable for parameter passing.

Fixes #279
2021-03-07 09:39:16 +01:00
Christoph Oelckers 9104fba3ec - moved colormap constants to backend. 2021-03-06 23:06:26 +01:00
Christoph Oelckers cb14e3023e - fixed "roll" in maphack parser 2021-03-02 21:47:43 +01:00
sinisterseed 8d5682fa97 - version bump.
We're past 0.8 for some time now, and slowly approaching 1.0 :) .
2021-03-02 17:53:25 +02:00
Mitchell Richters e0f1a83f40 Revert "- SW: Alt implementation for preparing a nuke."
This reverts commit 4fcec5f6d3.

Functionality wasn't working properly, most players will never use it and care only for 100% originality. Was a nice idea, though.

# Conflicts:
#	source/core/gamecvars.cpp
#	source/games/sw/src/panel.cpp
2021-03-02 20:02:20 +11:00
Christoph Oelckers d28d5a5e1f - use real fog, even in palette emulation mode.
Using the palette to apply fog is just far too broken and cannot be kept in check with all the hacks the Build engine allows.
This only works if all elements on screen use the identity translation lookup which is basically never the case.
Real fog, on the other hand, can easily be applied to everything.
2021-02-27 13:30:52 +01:00
Christoph Oelckers 2094b6420f - use local screen size variables in automap code. 2021-02-27 12:30:20 +01:00
Christoph Oelckers 99f1f0952a - little bit of engine cleanup. 2021-02-25 12:16:21 +01:00
Mitchell Richters 4589f6f26d Merge remote-tracking branch 'public/chasecam_unification' 2021-02-25 20:33:36 +11:00
Rachael Alexanderson 4c0591a25b - port over `-noautoexec` that I did from GZDoom 2021-02-21 11:12:19 -05:00
Mitchell Richters cff97c9cf3 - calcChaseCamPos(): Restore original algorithms for new position via GameInterface struct.
* Averaging out the values was a net negative for all games. Each games' original value is tuned to the specific games.
2021-02-18 21:47:39 +11:00
Mitchell Richters ba57429ac6 - Blood, Duke & SW: Create new backend chasecam function and replace game-specific versions with it.
* Based off SW's implementation.
2021-02-18 21:47:37 +11:00
Mitchell Richters 2abda0e27d - All Games: Migrate each game's clock counter to backend solution. 2021-02-18 21:47:33 +11:00
Christoph Oelckers 5b6aa372ea - fixed autoaim check and adjusted presentation in the menu to be correct for all games.
Fixes #264
2021-02-06 10:56:11 +01:00
Christoph Oelckers 8ffda1c9d1 - Duke: Calculate the true font height of the numbers for alignment in the Statusbar.
The original tiles are all 15 pixels tall, but depending on the games can vary in their true height, so use CheckRealHeight on them to get their true dimensions.
Fixes #250
2021-02-01 00:09:22 +01:00
Christoph Oelckers 7b72fccfa2 - fixed hires replacement code not to destroy the intended translation in case there is no replacement. 2021-01-29 13:08:26 +01:00
Christoph Oelckers 52ba0461bc - fixed hires lookup for tiles using special palettes.
In these cases the palette needs to be ignored and the base version picked. The proper handling for this case was undefined, working in some cases and not in others.
Fixes #247
2021-01-29 11:48:32 +01:00
Christoph Oelckers 26c5d5aa32 - SW: fixed issue with autoselecting single episode entries with non-empty subtitles.
This case needs different offsets.
2021-01-27 23:53:26 +01:00
Christoph Oelckers 981a2c7e5c - Exhumed: restored old static switch array.
There's side effects in here that broke the door logic and made doors automatically open sometimes.
2021-01-24 14:49:51 +01:00
Mitchell Richters 7fcf1c94a1 - Exhumed: Minor fixes to panning code.
* Stop panning if underwater.
* Remove overload from PlayerHorizon from d32dcd5f8e that was causing problems for other games.
* Remove static bool `plrFalling` also from d32dcd5f8e and add `bIsFalling` to `Player` struct, hooking up with save code as well.
2021-01-05 17:07:56 +11:00
Mitchell Richters d32dcd5f8e - Exhumed: Fix player panning when walking up/down steps while horizon is 0. 2021-01-05 11:01:41 +11:00
Mitchell Richters 5124c0daec - Amalgamate ksgn and sgn into Sgn in cmdlib.h, and remove pragmas.h. 2021-01-05 07:31:37 +11:00
Mitchell Richters b36bea7c69 - Replace `scale()` calls with `Scale()` from common. 2021-01-05 07:31:34 +11:00
Mitchell Richters aae175f287 - Replace `divscale##()` calls with `MulScale()` from common.
* Regex for reference: divscale([0-9]+)\((.+)(\)+)
2021-01-05 07:31:20 +11:00
Mitchell Richters 2396179dfc - Replace `mulscale##()` calls with `MulScale()` from common.
* Regex for reference: mulscale([0-9]+)\((.+)(\)+)
2021-01-05 07:31:15 +11:00
Mitchell Richters 8cf2588bad - Replace `fmulscale##()` calls with `MulScaleF()` from common.
* Regex for reference: fmulscale([0-9]+)\((.+)(\)+)
2021-01-05 07:31:13 +11:00
Mitchell Richters 7d9f868e4c - Replace `dmulscale##()` calls with `DMulScale()` from common.
* Regex for reference: dmulscale([0-9]+)\((.+)(\)+)
2021-01-05 07:31:10 +11:00
Christoph Oelckers 0f3da7194a - actually compile the game code as larger units and integrate them in the main project.
This eliminates the problematic subprojects for good.
Compiling the games as larger units is necessary because otherwise compile times will break down on MSVC.
2021-01-04 11:52:10 +01:00
Christoph Oelckers e866a9e0c0 - moved setsectinterpolate/clearsectinterpolate into the backend. 2021-01-04 10:37:14 +01:00
Mitchell Richters be12da6bfb - Automap: Put in framework to interpolate automap player. 2021-01-02 18:23:01 +11:00
Mitchell Richters 25eaeff0db - Wrap all `g_gameType & GAMEFLAG_BLOOD` checks into `isBlood()` inline. 2021-01-02 14:46:58 +11:00
Mitchell Richters 532d128afd - Blood: Migrate game's slopetilting code to `calcviewpitch()`. 2021-01-02 14:40:35 +11:00
Mitchell Richters 4397646cc4 - Duke: Move cancellation of spin from `FinalizeInput()` into `applylook()` in gameinput.cpp. 2021-01-02 10:26:22 +11:00
Mitchell Richters 4aae71f0ee - InputState::ClearAllInput(): Call `resetTurnHeldAmt()` when clearing input. 2021-01-02 10:00:29 +11:00
Mitchell Richters 36c25ee2a0 - gameinput.cpp: Break out `processMovement()`'s turnheldamt calculations into functions. 2021-01-02 09:53:03 +11:00
Mitchell Richters 3a801cbf5c - calcviewpitch(): Set `scaleAdjust` to default to 1 in prototype like other functions in gameinput.cpp. 2021-01-02 09:32:19 +11:00
Mitchell Richters dac08a2cb9 - calcviewpitch(): Fix issue with returning `horizoff` to 0 from negative slope. 2021-01-02 01:15:58 +11:00
Mitchell Richters 8003753989 - Duke/SW: Move each game's check of `cl_slopetilting` into `calcviewpitch()` backend function. 2021-01-02 00:34:44 +11:00
Mitchell Richters 6d12159006 - Duke/SW: Consolidate each game's slopetilting function into backend solution.
* Based on SW's implementation purely for its commentary, but includes a fix from Duke's.
* Allow disabling Duke's slopetilting via `cl_slopetilting` like SW.
2021-01-02 00:30:11 +11:00
Mitchell Richters 5c87b7b894 - Return to center using tangent of pitch, as per original games (Duke/SW).
* Preserves the original return to center feel more accurately as original algorithm can't directly translate to pitch. If we ever get rid of Build's horizon throughout the games, this can go on the chopping block then as a necessity.
2020-12-30 18:04:00 +11:00
Rachael Alexanderson 38faefa663 - set some install defaults for posix systems 2020-12-27 05:28:47 -05:00
Christoph Oelckers fdd9c10a55 - fixed: the statistics display didn't take the HUD's scale factor into account.
Fixes #229
2020-12-10 19:20:24 +01:00
Christoph Oelckers 8d659bad32 - fixed V5/V6 format map loader. 2020-12-06 20:17:27 +01:00
Christoph Oelckers c92aaaee20 - This is version 0.8.0
Finally out of alpha, now that the model code is working. :)
2020-12-06 10:51:35 +01:00
Christoph Oelckers d04013066c - build a composite texture of all the segments for sky rendering to reduce the seams between the single segments. 2020-12-04 22:29:25 +01:00
Christoph Oelckers 396e3cd524 - actually call the model animation timer somewhere.
Now models also animate properly. :)
2020-12-02 00:19:22 +01:00
Christoph Oelckers 92a72cef8b - Blood: only trigger a secret if the hint system hasn't registered it.
There's some bugs in Blood that allow a secret to be triggered multiple times. However, since the hint system already knows which secrets were triggered, use that info to avoid retriggers.
Fixes #206
2020-12-01 12:52:42 +01:00
Christoph Oelckers 5850c7b284 - let SyncInput return a combination of gamesetinput and cl_syncinput - also serialize gamesetinput. 2020-11-30 23:45:21 +01:00
Christoph Oelckers ae36ea88c3 - wrap all checks of cl_syncinput in an inline function. 2020-11-30 23:40:16 +01:00
Mitchell Richters 22f7fc93f4 - Exhumed/SW: Move code to trigger synchronised input for edge cases where its needed into gamecontrol. 2020-12-01 07:31:47 +11:00
Christoph Oelckers ed8266df0b - fixed bad args check in WarpToCoords CCMD. 2020-11-29 16:06:15 +01:00
Christoph Oelckers cd1b79a703 - use stricter checks when trying to levelwarp.
If saving is blocked, so should changing the level.
Fixes #204.
2020-11-29 15:22:54 +01:00
Christoph Oelckers a34f5debe8 - route the shared control CCMDs through the game interface instead of registering local variants for each game. 2020-11-29 13:35:09 +01:00
Christoph Oelckers 48b16d5233 - cleanup on player CVAR use. 2020-11-29 13:22:04 +01:00
Christoph Oelckers 82a0e95485 - made the new interpolation system work in Blood.
The panning interpolations need wraparuound handling due to their small value range.
2020-11-26 18:32:35 +01:00
Christoph Oelckers 2cd3927613 - use floats for wall panning offsets. 2020-11-26 18:32:35 +01:00
Christoph Oelckers 357199ecc1 - cross-game, serialization-friendly and pointer free interpolation implementation.
Not hooked up yet.
2020-11-26 18:32:35 +01:00
Christoph Oelckers d545eb7aa9 - make sector panning variables floats and added some convenience wrappers. 2020-11-26 18:32:35 +01:00
Christoph Oelckers 82d80f3f07 - Blood: handle super secrets properly in the statistics display.
Fixes #198
2020-11-26 07:48:34 +01:00
Mitchell Richters 80ff918b17 - gameinput.h: For PlayerAngle struct methods `settarget()`, properly set target as angle + delta between angle & target within method and not game-side. 2020-11-26 17:26:29 +11:00
Mitchell Richters e9e4590f6a - gameinput.h: For PlayerHorizon and PlayerAngle struct methods `settarget()`, always set the angle directly if backup set to true. 2020-11-26 16:42:07 +11:00
Mitchell Richters b9e1cbb5de - gamecontrol.h: Move `getHalfLookAng()` into `PlayerAngle` struct as `look_anghalf()`.
* Uses internal struct variables at full BAM precision.
2020-11-26 16:37:37 +11:00
Christoph Oelckers 5a5f9b8e02 - backend update from GZDoom. 2020-11-23 15:54:06 +01:00
Christoph Oelckers fde6407266 - removed the local duplication of the player name in Blood.
Using the global CVAR instead - once multiplayer support is in this will work for all players.
2020-11-23 09:53:58 +01:00
Christoph Oelckers 169d708547 - removed all remaining uses of tilesiz. 2020-11-23 08:55:02 +01:00
Mitchell Richters 3f14886830 - binaryangle.h: Return `BAngToBAM()` as `int64_t` to handle signed values without overflowing on unsigned values. 2020-11-23 10:49:47 +11:00
Mitchell Richters 89048c8e70 - binaryangle.h: Use cmath.h functions for `binangle`/`lookangle` trig methods as well. 2020-11-23 08:40:18 +11:00
Christoph Oelckers b89cd6d14c - cleanup on binaryangle.h
* why the reference parameters? These should be passed by value.
* removed the < and > operators from binangle class because angles should not be ordered.
* instead of calling the CRT trig functions, use the ones from cmath.h which are more reliable
2020-11-22 21:54:39 +01:00
Mitchell Richters 5ba2e7863d - binaryangle.h: Add `asbuildf()` method to all classes and use where appropriate. 2020-11-22 21:18:12 +01:00
Mitchell Richters e57d6f8785 - Duke: Fix crane's angle `settarget()` call.
* Fixes #185.
2020-11-22 21:18:12 +01:00
Mitchell Richters c42771228d - binaryangle.h: Reverse order of `binangle` and `lookangle` classes and declare `binangle` class a friend of `lookangle`.
* In-prep for addressing #185.
2020-11-22 21:18:11 +01:00
Mitchell Richters 3b3e926fd3 - gameinput.h: For `PlayerAngle` struct, add int `settarget()` overload and change one true call with a float to `bvectangf()`. 2020-11-22 21:18:11 +01:00
Mitchell Richters 2341ed4e25 - gameinput.h: For `PlayerAngle` struct, add extra `addadjustment()` overloads to remove type conversions game-side, and when incoming. 2020-11-22 21:18:11 +01:00
Mitchell Richters 35845a63e2 - binaryangle.h: Expand all classes with bit-shift operators and `binangle`/`lookangle` classes with some lt/le/ge/gt bools to have parity with the `fixedhoriz` class. 2020-11-22 21:18:11 +01:00
Mitchell Richters 42689e02c4 - gameinput.cpp: Define `getincanglebam()` and slightly clean up other getincangle*() functions. 2020-11-22 21:18:11 +01:00
Mitchell Richters d6d74c2712 - buildutils: Replace `sintable[]` use within core with `bsin()`/`bcos()`. 2020-11-22 21:18:02 +01:00
Mitchell Richters 32a1796728 - buildutils: Replace `sintable[]` use within Build with `bsin()`/`bcos()`, using `bsinf()`/`bcosf()` where appropriate.
* Includes a few header include shuffles to make it all come together.
2020-11-22 21:18:02 +01:00
Mitchell Richters 85bb248309 - binaryangle.h: Extend file with sine/cosine inline helper functions. 2020-11-22 21:18:02 +01:00
Christoph Oelckers 921a7a7166 - RRRA: fixed progression from E1L7 to E2L1 plus a texture related crash.
Fixes #189.
2020-11-22 18:46:20 +01:00
Christoph Oelckers dced173cda - JSON serializer for actor.
Also cleaned up use of gAffectedSectors and gAffectedXWalls. These are merely needed as local worker variables, not as global persistent status.
2020-11-22 12:48:42 +01:00