Commit graph

14553 commits

Author SHA1 Message Date
Mitchell Richters
6a367c6184 - Duke: Rename ps[] array to PlayerArray[] and wrap its access. 2023-10-02 15:41:15 +11:00
Mitchell Richters
bd9e42bb40 - Duke: Rename player_struct struct to DukePlayer. 2023-10-02 15:41:13 +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
a20e2b64f9 - SW: Wrap access to player's actor pointer. 2023-10-02 15:30:35 +11:00
Mitchell Richters
61bc8c23cf - Exhumed: Wrap access to player's actor pointer. 2023-10-02 15:30:35 +11:00
Mitchell Richters
6d6872fea7 - Duke: Ensure player_struct::GetActor() is exclusively used to get the player's actor. 2023-10-02 15:30:34 +11:00
Mitchell Richters
2755b17fd5 - Blood: Wrap access to player's actor pointer. 2023-10-02 15:30:34 +11:00
Mitchell Richters
719cc75fd2 - Duke: Rename player_struct::sync to player_struct::input to match the other games. 2023-10-02 15:30:32 +11:00
Mitchell Richters
eeb9f48436 - Fix uncommitted change missed from 7fa5df934b. 2023-10-02 15:30:32 +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
fe02190604 fixed CollisionData export. 2023-10-01 21:06:53 +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
Rachael Alexanderson
1fa628b47e - do same change as d33f2697a3 2023-10-01 10:47:15 -04: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
5cbca32967 added missing license to Duke's vmexports.cpp 2023-10-01 14:03:23 +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
19dfd84320 use global stat manager in SW 2023-10-01 10:33:07 +02:00
Christoph Oelckers
da3df98484 use global stat manager in Exhumed 2023-10-01 10:17:27 +02:00
Christoph Oelckers
3e821c5849 use global stat manager in Duke 2023-10-01 10:07:54 +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
88939a9c60 - Do a memset() in PlayerAngles::initialize() instead of value initialisation. 2023-09-29 08:31:48 +10:00
Mitchell Richters
092d8e7937 Revert "- Favour value initialisation in GameInput::Clear() instead of a memset()."
This reverts commit 59acdde9c9.

