Commit graph

296 commits

Author SHA1 Message Date
Christoph Oelckers
98f0886b3d -Duke/RR: Automatic replacement for CSTAT_SPRITE_INVISIBLE and CSTAT_SPRITE_BLOCK_ALL 2021-12-30 09:56:45 +01:00
Christoph Oelckers
4a5de6f56e - make sure that all changes of wall coordinates invalidate associated data.
walltype::move should be the preferred function to be used for this, otherwise walltype::moved needs to be called.
2021-12-30 09:53:11 +01:00
Christoph Oelckers
d1f088a858 - SW/Exhumed fixed sound relinking on actor destruction.
This still passed the sprites instead of the actors. Moved the relinking code to DCoreActor::Destroy because it is the same for all games.
Also did a little bit of sound cleanup to ensure the sound backend does not hold stale actor pointers.
2021-12-30 09:53:10 +01:00
Christoph Oelckers
8ee5d1b0d7 - activated the garbage collector
This finally gets rid of all static storage for actors - so no more indices ever! :)
2021-12-26 23:10:00 +01:00
Christoph Oelckers
138690d34e - do not use auto to make local copies of TObjPtr's.
This will just copy the object without performing the read barrier on the source data which is not what we want here.
For these assignments the type must be explicit.
2021-12-26 23:09:59 +01:00
Christoph Oelckers
5d09748af9 - Duke: added some null pointer checks. 2021-12-26 23:09:58 +01:00
Christoph Oelckers
122a1f009d - moved gamevar storage to player and actor objects respectively.
For actors this eliminates the need to for sprite indices which was the intended goal. It also properly associates the gamevars with their owners.
2021-12-26 23:09:56 +01:00
Christoph Oelckers
f855b1020f - actor lists refactored.
No more shorts, no more static arrays.
This was one of the biggest blockers for unlimiting the engine.
2021-12-26 23:09:54 +01:00
Mitchell Richters
0c6e55d1b8 - Silence all the -Wuninitialized and -Wmaybe-uninitialized warnings relating to HitInfo objects passed through to functions by reference. 2021-12-26 23:09:50 +01:00
Christoph Oelckers
b7a5ea8ef6 - moved some common utilities into the backend. 2021-12-26 23:09:44 +01:00
Christoph Oelckers
6748a39c8f - deprecate the sector index variant of pushmove 2021-12-26 23:09:43 +01:00
Christoph Oelckers
70d7e81f4f - adapted getzrange to the new interface.
This was mainly removing game side solutions in favor of a common one in the backend.
2021-12-26 23:09:42 +01:00
Christoph Oelckers
4788c7ba5e - made Collision derive from a common base class and refactored clipmove to a single engine-side entry point.
Done for Doom so far.
2021-12-26 23:08:57 +01:00
Christoph Oelckers
10dce7dd2d - adapted all hitscan calls in Duke/RR. 2021-12-26 23:08:56 +01:00
Christoph Oelckers
33c707c708 - Duke: getangle simplification 2021-12-26 23:08:40 +01:00
Christoph Oelckers
38d64fc437 spritetype::setsector 2021-12-25 21:28:57 +01:00
Christoph Oelckers
3bd1272e08 - sectnum removal step 2021-12-25 21:28:56 +01:00
Christoph Oelckers
6aac952658 - started eliminating sectnum 2021-12-25 21:28:56 +01:00
Christoph Oelckers
d1f7269ca8 replaced cursectnum with a cursector pointer 2021-12-25 21:28:56 +01:00
Christoph Oelckers
69a7b4d0bc - final cleanup before replacement 2021-12-25 21:28:55 +01:00
Christoph Oelckers
fcbf861ad4 - final preparations for changing type of cursectnum 2021-12-25 21:28:55 +01:00
Christoph Oelckers
312b1fd39f - cursectnum first half 2021-12-25 21:28:55 +01:00
Christoph Oelckers
b1b0c5d25c — Duke: use twoSided utility where appropriate. 2021-12-25 21:28:54 +01:00
Christoph Oelckers
d115d90961 - Duke: prefer calling the sector pointer variants of engine functions. 2021-12-25 21:28:54 +01:00
Christoph Oelckers
ef7fcd824f - use insector and sector pointer initialization for iterator 2021-12-25 21:28:54 +01:00
Christoph Oelckers
c5e45f1021 - use actor->sector() to initialize iterators. 2021-12-25 21:28:51 +01:00
Christoph Oelckers
aada3f3d19 - renamed DDukeActor::getSector. 2021-12-25 21:28:51 +01:00
Christoph Oelckers
9ab35816ea - the crane still stored a sector index in temp_data. 2021-12-25 21:28:40 +01:00
Christoph Oelckers
69c21407a7 - pass a sector pointer to checkcursectnums. 2021-12-25 21:28:39 +01:00
Christoph Oelckers
3ce2375a3e - LocateTheLocator + related sector storage in temp_data 2021-12-25 21:28:39 +01:00
Christoph Oelckers
64f1029416 - Duke: pass a sector pointer to callsound. 2021-12-25 21:28:39 +01:00
Mitch Richters
c6f2aaf1b7 - Miscellaneous fixes to commit to change sector checks over to validSectorIndex().
* Fix missed changeover in Blood's `actSpawnSprite()`.
* Fix non-negated check on a `validSectorIndex()` call in Blood's `debrisMove()`.
* Removed a superfluous terminator in Duke's `actor.cpp`.
* Fixed bad call to `validSectorIndex()` in Exhumed's `AIAnim::Tick()`.
2021-12-25 21:28:37 +01:00
Christoph Oelckers
999ec3c95a use validSectorIndex checks where appropriate.
Let’s hope that this sloppiness doesn’t have negative effects with broken maps.

# Conflicts:
#	source/games/sw/src/sprite.cpp

# Conflicts:
#	source/games/duke/src/prediction.cpp
#	source/games/duke/src/render.cpp
2021-12-25 21:28:37 +01:00
Mitchell Richters
ee1ffd2347 - Duke: Fix lotag signedness issue affecting SE10 (door auto-close).
* Originated in 01abe7b2ac while removing a casting to short.
* Fixes #594.
2021-12-10 17:26:56 +11:00
Mitch Richters
63a19bbb15 - Port spritetype::insector() over from develop and use with sector nullptr checks in 6539d72663. 2021-12-07 19:56:50 +11:00
Mitch Richters
6539d72663 - Duke/RR: Add three sector nullptr checks after receiving crash in Redneck Rampage Route 66 while noclipping. 2021-12-07 19:44:35 +11:00
Christoph Oelckers
2949361c82 - Duke/RR: added null checks to all spawn() calls 2021-11-29 00:56:32 +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
3970c9a757 - use sector pointers in actors_lava.cpp 2021-11-29 00:56:30 +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
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
0f2f46ec35 - made one_parallax_sectnum a pointer 2021-11-29 00:56:26 +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