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
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
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
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
d96a928738
- Exhumed: fixed sprite positioning issues
...
Apparently tile #1 has some significance here.
2023-09-23 10:30:52 +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
82057bcd5a
- Backend update from GZDoom-
...
This compiles but doesn't run.
2023-08-23 20:36:19 +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
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
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
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
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
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
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
98961b54a8
- removed unused variable
2023-05-27 10:11:31 +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
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
f35ae98e13
- remove unused variable.
2023-05-21 08:11:44 +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
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
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
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
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
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
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
Christoph Oelckers
7bb678bb7e
- fixed 'move' property handler to properly store its z value.
2023-04-30 13:33:05 +02:00