Apparently this can generate terrible code with MSVC for some reason.
2023-09-29 08:31:03 +10:00
Mitchell Richters
f8ee893529 - Move I_GetEvent() call into GameInput::getInput(). 2023-09-28 22:16:31 +10:00
Mitchell Richters
dc8be29354 - Exhumed: Use range-based loop in seq_LoadSequences(). 2023-09-28 22:16:31 +10:00
Mitchell Richters
ad87f9ba54 - Duke: Adjust doVehicleTilting() somewhat.
* Don't adjust and scale the player's roll, we can rely on `player_struct::TiltStatus` alone for this.
* Ensure maximum tilt via full keyboard turn == (20. * 360. / 2048. * 0.5), same as original code.
2023-09-28 22:16:31 +10:00
Mitchell Richters
04ac4561a8 - Exhumed: Set up cl_viewbob so its disabled by default since the game never had it. 2023-09-28 22:16:30 +10: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
59acdde9c9 - Favour value initialisation in GameInput::Clear() instead of a memset(). 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
80da809e0c - Apply cl_noturnscaling CVAR from feaaf2c15a to GameInput::processVehicle(). 2023-09-28 22:16:29 +10:00
Mitchell Richters
ae39645169 - Duke: Slight cleanup on e0e459216d. 2023-09-28 22:16:29 +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
e0e459216d - Reduce GameInput::processVehicle() interface by changing three bools to a bitfield. 2023-09-25 19:51:53 +10: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
8d8c30d10e - Reset the crouch toggle only when loading a new game, not every time we clear out the input.
* We need to preserve the crouch toggle when loading saves.
* Deliberately not resetting during level transitions as each level in an episode is interconnecting.
2023-09-24 17:51:22 +10:00
Mitchell Richters
ae192df7b7 - Consolidate two gi->FreeLevelData() into NewGame(). 2023-09-24 17:28:52 +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
ff8cea673e - Duke: Ensure player_struct Serialiser only attempts to set variables when reading, not unconditionally. 2023-09-24 17:21:17 +10:00
Mitchell Richters
22077c5b50 - Ensure crouch_toggle is cleared when clearing all input. 2023-09-24 15:53:39 +10:00
Mitchell Richters
f35e8eecf1 - Fix incomplete backend update in 4a87003408 that broke Linux builds. 2023-09-24 14:38:30 +10:00
Mitchell Richters
feaaf2c15a - Allow disabling turn scaling (turbo turn). 2023-09-24 14:15:50 +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
a703acea00 - consider swvoxfil.txt a known name for SW mods.
This allows the voxel pack to be dragged and dropped.
2023-09-23 14:51:18 +02:00
Christoph Oelckers
4bb66fb44e - Duke: Fixed WT fallback for classic sounds in cases the user data does not exist.
currently that's only the case for CRANEGRAB which is aliased because of differences between Duke and RR.
2023-09-23 14:29:41 +02:00
Christoph Oelckers
711813c36f - fixed flat debug helper. 2023-09-23 14:03:59 +02:00
Christoph Oelckers
6e4dcc5bff - fixed clipping range of artificially split sectors.
This caused render glitches on the barn in RR E1L1.
2023-09-23 13:32:09 +02:00
Christoph Oelckers
912d8d38bf - disable alloc debugging again. 2023-09-23 10:32:49 +02:00
Christoph Oelckers
d96a928738 - Exhumed: fixed sprite positioning issues
Apparently tile #1 has some significance here.
2023-09-23 10:30:52 +02:00
Christoph Oelckers
4a87003408 - backend update from GZDoom.
* Vulkan backend updated.
* zlib replaced with miniz.
* FileReader is now 64 bit capable.
* jpeg replaced with stb-image.
* CMake project warnings fixed.
2023-09-23 09:56:27 +02:00
Mitchell Richters
a3aa2e877e - Exhumed: Repair use key clearing issue from ed2c557297.
* It's important that the use button is cleared for Exhumed, just not in the game code like it was previously done.
* Fixes #971.
2023-09-23 09:51:45 +10:00
Christoph Oelckers
1fe1359e5b - fix incomplete palette generation for paletted rendering. 2023-09-22 21:26:40 +02:00
Christoph Oelckers
e19ce3ead4 - fixed voxel loader. 2023-09-10 21:30:45 +02:00
Christoph Oelckers
a41ebfeb73 - Duke: fixed the explosion's lighting hackery.
The animatesprites handler in the old code got called on the already animated sprite, meaning it will only activate for the first frame.
To do this right the code had to be moved to applyanimations and be guarded by a flag.
2023-09-10 20:42:26 +02:00
Christoph Oelckers
230c1b9041 - fix animatesprite loop aborts on sector effectors 2023-09-10 19:55:41 +02:00
Christoph Oelckers
f749f4cc33 - copied equal_epsilon from GZDoom. 2023-09-07 22:12:31 +02:00
alexey.lysiuk
ecc0301f5b - removed obsolete forward declarations
source/core/savegamehelp.h:10:1: error: declaration conflicts with target of using declaration already in scope
source/core/savegamehelp.h:13:24: error: reference to 'FileReader' is ambiguous
source/core/gameconfigfile.h:40:1: error: declaration conflicts with target of using declaration already in scope
source/core/gameconfigfile.h:61:27: error: reference to 'FileWriter' is ambiguous
2023-09-07 12:44:51 +03:00
Christoph Oelckers
fa7a16a775 - backend update from GZDoom.
Some missing 'override' qualifiers and font fixes.
2023-09-06 00:18:45 +02:00
Christoph Oelckers
25c0a56d96 - fixed broken character fallback for cyrillic T.
This was attached to the у (i.e. cyrillic u)
2023-09-06 00:03:02 +02:00
Christoph Oelckers
431d29b6a1 - don't run string conversions on empty strings.
std::string complains about this case
2023-09-05 23:54:22 +02:00
Christoph Oelckers
4e53f3bd81 - backend update from GZDoom for adding vcpkg integration 2023-09-02 09:46:20 +02:00
Christoph Oelckers
e88d2fb6b4 - fixed directory loader 2023-08-23 22:09:09 +02:00
Christoph Oelckers
4ff6e9bc72 - fix altered virtuals and gave them an override qualifier. 2023-08-23 21:26:42 +02:00
Christoph Oelckers
ec18e022ca - fix allocation for tile buffer. 2023-08-23 21:05:00 +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
f2740e434a - adapted game code. 2023-08-20 02:25:12 +02:00
Christoph Oelckers
b95a5a4b2b - yet another backend update. 2023-08-20 02:15:57 +02:00
Christoph Oelckers
d34bad3045 - adapted game side code. 2023-08-19 19:41:40 +02:00
Christoph Oelckers
6355671480 - second backend update from GZDoom. 2023-08-19 19:32:17 +02:00
Christoph Oelckers
32ede813e9 - new files for backend update. 2023-08-19 18:17:17 +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
cf19d75242 - backend update from GZDoom without adapting other code. 2023-08-19 16:59:05 +02:00
Christoph Oelckers
5eee7b80b1 - backend update from GZDoom.
* controller handling improvements
* use stb_sprintf.
* various smaller fixes.
2023-08-09 12:17:17 +02:00
Christoph Oelckers
76e77d4e64 - Duke: fix enemy counting 2023-08-06 09:59:33 +02:00
Christoph Oelckers
f0623c7098 - fix compilation 2023-08-06 09:22:07 +02:00
Christoph Oelckers
bd078cc3e6 - SW: Clear FinishTimer when starting a new level. 2023-08-03 17:53:25 +02:00
Christoph Oelckers
20b96501b6 - moved rnd_plasma into global space again.
C++'s init rules for local static variables are so dumb that this will cause undefined behavior with the RNG management, it's also very inefficient.
2023-08-03 12:55:23 +02:00
Rachael Alexanderson
7936aca79d - redo work from b95dbaf914 2023-08-02 00:35:58 -04:00
Christoph Oelckers
c19653262e - Duke: fix management of killit_flag.
This cannot be in the actor because event scripts can be called without a valid actor.
It is now part of the parse state, but execute allows returning it to the caller, which is needed in one place.
2023-07-22 10:24:20 +02:00
Christoph Oelckers
6aa61e72b5 - backend update from GZDoom.
* cleanup on the sound init code.
* added #pragma once in several headers.
* macOS version detection overhaul.
2023-07-22 09:54:00 +02:00
Christoph Oelckers
706c784965 - added a few checks for null pointer types in the ZScript compiler. 2023-07-22 08:59:15 +02:00
Christoph Oelckers
ce34ef2921 - Duke: fixed skill filter handling for CON defined enemies. 2023-07-17 00:32:27 +02:00
Christoph Oelckers
0380ef3b80 - SW: remove redundant ; in sector object serializer.
This caused the animtype field not to be saved.
2023-07-16 10:59:39 +02:00
Kevin Caccamo
80ac9f6416 Fix a memory write issue with plasma_{A,B,C}
plasma_A[5] = {}; will write the default value for int to the sixth element of plasma_A, causing a global-buffer-overflow.

