Commit graph

16364 commits

Author SHA1 Message Date
Christoph Oelckers
382689e0a7 - moved the FireProj struct into DDukeActor to avoid the rather expensive TMap code.
Later this can be moved to a dedicated subclass.
2021-12-26 23:09:58 +01:00
Christoph Oelckers
30786360bb - derive spritetype and tspritetype from a common base class to consolidate their common content. 2021-12-26 23:09:57 +01:00
Christoph Oelckers
b0ecf7e87b - unlimit the wall index in sections. 2021-12-26 23:09:57 +01:00
Christoph Oelckers
a2e280e188 - use wallsofsector in 4 more places.
# Conflicts:
#	source/build/src/polymost.cpp
2021-12-26 23:09:57 +01:00
Christoph Oelckers
588f88c9cc - migrated the actors to DObjects.
No GC yet, only the classes have been altered and some GC-related features been added.
Full switchover will require adding GC support to all data in the game.
2021-12-26 23:09:57 +01:00
Christoph Oelckers
8606045689 - Duke: made gamevars type safe and capable of managing actor pointers.
Also a few unrelated changes needed to make it compile again.
2021-12-26 23:09:56 +01:00
Christoph Oelckers
d088ab05a9 - eliminate storage of actors in the sector's hitag for some of Duke's sector effectors.
Also demoted Blood's upperLink and lowerLink to DCoreActor pointers and use static_cast for access to avoid savegame problems. The core code cannot safely serialize a DBloodActor anymore.
2021-12-26 23:09:56 +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
fa05cfbaf1 - use a real pointer in DSWActor for owner tracking. 2021-12-26 23:09:56 +01:00
Christoph Oelckers
ca10495d7c - Blood: back up player state before ending the level, not just before loading the new one.
The latter is too late, the player's actor data may already be stale and invalid here.
2021-12-26 23:09:56 +01:00
Christoph Oelckers
8a2385dd89 - actor clearing cleaned up.
We still need this until we can get rid of the static arrays...
2021-12-26 23:09:55 +01:00
Christoph Oelckers
c4d23188d5 - removed HitInfoBase::setFromEngine.
This value format no longer exists anywhere.
2021-12-26 23:09:55 +01:00
Christoph Oelckers
cf9d733994 - deleted insertAllSprites. 2021-12-26 23:09:55 +01:00
Christoph Oelckers
d3b1e34d78 - moved sprite[], spriteext[] and spritesmooth[] into DCoreActor.
Also removed the last remaining sprite pointer in saveable data.
2021-12-26 23:09:55 +01:00
Christoph Oelckers
4cecb6f955 - removed the old actor savegame code and instead implemented a virtual Serialize function.
This isn't hooked up yet, currently savegames are non-functional. They will come back once the global actor arrays are no longer relevant for maintenance.
2021-12-26 23:09:55 +01:00
Christoph Oelckers
e79cd8d87f - don't store sprite indices in walltype::portalnum 2021-12-26 23:09:54 +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
Christoph Oelckers
87ac9bee44 - refactored the owner index in tspritetype.
This is now a separate type from spritetype which contains an actor pointer instead so that sprite display can be handled without requiring a static sprite array.

