Commit graph

2000 commits

Author SHA1 Message Date
Mitchell Richters
f88d435335 - Take better advantage of InputPacket::vel's FVector3 status.
* Change it to a DVector3 as that's what the game is expecting. Too many narrowings against DAngle objects needed.
* Utilise object methods where possible.
* Do all math against the object where possible, not its members.
2023-10-03 23:07:44 +11:00
Mitchell Richters
828e46a8da - Remove the TVector2 (const TVector3<vec_t> &other) constructor.
* This narrowing constructor was causing a problem with a `clamp()` overload in the next commit.
* Believe this is a product of a by-gone time before we had the `XY()` method on `TVector3<T>` objects.
2023-10-03 23:07:44 +11:00
Mitchell Richters
f570cb5d21 - Change InputPacket velocities to an FVector3. 2023-10-03 23:07:44 +11:00
Mitchell Richters
03d957ffdf - Centralise the saving of player actions within DCorePlayer's serialiser. 2023-10-03 09:28:01 +11:00
Mitchell Richters
27ae6a4c20 - Blood: Fix missing call to Super while saving. 2023-10-03 09:20:17 +11:00
Christoph Oelckers
d815eff5d1 fix saving. 2023-10-02 21:38:58 +02:00
Christoph Oelckers
dd2ea96d6c turn players into DObjects and fix several bugs with bad memory access.
* DObjects may not be memset to 0.
* There was still code trying to retrieve the player index with pointer artithmetic. With an array of pointers this does not work.
2023-10-02 21:03:59 +02:00
Christoph Oelckers
d60834be3d fixed GC handling of players.
These were missing null checks, the player pointers also weren't nulled after deleting the objects.
2023-10-02 19:03:27 +02:00
Christoph Oelckers
02c6b68581 Merge remote-tracking branch 'remotes/origin/playerArray' into blood-script-export 2023-10-02 18:51:51 +02:00
Mitchell Richters
ac35e09d1c - Move each game's stored nPlayer/pnum value to CorePlayer. 2023-10-02 18:44:04 +11:00
Mitchell Richters
16189ff7f9 - Remove GameInterface::getConsoleActor() in place of direct access. 2023-10-02 18:11:53 +11:00
Mitchell Richters
6de8fc91d6 - Remove GameInterface::reapplyInputBits() and directly perform operation in GameTicker(). 2023-10-02 18:11:51 +11:00
Mitchell Richters
02bd017d07 - Directly set CorePlayer::ucmd rather than copying it to a temporary array. 2023-10-02 17:00:50 +11:00
Mitchell Richters
d90aca9640 - Directly store a ticcmd_t object within CorePlayer. 2023-10-02 17:00:50 +11:00
Mitchell Richters
23d4cbc3bd - Remove all game-side PlayerArray[] objects and store within common code. 2023-10-02 15:43:00 +11:00
Mitchell Richters
0aac044da6 - Blood: Initial setup to convert PlayerArray array to array of BloodPlayer pointers. 2023-10-02 15:43:00 +11:00
Mitchell Richters
1604cf009c - Move the actor pointer for each game's player structures into CorePlayer.
* Something strange was going on here with Blood where the static_cast would not work... Moved the player structure into `bloodactor.h` for now to work around it.
2023-10-02 15:42:59 +11:00
Mitchell Richters
6beec5eed2 - Set up initial implementation of CorePlayer struct and make game-side player structs inherit from it. 2023-10-02 15:42:59 +11:00
Mitchell Richters
0ed54ed719 - Blood: Rename gPlayer[] array to PlayerArray[] and wrap its access. 2023-10-02 15:31:05 +11:00
Mitchell Richters
49104f9b24 - Blood: Rename PLAYER struct to BloodPlayer. 2023-10-02 15:30:51 +11:00
Mitchell Richters
2755b17fd5 - Blood: Wrap access to player's actor pointer. 2023-10-02 15:30:34 +11:00
Christoph Oelckers
762263671a exported the main structures in Blood that make up a BloodActor.
nnext stuff was omitted for now.
This also eliminates the DUDEEXTRA_STATS substructure and integrates its content directly into DUDEEXTRA.
2023-10-01 22:25:08 +02:00
Christoph Oelckers
3aafcb94f1 exported XSECTOR and XWALL.
this required an extension to the ZScript front end to allow defining the bitfield flag variables which cannot have their address taken.
2023-10-01 20:39:40 +02:00
Christoph Oelckers
5a26989d06 exported the game specific sector/wall properties. 2023-10-01 18:54:10 +02:00
Christoph Oelckers
30d259f8b4 actually use the shifted type range for FX actors, now that the spawning is handled. 2023-10-01 14:06:59 +02:00
Christoph Oelckers
72bab35ab4 spawn the actual classes assigned to the various actor types. 2023-10-01 14:06:59 +02:00
Christoph Oelckers
f71000fe6f wrapped all remaining access to type. 2023-10-01 14:06:59 +02:00
Christoph Oelckers
0dd22f3071 Blood: make sure FX sprites have a unique type.
There were overlaps with other types which for ZScript would be a problem, this also caused undefined behavior with the kSectorCounter event callback.
2023-10-01 14:06:58 +02:00
Christoph Oelckers
eb043f7fab wrapped all remaining spr.type not related to kStatFX 2023-10-01 14:06:58 +02:00
Christoph Oelckers
e5d8b097fc wrapped many more accesses to spr.type. 2023-10-01 14:06:58 +02:00
Christoph Oelckers
93df21bca1 replaced a few more spr.type's. 2023-10-01 14:06:58 +02:00
Christoph Oelckers
8f8e8c4d87 replaced more access to spr.type. 2023-10-01 14:06:58 +02:00
Christoph Oelckers
9b22d9a811 add a getDudeInfo variant that only takes an actor pointer as parameter 2023-10-01 14:06:57 +02:00
Christoph Oelckers
658646323c use IsDudeActor where appropriate. 2023-10-01 14:06:57 +02:00
Christoph Oelckers
b2582dcb84 quick replacements of many spr.type uses 2023-10-01 14:06:48 +02:00
Christoph Oelckers
95290c65b2 wrap all write access to spr.type. 2023-10-01 14:04:01 +02:00
Christoph Oelckers
7379288f4b directory structure cleanup 2023-10-01 14:03:44 +02:00
Christoph Oelckers
295d9e690b remove unneeded non-standard includes from inifile.cpp 2023-10-01 14:00:26 +02:00
Christoph Oelckers
716e059374 use shared SplitPath function 2023-10-01 13:09:22 +02:00
Christoph Oelckers
ee07ae35aa retrieve time in fillSummary. 2023-10-01 12:10:56 +02:00
Christoph Oelckers
4dcf0fd3c4 get rid of the GetStats interface function.
Now that all data it retrieves is available in shared code it is no longer needed.
2023-10-01 11:48:32 +02:00
Christoph Oelckers
4af7a649b6 move kill/secret management into the shared code
Implemented for Blood so far, this gets rid of gKillMgr and gSecretMgr
2023-10-01 10:07:45 +02:00
Christoph Oelckers
26ba62dc62 Blood: cleanup of INI loading
* use snprintf instead of sprintf
* keep the IniFile object local
* get rid of the FreeGameData interface function, it only existed to free the global INI object.
2023-09-30 22:34:09 +02:00
Christoph Oelckers
bb6d6ae83b replaced Ini-parser with a reworked version from Blood RE.
This was mainly for the license.
2023-09-30 21:47:17 +02:00
Christoph Oelckers
31541fd8ae correct else placement in calebSwimChase. 2023-09-29 20:22:56 +02:00
Christoph Oelckers
e072380470 Blood: fixed bad order of random numbers. 2023-09-29 20:11:34 +02:00
Mitchell Richters
8f9b413d38 - Always clear object in PlayerAngles::initialize() rather than expecting the caller to do it. 2023-09-28 22:16:30 +10:00
Mitchell Richters
7fa5df934b - Make playercmds[] non-global and pass through as pointer. 2023-09-28 22:16:30 +10:00
Mitchell Richters
4958241c57 - Blood: Slight cleanup on 32480dde16. 2023-09-28 22:16:29 +10:00
Christoph Oelckers
b05b409695 Blood: removed 3 unused members in PLAYER 2023-09-28 11:45:16 +02:00
Christoph Oelckers
f46db83ab3 removed two leftover floatification helpers. 2023-09-28 11:43:14 +02:00
Christoph Oelckers
aea46548bd moved all Is***Sprite function to animatesprite.cpp because that's the only place they still get used from.
Naked sprite pointers have been removed everywhere else.
2023-09-28 11:41:35 +02:00
Christoph Oelckers
7e63ccd57a Blood: get rid of the mirror struct and related data.
This is a relic of Polymost.
2023-09-26 23:34:08 +02:00
Christoph Oelckers
bcad8a85d2 renamed at* fields in gib.cpp 2023-09-26 23:34:08 +02:00
Christoph Oelckers
3625a510d2 took a hint from Blood-RE and replaced that awful reconstructed sorting function with the qsort call it most likely originally was. 2023-09-26 23:34:08 +02:00
Christoph Oelckers
8a0f79141b code cleanup
* gave reverb functions the proper 'S_' prefix for consistency.
* Blood: fixed license of 4 files which do not contain any NBlood code anymore (sound code was completely rewritten, and all such code has long been moved out of d_menu.cpp)
* Blood: renamed VIEWPOS_* constants
2023-09-26 23:30:38 +02:00
Mitchell Richters
ce236c795f - Blood: Don't attenuate view rolling when swimming.
* Blood's input and drag system is much more developed than the other games and further attenuation is not needed here.
2023-09-25 17:00:10 +10:00
Mitchell Richters
9ad0af4479 - Blood: Better fix for view rolling under all circumstances.
* Why is everything so difficult in Blood? 😕
* Do StrafeVel drag/resistance before `MoveDude()` as it may never be called if there's no velocity.
* Avoid using `mulscale16r()` in algorithm as we simply don't need to here.
* Move `doRollInput()` call into same area where drag is applied so all the code is concentrated in one spot.
2023-09-25 16:42:11 +10:00
Mitchell Richters
2916fe596f - Blood: Fix view rolling while underwater. 2023-09-24 20:00:11 +10:00
Mitchell Richters
32480dde16 - Ensure all games preserve SB_CENTERVIEW and SB_CROUCH bits upon loading. 2023-09-24 17:22:38 +10:00
Mitchell Richters
29e021b5bf - Move crouch toggling back into the backend so the toggle key can be used as a swim key.
* Reverts 272dfa762d, but is a fresh implementation.
* I doubted anyone was doing this but apparently not.
* Exhumed needed a bit more work as it has very specific underwater checks.
2023-09-24 14:15:49 +10:00
Christoph Oelckers
615267dbd4 - fixed incorrect setup in Blood map loader. 2023-09-23 21:13:03 +02:00
Christoph Oelckers
82057bcd5a - Backend update from GZDoom-
This compiles but doesn't run.
2023-08-23 20:36:19 +02:00
Christoph Oelckers
d34bad3045 - adapted game side code. 2023-08-19 19:41:40 +02:00
Christoph Oelckers
2095a2120c - consolidated the 4 ReadSound functions. 2023-08-19 18:11:19 +02:00
Christoph Oelckers
3c695a5abd - adapted to backend changes. 2023-08-19 18:08:27 +02:00
Christoph Oelckers
0b158dbdd0 - Blood: use texture IDs in drawElements. 2023-05-30 19:05:33 +02:00
Christoph Oelckers
117874bb72 - Blood: fixed bad scaling in viewBurnTime. 2023-05-30 18:57:44 +02:00
Christoph Oelckers
6866e86e3e - missed change for Blood 2023-05-27 09:11:26 +02:00
Christoph Oelckers
92f2503160 - did a bit of optimization on sfxinfo_t.
Using two bytes of alignment gap to add a userval variable.
2023-05-27 09:03:10 +02:00
Christoph Oelckers
c707167c94 - eliminated all uses of tile index constants in Blood.
The literal numbers still remain, though.
2023-05-20 18:28:29 +02:00
Christoph Oelckers
4e4be4f3d0 - use the global texture ID array where available. 2023-05-20 18:08:58 +02:00
Christoph Oelckers
6de41eec46 - get rid of last tileGetTexture calls in Blood. 2023-05-20 18:08:58 +02:00
Christoph Oelckers
2f2021f5d2 - Blood: simplify burnTable. 2023-05-20 13:17:55 +02:00
Christoph Oelckers
058f1b4233 - handle exclusion of tilenum 0 for sprites in the backend. 2023-05-20 12:55:58 +02:00
Christoph Oelckers
22415d0d22 - Duke: for camera textures, set display_mirror to 2, not 1.
This avoids actually mirroring the sprites while otherwise retaining the effects on player visibility. Although a value of 1 was working previously it was merely by happenstance, not by design.
Also remove two redundant local copies of display_mirror in Blood and SW.
2023-05-19 22:53:17 +02:00
Christoph Oelckers
6e060c2e83 Revert "- Tidy up autosaving for all the games."
This reverts commit 10445635cf.

