Mitch Richters
a7e99a3bd1
- Duke/RR: Do nullptr test in ceilingspace_r()
after receiving crash in Redneck Rampage Route 66 (do Duke for parity).
2021-12-07 19:41:22 +11:00
Mitch Richters
96867e15d5
- Duke: Apply same nullptr fix in 2e7496888a
to prelevel_r()
, and rename sect
to sectp
for 1:1 match between _d.cpp and _r.cpp files.
2021-12-07 19:41:18 +11:00
Mitch Richters
2e7496888a
- Duke: Re-add lost nullptr check in prelevel_d()
that was causing a crash while loading Duke Nukem's Penthouse Paradise.
2021-12-03 10:14:41 +01:00
Christoph Oelckers
81268cb9b6
partial Revert of "- optimized vector math."
...
This reverts commit 826fd7ddb2
.
Looks like there's dependencies on the intermediate variables. The optimized code gave the same result but did not work anymore.
2021-12-02 23:32:20 +01:00
Christoph Oelckers
c2baa68160
- fixed camera textures breaking in SW when restarting a level.
...
This was caused by attempting to delete the camera textures when cleaning up the mirror array.
The Build tile manager was not prepared for such a use case and left a broken texture behind.
To allow this to function it now resets the texture replacement type when deleting a tile and to avoid creating new camera textures these will now be stored in a cache and recycled later.
2021-12-02 21:40:43 +01:00
Christoph Oelckers
60630f5b84
- do not init pointers to 0xffffffffffffffff.
...
These will most certainly crash when used in any way.
2021-12-02 18:42:02 +01:00
Christoph Oelckers
cb099b1b66
- added two missing semicolons.
...
Unbelievable that this was legal C++ and didn't even get a warning!
2021-12-01 23:30:02 +01:00
Christoph Oelckers
57aca0ed07
- SW: fixed sector object setup with vator effect.
...
This used some weird initialization logic that was missed when first modifying this code.
2021-12-01 21:00:00 +01:00
Christoph Oelckers
324e35e776
- SW: fixed use of uninitialized variable in WallSetup
2021-12-01 19:55:18 +01:00
Christoph Oelckers
5bb114ba6e
- fixed two bad actor references in Exhumed's radial damage code.
...
The radial source is passed through pRadialActor, not pObjActor.
2021-11-30 22:44:54 +01:00
Christoph Oelckers
690994ea1e
- Duke: fix missing sectp update in processinput_d.
...
RR version had this correct
2021-11-30 00:20:16 +01:00
Christoph Oelckers
64cad55d73
- fixed updatesector and changed updatesectorz to use the same search algorithm.
...
The initial distance check in updatesectorneighbor had a far too low threshold which would skip the breadth-first search for relatively small distances already.
Exhumed's LEV1 and Duke's Lunatic Fringe were the most obvious candidates where this could cause problems.
Changed to use a mixture of the original updatesector with the revised algorithm so that all immediate neighbors of the start sector will get visited unconditionally.
updatesectorz was still the original function from Shadow Warrior, this also was changed to use the same algorithm as uodatesector.
2021-11-30 00:15:25 +01:00
Christoph Oelckers
71dfe7ecfe
- fixed handling for cl_capfps and cl_nointerpolate to never use any smoothratio value other than 1.0.
2021-11-29 00:57:11 +01:00
Christoph Oelckers
b54e52330c
- Blood: don't play the same looped sound multiple times on the same actor.
...
This caused some strong echoing on E4M6.
2021-11-29 00:57:11 +01:00
Christoph Oelckers
1de9c63d45
- fixed center aligned rendering of 2D content.
...
This calculates the centered pivot point in integer texel coordinate space so for odd numbers it must round down instead of using a fractional position.
2021-11-29 00:57:10 +01:00
Christoph Oelckers
ec63dd4cb3
- SW: precacheMap cleanup
2021-11-29 00:57:09 +01:00
Christoph Oelckers
b73ea76c18
- cleaned out Bunny_Count declarations.
...
One is enough.
2021-11-29 00:57:09 +01:00
Mitch Richters
73c5bef580
- Blood: Remove duplicated code from render3DViewPolymost()
that's already performed in viewDrawScreen()
.
2021-11-29 00:56:33 +01:00
carnivoroussociety
61cafc7d57
[Blood] Fix self collisions for lifeleech projectiles
2021-11-29 00:56:33 +01:00
carnivoroussociety
958d004119
[Blood] Match view height clamping behavior to 1.21
2021-11-29 00:56:32 +01:00
Christoph Oelckers
cd3288860a
- fixed automap player drawing for follpw mode off in all games.
2021-11-29 00:56:32 +01:00
Christoph Oelckers
2949361c82
- Duke/RR: added null checks to all spawn() calls
2021-11-29 00:56:32 +01:00
Christoph Oelckers
d5a6be3d96
- cleaned up Duke's spawn code.
...
The paths for initializing a map placed sprite and spawning a new actor at run time are now fully separate aside from the actual initialization of the actor.
2021-11-29 00:56:31 +01:00
Christoph Oelckers
4c7662b4ea
- Duke/RR: guard all calls to EGS with a null pointer check.
...
Spawning sprites into the void will crash the engine so these must be blocked which requires a failure check here.
With this pressing fire while in the void no longer crashes the game - it won't fire anything, either, though.
2021-11-29 00:56:31 +01:00
Christoph Oelckers
fcbb7320a8
- Duke/RR: added all checks needed for not letting Duke crash with noclip when not accepting -1 as a valid sector pointer.
...
All places that were causing a crash are now guared by calling 'insector()'.
2021-11-29 00:56:31 +01:00
Christoph Oelckers
8972dbe5da
- actorstayput
2021-11-29 00:56:31 +01:00
Christoph Oelckers
4a81d45630
- the remaining sector[] stuff in Duke/RR.
...
What remains is either engine interface code or not easily replaced.
2021-11-29 00:56:31 +01:00
Christoph Oelckers
5e66a3331d
- getanimationgoal.
2021-11-29 00:56:30 +01:00
Christoph Oelckers
baf36a321b
- inside, haskey and removed unused processmove functions.
2021-11-29 00:56:30 +01:00
Christoph Oelckers
3970c9a757
- use sector pointers in actors_lava.cpp
2021-11-29 00:56:30 +01:00
Christoph Oelckers
9b6d6eb7f9
- sector[] in render interface
2021-11-29 00:56:30 +01:00
Christoph Oelckers
db96e93adc
- animatesect, setanimation and related stuff.
2021-11-29 00:56:30 +01:00
Christoph Oelckers
b0ced98d5e
- changed main EGS function.
2021-11-29 00:56:29 +01:00
Christoph Oelckers
09c2677fe7
- lots of EGS calls.
2021-11-29 00:56:29 +01:00
Christoph Oelckers
876d1dbe1f
- operatesectors and activatebysector.
2021-11-29 00:56:29 +01:00
Christoph Oelckers
c57c007010
- do the remaining st handlers.
2021-11-29 00:56:29 +01:00
Christoph Oelckers
2aec8f47d3
- more st functions.
2021-11-29 00:56:29 +01:00
Christoph Oelckers
2a290dec48
- handle_st15 / handle_st16.
2021-11-29 00:56:29 +01:00
Christoph Oelckers
da4df04e7d
- sector[] in handle_st09.
2021-11-29 00:56:28 +01:00
Christoph Oelckers
45519f67c1
- Duke: let neartag return pointers
2021-11-29 00:56:28 +01:00
Christoph Oelckers
a9aadfd63d
- neartag cleanup in checksectors.
2021-11-29 00:56:28 +01:00
Christoph Oelckers
3d05020f4c
- checkhitceiling + ceilingglass are sector[] free.
2021-11-29 00:56:28 +01:00
Christoph Oelckers
747fc11eb7
- Duke: use sector pointer in movement code
2021-11-29 00:56:28 +01:00
Christoph Oelckers
931c71a78c
- use sector iterator for cheatUnlock
2021-11-29 00:56:27 +01:00
Christoph Oelckers
a7634c4cad
- Duke: use pointers in interpolation interface.
2021-11-29 00:56:27 +01:00
Christoph Oelckers
0d8b380b05
- use wallsofsector for all remaining iterations over a sector's walls.
2021-11-29 00:56:27 +01:00
Christoph Oelckers
ac5425a545
- extended player_orig.os to full int.
...
This was the last remaining short variable in Duke/RR that holds a sector index.
2021-11-29 00:56:27 +01:00
Christoph Oelckers
a0950081ad
- fixed bad sector use in handle_st18
2021-11-29 00:56:27 +01:00
Christoph Oelckers
5c9327a788
- use pointer variant of nextsectorneighborz.
2021-11-29 00:56:27 +01:00
Christoph Oelckers
0f2f46ec35
- made one_parallax_sectnum a pointer
2021-11-29 00:56:26 +01:00
Christoph Oelckers
bc199d00c7
- made 'clouds' a pointer array.
2021-11-29 00:56:26 +01:00
Christoph Oelckers
7a9e39a96b
- delete some inactive code.
2021-11-29 00:56:26 +01:00
Christoph Oelckers
adf3133fdc
- use sectnum and wallnum to get an index from pointers instead of subtracting the array base.
2021-11-29 00:56:26 +01:00
Christoph Oelckers
4e31360fe4
- cleaned up dragpoint
...
This still contained some code for EDuke32's TROR and used a shared static global array.
It now uses the BFSSearch class to manage its bit array to unlimit the size of its working set and to avoid reallocation.
2021-11-29 00:56:25 +01:00
Christoph Oelckers
7126aa22f4
- preparations in the map loader for dynamically sized data storage.
...
This also consolidates these parts for Blood with the other games.
2021-11-29 00:56:25 +01:00
Christoph Oelckers
33a3e0d8bf
- deleted some unused global variables, code simplification plus extended wall index field in Trap
...
Todo: give fields more meaningful names!
2021-11-29 00:56:25 +01:00
Christoph Oelckers
c1c59006bc
- Exhumed: cleaned up disassembly-like code in SnapSectors
2021-11-29 00:56:25 +01:00
Christoph Oelckers
e6682f4489
- Exhumed: some simple wall stuff
2021-11-29 00:56:25 +01:00
Christoph Oelckers
7b1345d3e5
- Exhumed: wall stuff in AddFlash
2021-11-29 00:56:24 +01:00
Christoph Oelckers
c31d8a93fd
- a few more
...
Enough of this - Duke is clearly clean of bad storage now
2021-11-29 00:56:24 +01:00
Christoph Oelckers
53122355fe
- more sectors in spawn.cpp
2021-11-29 00:56:24 +01:00
Christoph Oelckers
c79dace730
- eliminated sector[] in position checkers
2021-11-29 00:56:24 +01:00
Christoph Oelckers
27af8a52e9
- the final walls
...
What is left now of wall[] and wallnum() needs to remain.
2021-11-29 00:56:24 +01:00
Christoph Oelckers
a26dc25e97
- lotsofpopcorn
2021-11-29 00:56:24 +01:00
Christoph Oelckers
35eb94b89a
- lotsofcolourglass
2021-11-29 00:56:23 +01:00
Christoph Oelckers
344041167e
- add setanimation variant taking a wall pointer
...
Mainly to get rid of wallnum()calls elsewhere.
2021-11-29 00:56:23 +01:00
Christoph Oelckers
83344818fd
- pass wall pointer to breakwall
2021-11-29 00:56:23 +01:00
Christoph Oelckers
567a360092
- store wall pointers in animwall
2021-11-29 00:56:23 +01:00
Christoph Oelckers
6b73a37b56
- made mirrorsector a pointer array
2021-11-29 00:56:23 +01:00
Christoph Oelckers
58cd8bd6b9
- make mirrorwall a pointer array
2021-11-29 00:56:23 +01:00
Christoph Oelckers
caa9ef6dd3
- make access_wallnum a pointer
2021-11-29 00:56:22 +01:00
Christoph Oelckers
e7369a2796
- use pointers for checkhitswitch and took separated clearcameras to a new functions to make this free of gotos.
2021-11-29 00:56:22 +01:00
Christoph Oelckers
9d8e7ea759
- crane cleanup
...
This now uses its own struct where it can store the needed actor pointer directly.
2021-11-29 00:56:22 +01:00
Christoph Oelckers
d405da9195
- changed furthestcanseepoint return value
...
This does not need to return a sector - the caller merely expects success or failure.
2021-11-29 00:56:22 +01:00
Christoph Oelckers
4823152107
- hitawall
2021-11-29 00:56:22 +01:00
Christoph Oelckers
d45ab528e6
- hitscan in player_r.cpp
2021-11-29 00:56:21 +01:00
Christoph Oelckers
1a11e445c3
- remaining hitscans in player_d.cpp
2021-11-29 00:56:21 +01:00
Christoph Oelckers
b68c66dae6
-Duke/RR: started migrating hitscan to pointer usage.
2021-11-29 00:56:21 +01:00
Christoph Oelckers
09e75ddca2
- change wall parameter of checkhitwall.
2021-11-29 00:56:21 +01:00
Christoph Oelckers
c410b1be45
- glass stuff
2021-11-29 00:56:21 +01:00
Christoph Oelckers
200daacd3c
- checksectors*
2021-11-29 00:56:20 +01:00
Christoph Oelckers
a38fdd2890
-more in spawneffectors
2021-11-29 00:56:20 +01:00
Christoph Oelckers
94d0e9775f
- spawneffectors
2021-11-29 00:56:20 +01:00
Christoph Oelckers
cccc577c2e
- lotsofpopcorn + dofurniture
2021-11-29 00:56:20 +01:00
Christoph Oelckers
8c4cb75d8c
- checkhitswitch_r
2021-11-29 00:56:20 +01:00
Christoph Oelckers
6d4365f3a2
- animatewalls_r
2021-11-29 00:56:20 +01:00
Christoph Oelckers
530c29973e
- more walls in sectors_d.cpp
2021-11-29 00:56:20 +01:00
Christoph Oelckers
7268e779a7
- checkhitswitch_d
2021-11-29 00:56:19 +01:00
Christoph Oelckers
8cf3963901
- animatewalls_d
2021-11-29 00:56:19 +01:00
Christoph Oelckers
7615a52126
-operatesectors + operateforcefields.
2021-11-29 00:56:19 +01:00
Christoph Oelckers
60f16e8fb8
- handle_st09
2021-11-29 00:56:19 +01:00
Christoph Oelckers
463ce55d0b
- premap
2021-11-29 00:56:19 +01:00
Christoph Oelckers
7a504e27d2
- premap_d
2021-11-29 00:56:19 +01:00
Christoph Oelckers
6b8e7b3fbc
- RR: movement code
2021-11-29 00:56:18 +01:00
Christoph Oelckers
1953f0f599
- delete unused variables.
2021-11-29 00:56:18 +01:00
Christoph Oelckers
aee2668088
- RR shootWeapon
2021-11-29 00:56:18 +01:00
Christoph Oelckers
b97f8706ad
- operateTripBomb
2021-11-29 00:56:18 +01:00
Christoph Oelckers
e88047fc45
- wall[] in shootknee, shootweapon and shootlaser.
2021-11-29 00:56:18 +01:00
Christoph Oelckers
81894fd831
- Duke: shootbloodsplat
2021-11-29 00:56:18 +01:00
Christoph Oelckers
2fa027a686
- RR: deal with wall[] in actor_lava.cpp
2021-11-29 00:56:17 +01:00
Christoph Oelckers
399f254629
- the definitely last bit: There was still a spritenum reference in NEAR_TAG_INFO
...
SW done!
2021-11-29 00:56:17 +01:00
Christoph Oelckers
b97760db29
- forgotten cleanup.
2021-11-29 00:56:17 +01:00
Christoph Oelckers
ed2d8373fc
- final cleanup.
2021-11-29 00:56:17 +01:00
Christoph Oelckers
e12ae040de
- collision code cleanup.
...
# Conflicts:
# source/games/sw/src/game.h
# source/games/sw/src/sprite.cpp
# Conflicts:
# source/games/sw/src/game.h
2021-11-29 00:56:17 +01:00
Christoph Oelckers
898f56dd86
- User[] is mostly gone.
...
All access is now through the actor.
2021-11-29 00:56:16 +01:00
Christoph Oelckers
cd73cd616e
- ActorDrop.
2021-11-29 00:56:16 +01:00
Christoph Oelckers
56760d1824
- CanGetWeapon
2021-11-29 00:56:16 +01:00
Christoph Oelckers
88a5a95cde
- SpriteNum cleanup.
2021-11-29 00:56:16 +01:00
Christoph Oelckers
03c9ef6d20
- SetGunQuake
2021-11-29 00:56:16 +01:00
Christoph Oelckers
2f1e23a654
- replaced PLAYER::PlayerSprite with PLAYER::actor
...
# Conflicts:
# source/games/sw/src/save.cpp
2021-11-29 00:56:15 +01:00
Christoph Oelckers
5b10e9f2d5
- got rid of SpriteP pointers in PLAYER and USER.
2021-11-29 00:56:15 +01:00
Christoph Oelckers
8d95b9cb98
- got rid of the PlaySound variant taking a sprite pointer.
2021-11-29 00:56:15 +01:00
Christoph Oelckers
580b7002fb
- PlaySound calls in DoGet.
2021-11-29 00:56:15 +01:00
Christoph Oelckers
6f8480ebc3
- KillGet... functions.
2021-11-29 00:56:15 +01:00
Christoph Oelckers
95b7949f7d
- minor sprite.cpp cleanup.
2021-11-29 00:56:14 +01:00
Christoph Oelckers
cb477d4ab7
- ActorSpawn cleanup.
2021-11-29 00:56:14 +01:00
Christoph Oelckers
d8ea4db5b2
- Got rid of SpawnSprite.
2021-11-29 00:56:14 +01:00
Christoph Oelckers
a57af58d4c
- get rid of KillSprite.
2021-11-29 00:56:14 +01:00
Christoph Oelckers
431103032f
- SpriteOverlapZ
2021-11-29 00:56:14 +01:00
Christoph Oelckers
66e61d799d
- handle the remaining SectIterators.
2021-11-29 00:56:14 +01:00
Christoph Oelckers
df5d980f79
- handle all remaining StatIterators.
2021-11-29 00:56:13 +01:00
Christoph Oelckers
69223af7b0
- SpriteControl and subfunctions.
2021-11-29 00:56:13 +01:00
Christoph Oelckers
591a3f623d
- dead code removal.
2021-11-29 00:56:13 +01:00
Christoph Oelckers
79dcd2c178
- iterators in CollectPortals
2021-11-29 00:56:13 +01:00
Christoph Oelckers
8df851c3e3
- unsaved bits.
2021-11-29 00:56:13 +01:00
Christoph Oelckers
f8105dc92b
- track.cpp complete.
2021-11-29 00:56:12 +01:00
Christoph Oelckers
4796ebc73c
- track setup code
2021-11-29 00:56:12 +01:00
Christoph Oelckers
92c497ac29
- TrackSetup
2021-11-29 00:56:12 +01:00
Christoph Oelckers
c34f0ab210
- SectorObjectSetupBounds
...
Note: Do proper checks on crashing mapping errors. Asserts are insufficient for these!
2021-11-29 00:56:12 +01:00
Christoph Oelckers
41f8c6f4af
- owner fixes in weapons.cpp.
...
# Conflicts:
# source/games/sw/src/game.h
# Conflicts:
# source/games/sw/src/game.h
# source/games/sw/src/weapon.cpp
2021-11-29 00:56:12 +01:00
Christoph Oelckers
e908e4ff44
- final bit of weapon.cpp cleanup.
2021-11-29 00:56:12 +01:00
Christoph Oelckers
31f4a7464a
- finishing up with DoDamage.
2021-11-29 00:56:11 +01:00
Christoph Oelckers
487e2b7a1e
- ActorHealth + ActorPain
2021-11-29 00:56:11 +01:00
Christoph Oelckers
93ad08a167
- ActorStdMissile + ActorDamageSlide
...
# Conflicts:
# source/games/sw/src/weapon.cpp
2021-11-29 00:56:11 +01:00
Christoph Oelckers
2c39177c07
- ActorChooseDeath
2021-11-29 00:56:11 +01:00
Christoph Oelckers
604731bc08
- GetDamage
...
# Conflicts:
# source/games/sw/src/weapon.cpp
2021-11-29 00:56:11 +01:00
Christoph Oelckers
2b4ed0eaf3
- PlayerCheckDeath
2021-11-29 00:56:10 +01:00
Christoph Oelckers
14b3a68e8c
- DoDamage API.
...
# Conflicts:
# source/games/sw/src/weapon.cpp
2021-11-29 00:56:10 +01:00
Christoph Oelckers
f8eac8c8eb
- SpriteOverlap
2021-11-29 00:56:10 +01:00
Christoph Oelckers
2c4862b220
- DoDamageTest + DoHitscanDamage + DoFlamesDamageTest
2021-11-29 00:56:10 +01:00
Christoph Oelckers
ddd6f881f0
- DoExpDamageTest + DoMineExpMine
2021-11-29 00:56:10 +01:00
Christoph Oelckers
15e7e784c5
- did the internal movement helpers.
2021-11-29 00:56:09 +01:00
Christoph Oelckers
a073ef65e7
- low level move functions now return a Collision struct.
...
# Conflicts:
# source/games/sw/src/sprite.cpp
2021-11-29 00:56:09 +01:00
Christoph Oelckers
606ce997ac
- cleanup of collision maintenance.
...
u->ret is gone, and for clearing the collision info the proper utilities are being called now.
2021-11-29 00:56:09 +01:00
Christoph Oelckers
5f32bc17ef
- WeaponMoveHit
2021-11-29 00:56:09 +01:00
Christoph Oelckers
edf84c6fbc
- DoStar, DoCrossBolt, DoPlasmaDone
2021-11-29 00:56:09 +01:00
Christoph Oelckers
f516a538d4
- Seekers + BlurExtend.
2021-11-29 00:56:08 +01:00
Christoph Oelckers
7d99745cd6
- DoPlasmaFountain + InitPlasmaFountain
2021-11-29 00:56:08 +01:00
Christoph Oelckers
f888375e2a
- several u->ret replaced.
2021-11-29 00:56:08 +01:00
Christoph Oelckers
05a812f066
- DoPlasma, DoCoolgFire, DoEelFire.
2021-11-29 00:56:08 +01:00