I assume the intention here was to fill these three arrays with zeroes, which is what I did with the memset calls.
2023-07-12 19:13:05 +10:00
Christoph Oelckers
1e2b5c2747 - added missing range checks to PlaySpriteSound.
This can be called with attr_none!
2023-06-29 18:28:16 +02:00
Christoph Oelckers
c4cb44f5f0 - RR: thunder may only be triggered when the player sees a sector with an activating texture as sky. 2023-06-19 20:45:16 +02:00
Christoph Oelckers
5bbcb82ef2 - unlimited the number of sectors to have window lightning. 2023-06-19 20:34:04 +02:00
Rachael Alexanderson
f1c917cffc - mimic gzdoom/01dfcc7d9564013ae26c79ecb642e4e5578905b1 2023-06-19 04:41:58 -04:00
Christoph Oelckers
8adc32c6c9 -fixed: tilenum 0 is a valid image for flat and wall sprites.
It's only invalid for face sprites.
2023-06-05 23:35:24 +02:00
Christoph Oelckers
fcb8e7614f - new names and SWActor properties.
Not used yet
2023-06-03 10:16:48 +02:00
Christoph Oelckers
61bc698029 - sprite init code. 2023-06-01 22:08:42 +02:00
Christoph Oelckers
b31e8dd8b4 - some initial preparations for exporting SW's actors. 2023-06-01 22:07:47 +02:00
Christoph Oelckers
d74c2ba52f - added a few texture names for picnum literals. 2023-05-31 21:53:14 +02:00
Christoph Oelckers
d7a00b76f1 - added extensions to texnames parser to handle fully rotated sprite animations in one line
Also define all sprites for Shadow Warrior.
2023-05-30 22:32:58 +02:00
Christoph Oelckers
54335f7215 - got rid of the tilenum variant of hud_drawsprite. 2023-05-30 19:08:26 +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
af4189c2a1 - RR: fixed shotgun HUD placement
This original code is technically dead wrong - it just works by happenstance.
2023-05-30 18:26:05 +02:00
Christoph Oelckers
f8de8eb7a3 - Duke: fixed bad range check in tripbomb drawer. 2023-05-30 17:18:31 +02:00
Christoph Oelckers
517b77bfdc - RR: spawn the correct player class. 2023-05-30 00:11:49 +02:00
Christoph Oelckers
27d17bc413 - moving around some constants. 2023-05-29 22:16:23 +02:00
Christoph Oelckers
a2f0bfb073 - clean out digi.h
It's only the enum now - all the rest is externally defined.
2023-05-29 22:16:22 +02:00
Christoph Oelckers
d163e67a36 - named all breakable sprites. 2023-05-29 22:16:11 +02:00
Christoph Oelckers
e97dfb3687 - moved ActorActionFunc and Personality out of __LegacyState again. 2023-05-28 21:07:34 +02:00
Christoph Oelckers
b07a182df4 - change type of AF() 2023-05-28 11:19:36 +02:00
Christoph Oelckers
8d57281101 - turn the SO's Animator and PostMoveAnimator into non-functions as well.
What little is here can be done just as easily by more traditional means which are easier to serialize.
2023-05-28 11:19:35 +02:00
Christoph Oelckers
5e64d6c7aa - call ScaleSectorObject directly.
It's the only PreMoveAnimator so a bool can be used as easily as the full pointer.
2023-05-28 11:19:35 +02:00
Christoph Oelckers
20b39c6a0d - removed several non-actions from player.cpp's saveable code. 2023-05-28 11:19:35 +02:00
Christoph Oelckers
4bf0029c32 - remove lots of unneeded SAVE_CODE and SAVE_DATA declarations.
Everything ported to VMFunctions can now be saved natively and the DECISIONs never get stored in serialized pointers.
2023-05-28 11:19:35 +02:00
Christoph Oelckers
ddfb485424 - added a serializer for VMFunction pointers. 2023-05-28 11:19:34 +02:00
Christoph Oelckers
64d012b073 - implement the VM call's return value 2023-05-28 11:19:23 +02:00
Christoph Oelckers
fb79228600 - get rid of all ANIMATOR function pointers.
Everything now uses VMFunctions.
2023-05-28 09:06:51 +02:00
Christoph Oelckers
280d685774 - get rid of more ANIMATOR declarations. 2023-05-28 09:01:43 +02:00
Christoph Oelckers
4e5372133c - removed the godawful hack to use function addresses as identifier for playing sounds.
This already required a bad workaround, but let's do it cleanly now so it can be used from scripts properly.
In most places this wasn't even used to decide on sound playing at all - only the 'broadcast' decision matters.
2023-05-28 09:01:05 +02:00
Christoph Oelckers
f12cc01055 - wrap all personality decision actions in VM functions. 2023-05-28 08:52:46 +02:00
Christoph Oelckers
540f96407d - clean up ANIMATOR declarations. 2023-05-28 08:46:03 +02:00
Christoph Oelckers
1b685d8652 - wrap all action functions in a VMFunction.
To allow piece-by-piece refactoring.
2023-05-28 08:35:19 +02:00
Christoph Oelckers
89cce849e8 - wrapped more direct access to the states. 2023-05-28 08:32:52 +02:00
Christoph Oelckers
beb8368819 - more stateGroup wrapping 2023-05-28 08:24:56 +02:00
Christoph Oelckers
7eb713ab04 - wrap state setters so they can use state names. 2023-05-28 08:13:20 +02:00
Christoph Oelckers
213bdbadad - allocate VMFunction's PrintableName from the ClassDataAllocator arena.
This avoids execution order issues on shutdown. VMFunction should not use FString.
2023-05-27 22:40:47 +02:00
Christoph Oelckers
7d30f1921c - moved remaining stuff to refactor to a substructure for easier lookup later. 2023-05-27 22:15:52 +02:00
Christoph Oelckers
3612127a5e - move stuff to refactor to a sub-structure. 2023-05-27 12:37:24 +02:00
Christoph Oelckers
12266a3693 - SW: inline setting the end state. 2023-05-27 12:11:41 +02:00
Christoph Oelckers
c72e2dbbe0 - fix missing #include 2023-05-27 10:37:00 +02:00
Christoph Oelckers
98961b54a8 - removed unused variable 2023-05-27 10:11:31 +02:00
Christoph Oelckers
d20c37e708 - reinstated the state's sprite frame code.
Having frames makes management a lot easier so let's keep it.
2023-05-27 10:11:30 +02:00
Christoph Oelckers
f3ea1e312a - Backend update from GZDoom. 2023-05-27 10:10:42 +02:00
Christoph Oelckers
5dfb0c902a - consolidation of sound init code. 2023-05-27 09:12:51 +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
1468bedf4c - don't print file-not-found errors for internal SNDINFO definitions. 2023-05-27 07:15:43 +02:00
Christoph Oelckers
1cb86af5f9 - give SW's sounds proper names and move their definition out of the EXE.
Also handle custom rolloff by the sound engine
2023-05-26 23:27:46 +02:00
Christoph Oelckers
0e64a38812 - ported a few SNDINFO options from GZDoom. 2023-05-26 18:56:42 +02:00
Mitchell Richters
b69dbe1db3 - Remove some debug leftovers. 2023-05-21 20:01:17 +10:00
Christoph Oelckers
147f5ac8a0 - added GZDoom's state manager.
We will need this for SW's actors
2023-05-21 09:59:22 +02:00
Christoph Oelckers
f35ae98e13 - remove unused variable. 2023-05-21 08:11:44 +02:00
Christoph Oelckers
f58504250c - remove DCoreActor::picnum's script export.
This is something we definitely do not want to export.
2023-05-21 07:54:16 +02:00
Christoph Oelckers
1b2a249243 - got rid of all tile index constants in Exhumed. 2023-05-21 07:42:26 +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
9bf028b7f0 - eliminated use of one more tile index in Exhumed. 2023-05-20 18:27:12 +02:00
Christoph Oelckers
fd9a9232af - cleanup of Exhumed's 2D code. 2023-05-20 18:08:59 +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
56f5e01c84 fix tileCRC 2023-05-20 18:08:58 +02:00
Christoph Oelckers
a2b2e2ec87 - got rid of tileHeight and tileWidth. 2023-05-20 18:08:40 +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
a76494363c - get rid of 'picnum' in common code. 2023-05-20 12:40:57 +02:00
Christoph Oelckers
de6b5fec7b - got rid of some 'picnum's that don't reference spritetype. 2023-05-20 10:59:03 +02:00
Christoph Oelckers
5999cb8218 - fix savegame size of temp_data 2023-05-20 10:00:29 +02:00
Christoph Oelckers
43bc6edba3 - print errors in red. 2023-05-20 09:11:14 +02:00
Christoph Oelckers
4e6023ea34 add a bit of vertical tolerance to neartag's sprite check.
This is not pitch aware and can cause problems with very small sprites on occasion.
2023-05-20 09:01:46 +02:00
Christoph Oelckers
5ba01bb38d - fix crash in RR when dying with an item-less weapon. 2023-05-20 07:19:35 +02:00
Christoph Oelckers
a8e03723ef - NOSHADOW flag. 2023-05-19 23:03:20 +02:00
Christoph Oelckers
b993f05c8f - fixed missing handling for BADGUYSTAYPUT flag. 2023-05-19 23:00:27 +02:00
Christoph Oelckers
b6767aa7a3 - fixed: The MVE player ignored the initial sound playing state.
If that is off, sound must remain off.
2023-05-19 22:59:48 +02:00
Christoph Oelckers
11ba136df1 - make autosaving happen immediately for other games than Blood only.
Blood does not like it, but for the others it should be ok.
2023-05-19 22:59:47 +02:00
Christoph Oelckers
513de38723 - pass the spawner to Initialize as an explicit parameter.
Using ownerActor is not robust, for some actors this will have unwanted side effects.
2023-05-19 22:57:26 +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
cf349fbd7d - Duke: clear resource ID when setting up the original sounds for World Tour.
This made them unconditionally override the replacements - bad as they are.
2023-05-19 22:53:16 +02:00
Christoph Oelckers
3b0da4c221 - fix '-gamegrp' path 2023-05-19 22:53:16 +02:00
Christoph Oelckers
e0de0893a9 - autoaim must never apply to WW2GI's pistol. 2023-05-19 22:53:16 +02:00
Christoph Oelckers
bab432ed72 - refinement of aiming fix. 2023-05-19 22:53:15 +02:00
Christoph Oelckers
fa1e667140 - Duke/RR: Use the exact same trajectory for autoaiming and the actual attack hitscan for the pistol.
These were not identical so the pistol was likely to miss small targets the autoaim acquired. This was particularly bad for Duke's ceiling turret and RR's mosquito.
2023-05-19 22:52:36 +02:00
Christoph Oelckers
94a80dda11 - initialize the angle of script spawned actors. 2023-05-19 22:52:00 +02:00
Christoph Oelckers
e8a3e2ee53 - fixed sprite rotation in mirrors. 2023-05-19 22:51:45 +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
28e451311b - fixed ActorInfo inheritance. 2023-05-19 22:50:47 +02:00
Christoph Oelckers
aee26c2637 - reset counter in SetMove 2023-05-19 22:50:02 +02:00
Christoph Oelckers
8aaa8b4113 - use the native implementation for Duke.rnd.
This ensures that results are consistent.
2023-05-19 22:46:43 +02:00
Rachael Alexanderson
fc45636215 - remove vid_gpuswitch and all associated handling 2023-04-30 10:57:28 -04:00
Christoph Oelckers
7bb678bb7e - fixed 'move' property handler to properly store its z value. 2023-04-30 13:33:05 +02:00
Christoph Oelckers
b07a43a9db - Duke: fixed ChangeType to also change the actor's base pic. 2023-04-30 13:33:05 +02:00
alexey.lysiuk
a69d904192 - fix GCC/Clang compilation error
source/games/duke/src/types.h:178:14: error: exception specification of overriding function is more lax than base version
2023-04-30 13:14:45 +03:00
Christoph Oelckers
ecfa45c3ec - Duke: fixed animation lookup code. 2023-04-30 10:51:48 +02:00
Christoph Oelckers
b55d39e58d - fixed invocation of RunState. 2023-04-30 10:51:48 +02:00
Christoph Oelckers
83c401574c - remove debug check 2023-04-30 10:51:48 +02:00
Christoph Oelckers
4010fc1aa7 - Duke: init the animation arrays early.
app_init is too late for having the data set up during script compilation.
2023-04-30 10:51:48 +02:00
Christoph Oelckers
96b0542cd8 - flag all actors that override RunState.
This is for allowing quick checks of actors which need the special consideration.
2023-04-30 09:01:28 +02:00
Christoph Oelckers
2a38e83a2f - moved the animation code out of execute so it can be used without CON. 2023-04-30 08:57:28 +02:00
Christoph Oelckers
29322777dd - adapt the animation init code for CON replaced actors and consolidated the two cases. 2023-04-30 08:46:51 +02:00
Christoph Oelckers
21a37d2c07 - added helpers needed to run CON replacement code.
* killit must exit to the top level right away. Use an exception for this.
* two new flags to make checking easier.
* do not export killit_flag to scripting.
2023-04-30 08:11:30 +02:00
Christoph Oelckers
960e58cdf2 - move the action default propeerties into FActorInfo 2023-04-30 08:07:10 +02:00
Christoph Oelckers
9d43729e8c get rid of the killit_flag in the parse state.
Use the one in the actor instead.
2023-04-30 08:04:56 +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
01b6d9f27f - eliminated all remaining uses of picnum in Exhumed. 2023-04-29 11:32:03 +02:00
Christoph Oelckers
44e9a66319 - handle 3 more of Exhumed's picnums that were quick to refactor 2023-04-29 11:32:03 +02:00
Christoph Oelckers
0e097903c4 - got rid of a large chunk of picnum accesses in Exhumed. 2023-04-29 11:32:03 +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
47f9642294 - added compile time validation for SetAction, SetAI and SetMove.
the expression classes were deleted again, this can be done without them.
2023-04-29 10:09:36 +02:00
Christoph Oelckers
bf577916ec - made the is*** checkers compiler intrinsics.
With the exception of isWorldTour, isPlutoPak and isShareware when playing Duke these are always constant and this way can be used to completely eliminate unneeded code.
2023-04-29 10:09:36 +02:00
Christoph Oelckers
f1f1e54e04 - moved the remaining content of the flags* files directly into game.cpp 2023-04-29 09:59:54 +02:00
Christoph Oelckers
bfcceccc98 - consolidated checkhitdefault functions. 2023-04-29 09:58:42 +02:00
Christoph Oelckers
6fd4368592 - moved Duke/RR's tile name list to raze.pk3, now that internally it is not used anymore.
This way it can later also be used by editors.
2023-04-29 09:55:48 +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
bb08a118d9 - replaced the sprite precaching code with one that scans the actual content.
This will currently not do proper precacing for Duke, which requires actions to be defined as the ones from CON cannot be assigned to an actor.
2023-04-29 09:53:52 +02:00
Christoph Oelckers
83eb4852f7 - do not use literal tile numbers for initializing WW2GI's weapon gamevars.
Instead use the type numbers of the items to be spawned so it is derived from configurable data.
2023-04-29 09:51:51 +02:00
Mitchell Richters
312b649d93 - Duke: Pass HUD offsets to bike/moto drawers by const reference. 2023-04-29 09:19:09 +02:00
Christoph Oelckers
f278a29fad - migrated all RR weapons to texture names. 2023-04-29 09:16:55 +02:00
Christoph Oelckers
5d4f137623 - migrated Duke's entire HUD weapon code to texture names. 2023-04-29 09:16:46 +02:00
Christoph Oelckers
d5f1a82f21 - Duke shotgun and chaingun handled. 2023-04-29 09:13:42 +02:00
Christoph Oelckers
1aa88bd201 - more HUD refactoring 2023-04-29 09:13:28 +02:00
Christoph Oelckers
8f61abdf75 - more HUD refactoring and fixed issues with badly named textures crashing the precacher. 2023-04-29 09:08:42 +02:00
Christoph Oelckers
8a331e226f - handle cases where CON tries to spawn unknown actors.
It must fall back to spawning an inert sprite in these cases, not just fail.
2023-04-29 07:06:53 +02:00
Christoph Oelckers
34160a4354 - ported the scuba mask drawers to texture IDs.
These were also the last places in Duke using tileWidth and tileHeight.
2023-04-29 07:06:42 +02:00
Mitchell Richters
ef81e713e2 - Exhumed: Clamp off vale in fix from adbd5c3c69.
* Fixes example situations where the player is underwater and smashing against the ceiling, etc.
2023-04-28 19:30:14 +10:00
Mitchell Richters
742d76a4bf - Exhumed: Tidy up some unnecessarily nested if statements in movespritez(). 2023-04-27 22:51:30 +10:00
Mitchell Richters
adbd5c3c69 - Exhumed: Fix velocity loss in movespritez() when warping.
* Old code was adjusting the actor's Z to right off the ceiling with no factoring in of the old interpolation position.
* Due to this, we were hitting the `nCamerapos.Z = min(max(nCamerapos.Z, pSector->ceilingz + 1), pSector->floorz - 1);` bounding in the draw code.
* Since game puts you right at the ceiling, we apply this to the old interpolation position, as well as the current position, however we then add their velocity back onto the current position to make the warp seamless.
2023-04-27 22:51:30 +10:00
Mitchell Richters
78df82e1ed - Exhumed: Clean up loHit global in move.cpp.
* More lazy arg passing via a global...
2023-04-27 22:51:30 +10:00