# Conflicts:
#	source/build/src/polymost.cpp
2021-12-26 23:09:54 +01:00
Christoph Oelckers
eaff9e359f - refactored the owner index in tspritetype.
This is now a separate type from spritetype which contains an actor pointer instead so that sprite display can be handled without requiring a static sprite array.
2021-12-26 23:09:53 +01:00
Christoph Oelckers
793dd032b0 - getzrange cleanup. 2021-12-26 23:09:53 +01:00
Christoph Oelckers
bcc532d36f - eliminated the getzrange wrapper. 2021-12-26 23:09:53 +01:00
Christoph Oelckers
2541425b9d - getzrange is free of hack values, too. 2021-12-26 23:09:53 +01:00
Christoph Oelckers
9d85859a80 - finally got rid of the 16 bit hack return value of clipmove. 2021-12-26 23:09:53 +01:00
Christoph Oelckers
d34a5179f1 - sprite cleanup in clip code.
Just using already available data instead of the indices.
2021-12-26 23:09:53 +01:00
Christoph Oelckers
19236b2526 - removed compatibility handling for the oldest level from hitscan.
This stuff isn't even slope aware so the only legitimate reason for keeping it would be demo playback.
2021-12-26 23:09:52 +01:00
Christoph Oelckers
183f554733 - hitscan cleanup.
Also removed a bit of leftover TROR code.
2021-12-26 23:09:52 +01:00
Christoph Oelckers
8c90f48b61 - cleanup of neartag, plus direct return of a HitInfoBase struct. 2021-12-26 23:09:52 +01:00
Christoph Oelckers
e13a275cfc - got rid of the sole linear sprite iterator in Exhumed and deleted the iterator code entirely. 2021-12-26 23:09:52 +01:00
Christoph Oelckers
8c298de114 - Duke: replaced DukeLinearSpriteIterator and explicit loops over the sprite[] array. 2021-12-26 23:09:52 +01:00
Christoph Oelckers
6600f55543 - separate map loading from actor spawning for the other games, too.
It still uses the horribly messed up original spawn logic, though.
2021-12-26 23:09:51 +01:00
Christoph Oelckers
a3493048e7 - refactoring of spawn code to prepare for the other games.
Map hacks do not work in this commit!
2021-12-26 23:09:51 +01:00
Christoph Oelckers
ec888c097c - Blood: separated actor spawning from map loading. 2021-12-26 23:09:51 +01:00
Christoph Oelckers
e543c70439 - replacement of BloodLinearSpriteIterator
Preparation for eliminating sprite[]. This array can later be created by the actual spawn function.
2021-12-26 23:09:51 +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
Mitch Richters
c6774d5efd - Duke/RR: Re-add micro-movement cancellation for RR's vehicles that was dropped in 466bc84697. 2021-12-26 23:09:50 +01:00
Christoph Oelckers
379c4f1a60 - merged the cansee wrapper into the actual function and added sector validation. 2021-12-26 23:09:50 +01:00
Christoph Oelckers
363d062685 - minor sanity check improvements. 2021-12-26 23:09:50 +01:00
Mitch Richters
12a0f587a3 - SW: Add nullptr check inside WarpSectorInfo() to prevent crashes while noclipping through level. 2021-12-26 23:09:50 +01:00
Mitch Richters
10e28b8a53 - SW: Add nullptr check inside ActorTrackDecide() for walltype's nextSector() to prevent crashes while noclipping through level. 2021-12-26 23:09:49 +01:00
Mitch Richters
5085dcd866 - SW: Add nullptr check inside DoPlayerHorizon() for canslopetilt to prevent crashes while noclipping through level. 2021-12-26 23:09:49 +01:00
Christoph Oelckers
e223466f4a - removed Interp_Sprite_Z.
This was redundant and interfered with the reworked automatic sprite interpolation.
2021-12-26 23:09:49 +01:00
Christoph Oelckers
2654a19cfd - got rid of setspritez(x) and moved the implementation to SetActor(Z) without referencing the sprite array. 2021-12-26 23:09:49 +01:00
Christoph Oelckers
6773fa2189 - removed unused InitLists function.
# Conflicts:
#	source/build/src/engine.cpp
2021-12-26 23:09:49 +01:00
Christoph Oelckers
58cd933d74 - pass sprite array to map hack parser as parameter.
This will later allow it to work on temporaries.
2021-12-26 23:09:49 +01:00
Christoph Oelckers
5dfc79bdbe - MarkSectorSeen 2021-12-26 23:09:48 +01:00
Christoph Oelckers
f9b1164747 - use point2Wall wherever possible. 2021-12-26 23:09:48 +01:00
Christoph Oelckers
83cf2f3baf -more index stuff. 2021-12-26 23:09:48 +01:00
Christoph Oelckers
ee1b574830 - engine stuff 2021-12-26 23:09:48 +01:00
Christoph Oelckers
b663b8ea26 - wallptr reduction. 2021-12-26 23:09:48 +01:00
Christoph Oelckers
eb0f91e26b - pass sector pointer to render_camtex. 2021-12-26 23:09:47 +01:00