Contrary to what the reverted commit states, it is absolutely essential to have this delay. Duke and Blood initialize a lot of things in their first tick that are necessary before the world is stable to save.
2023-05-19 22:53:17 +02:00
Christoph Oelckers
5d4e6696ca - Blood: clear gHitInfo when starting a level. 2023-05-19 22:53:17 +02:00
Christoph Oelckers
ff24711710 -put the remaining directly accessed textures into the aTexIDs arrays for Blood and Exhumed. 2023-05-19 22:51:32 +02:00
Christoph Oelckers
481f139962 - put texture ID lists into a namespace.
These conflicted with each other.
2023-05-19 22:51:31 +02:00
Christoph Oelckers
4e8dfe8986 - got rid of the laat picnums in Blood. 2023-04-29 11:32:04 +02:00
Christoph Oelckers
a662a3bd12 - another bunch of picnums in Blood removed.
4 remaining after this.
2023-04-29 11:32:04 +02:00
Christoph Oelckers
83dfd77bd0 - eliminate picnums in QAV code. 2023-04-29 11:32:04 +02:00
Christoph Oelckers
9a703639cb - final cleanup of Blood/Exhumed changes. 2023-04-29 11:32:04 +02:00
Christoph Oelckers
f115f9427d - got rid of a few more picnum references in Blood. 2023-04-29 11:32:03 +02:00
Christoph Oelckers
76c0de2ef1 - moved some of Blood's precaching info to external data. 2023-04-29 11:32:03 +02:00
Christoph Oelckers
52706e9afd - handle the direct assignments of values to picnum in Blood. 2023-04-29 11:32:02 +02:00
Christoph Oelckers
36c07aaca5 - did some simple picnum replacements in Blood. 2023-04-29 11:32:02 +02:00
Christoph Oelckers
44f4104eda - got rid of the last tilenum uses in Duke.
This meant refactoring the crosshair drawer to work on a named texture called "CROSSHAIR" and hard coding the magic numbers for spawndebris.
2023-04-29 09:54:15 +02:00
Christoph Oelckers
5d4f137623 - migrated Duke's entire HUD weapon code to texture names. 2023-04-29 09:16:46 +02:00
Mitchell Richters
11181f51f8 - Allow roll input through the packet system, giving us 6DOF for VR usage, etc. 2023-04-24 21:31:21 +10:00
Mitchell Richters
67390511b7 - Blood: Hook up InputPacket::uvel to relevant code. 2023-04-24 19:06:48 +10:00
Christoph Oelckers
b2493116f8 - use texture IDs in the model interface. 2023-04-23 09:52:56 +02:00
Mitchell Richters
71d833f9ea - Make Exhumed's new view tilting features accessible for all games. 2023-04-22 19:34:53 +10:00
Mitchell Richters
bb19997a2c - Apply pitch/yaw input along-side the key inputs.
* Removes a lot of duplicated code.
2023-04-21 21:13:18 +10:00
Mitchell Richters
b803a8299d Revert "- Blood: Repair velocity scaling in ConcussSprite()."
This reverts commit 7da3c62ea8.

* 7554808104 has the proper fix.
2023-04-16 16:11:57 +10:00
Christoph Oelckers
7554808104 - Blood: fixed bad damage scaling in ConcussSprite
This uses the square of the distance, so the factor between Build's Q28.4 format and floats is not 16, but 16*16 = 256.
2023-04-08 10:46:35 +02:00
Mitchell Richters
12c50b4af0 - Blood: Fix missing input bit in GameInteface::reapplyInputBits(). 2023-04-04 16:55:44 +10:00
Mitchell Richters
a68fcfc71c - Remove GameInterface::getConsoleAngles(), it's not needed anymore. 2023-04-04 07:02:39 +10:00
Christoph Oelckers
8208c7fc0b - some texture name cleanup 2023-04-02 16:45:43 +02:00