Mitchell Richters
a4d165a84e
- Tidy some specified bound equals destination size
warnings from GCC.
2021-12-26 23:10:05 +01:00
Christoph Oelckers
b89bba5ed1
- Duke: DDukeActor::setActiveCrane must also clear ownerActor.
...
Apparently something in the crane code can cause a condition where this wasn't cleared before grabbing a player.
Formerly these two were the same variable but had to be separated.
2021-12-26 23:10:05 +01:00
Christoph Oelckers
d8ccfa1a5f
- cleaned up nextsectorneighborz, added a safe variant and use this in all places where the sector pointer is not validated.
2021-12-26 23:10:05 +01:00
Mitchell Richters
18bd2e4d07
- SW: Destroy actor in KillActor()
after clearing the pointed to sprite, not before it.
...
* No idea if it matters but it seems logical that this is how it should be.
2021-12-26 23:10:05 +01:00
Mitchell Richters
65a55d3589
- SW: Tidy up function declarations where return type was on its own line.
2021-12-26 23:10:05 +01:00
Mitchell Richters
953c7e4ed6
- Blood: Fix some collision issues found following refactoring.
...
* Originating from 9a2ca3f392e29fe8df4167c271a7b04ab5e8959c "- use refactored Collision struct and clipmove in Blood, too.".
2021-12-26 23:10:04 +01:00
Christoph Oelckers
b4a968841a
- missing null check in Blood's map loader.
2021-12-26 23:10:04 +01:00
Mitchell Richters
14b8eda436
- Get rid of some now irrelevant comments.
2021-12-26 23:10:03 +01:00
Christoph Oelckers
74da3e5fa7
- added savegame support for the new actor management.
2021-12-26 23:10:03 +01:00
Mitchell Richters
2dda3ee505
- Tidy up some GCC warnings about ininitialised variables, memsetting non-trivial types and some others.
2021-12-26 23:10:02 +01:00
Christoph Oelckers
b8c4354691
- got rid of the MAX... constants and adjusted all places still using them.
2021-12-26 23:10:02 +01:00
Christoph Oelckers
1a3b9f8ac0
- made several arrays holding sector related data dynamic.
2021-12-26 23:10:02 +01:00
Christoph Oelckers
838bed7800
- final cleanup of sectnum related stuff.
...
Made sure that remaining uses of sector indices are safe to be kept and deleted a few redundant functions.
2021-12-26 23:10:01 +01:00
Christoph Oelckers
6d432fca0a
- made spritetype::sectnum a pointer.
2021-12-26 23:10:01 +01:00
Christoph Oelckers
6a43a270fa
- use sectno() access function where we really need a sector index.
2021-12-26 23:10:01 +01:00
Christoph Oelckers
2d913982da
- changed map loader to work without relying on spritetype::sectnum.
...
All access to this field is done through access functions now.
2021-12-26 23:10:01 +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
0dd756fa32
- added GC handling for all backend pointers in the map data.
...
GC is not active yet!
2021-12-26 23:10:00 +01:00
Christoph Oelckers
db240ea2b0
- GC support in SW.
...
- SW GC WIP
2021-12-26 23:10:00 +01:00
Christoph Oelckers
6cb260d916
- SW GC preparation commit noise.
2021-12-26 23:10:00 +01:00
Christoph Oelckers
1d371b8cbf
- clear some data on init.
2021-12-26 23:09:59 +01:00
Christoph Oelckers
8dde6a3074
- Added GC support to Exhumed
2021-12-26 23:09:59 +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
16a8746971
- GC setup for Blood.
2021-12-26 23:09:58 +01:00
Christoph Oelckers
fa62b20d76
- GC setup for Duke.
2021-12-26 23:09:58 +01:00
Christoph Oelckers
5d09748af9
- Duke: added some null pointer checks.
2021-12-26 23:09:58 +01:00
Christoph Oelckers
42e4e9288f
- deleted GetSpriteIndex.
...
It's not needed anymore.
2021-12-26 23:09:58 +01:00
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
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
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
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
183f554733
- hitscan cleanup.
...
Also removed a bit of leftover TROR code.
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
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
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
Christoph Oelckers
a22634f228
- sectnum reduction.
2021-12-26 23:09:47 +01:00
Christoph Oelckers
34373e9c70
- fixed use of wrong indexing function.
2021-12-26 23:09:47 +01:00
Christoph Oelckers
73243f95bb
- make Blood's burn source a pointer.
2021-12-26 23:09:46 +01:00
Christoph Oelckers
3a44f168e0
- Blood: Fix DeleteSprite
2021-12-26 23:09:46 +01:00
Christoph Oelckers
9213eae606
- deleted unused functions.
2021-12-26 23:09:46 +01:00
Christoph Oelckers
a59173ac31
- SW: fixed DeleteNoSoundOwner still checking for sprites as sound origins.
2021-12-26 23:09:46 +01:00
Christoph Oelckers
0a9792ac28
- adapted SW's sound system to actors.
2021-12-26 23:09:46 +01:00
Christoph Oelckers
221d9fe28e
- adapted Duke's and Exhumed's sound code to directly work with actors.
...
This was already wrapped so all that needed to be done was removing the wrapper.
2021-12-26 23:09:46 +01:00
Christoph Oelckers
97b19a5cb1
- adapted Blood's sound engine to using actors.
...
Note: Savegames won't work on this commit for the other games!
2021-12-26 23:09:45 +01:00
Christoph Oelckers
75b36cbd1c
- Duke: made player.i a real pointer
...
How could I overlook this one.
2021-12-26 23:09:45 +01:00
Christoph Oelckers
befc4572e9
- minimal backend array removal.
2021-12-26 23:09:45 +01:00
Christoph Oelckers
b7a5ea8ef6
- moved some common utilities into the backend.
2021-12-26 23:09:44 +01:00
Christoph Oelckers
bbb860ccf3
- consolidate the iterators in the backend.
...
Using a template class that can adapt to the game specific types.
2021-12-26 23:09:44 +01:00
Christoph Oelckers
12f6b05cbe
- use access functions, all done by search & replace.
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
2aefe4398b
- sector[tspr->sectnum] globally replaced.
2021-12-26 23:09:43 +01:00
Christoph Oelckers
02ef323086
- SW: handle getzrangepoint
2021-12-26 23:09:43 +01:00
Christoph Oelckers
53be5d1622
- use a sector pointer in FAFgetzrange.
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
729076b79d
- adapted neartag in SW and Exhumed.
2021-12-26 23:09:42 +01:00
Christoph Oelckers
91e2391911
- adapted neartag in Duke.
2021-12-26 23:09:42 +01:00
Christoph Oelckers
1840ab0d05
- deal with a few ->sectnum's in SW.
2021-12-26 23:09:42 +01:00
Christoph Oelckers
321608e5ac
- made cursectnum et. al. real pointers.
2021-12-26 23:09:41 +01:00
Christoph Oelckers
f19f656dd9
- deal with SW's Warp functions.
2021-12-26 23:09:41 +01:00
Christoph Oelckers
10d0ea29ce
- renamed some sectnum variables.
2021-12-26 23:09:41 +01:00
Christoph Oelckers
ef6bc9db56
- do the remaining clipmove calls.
2021-12-26 23:09:41 +01:00
Christoph Oelckers
bdbb3b4004
- handled the main actor movement functions.
2021-12-26 23:09:40 +01:00
Christoph Oelckers
afd05add96
- adapted several clipmove calls in SW.
2021-12-26 23:09:40 +01:00
Christoph Oelckers
c0b0b00f96
fixed collision access.
2021-12-26 23:09:09 +01:00
Christoph Oelckers
30f36e4871
- use backend's collision struct in SW.
2021-12-26 23:08:58 +01:00
Christoph Oelckers
b3bbf8932e
- same procedure for Exhumed.
2021-12-26 23:08:58 +01:00
Christoph Oelckers
8ce34c7772
- use refactored Collision struct and clipmove in Blood, too.
2021-12-26 23:08:57 +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
96b9572905
- moved parts of the HitInfo subclasses into the backend.
...
All the game code now needs to do is a single 'using' statement.
2021-12-26 23:08:57 +01:00
Christoph Oelckers
a5ccd2ccd2
- adapted FAFhitscan to the new backend API.
...
Lots of search & replace to change the names of the HitInfo struct, no manual edits outside of FAFhitscan.
2021-12-26 23:08:57 +01:00
Christoph Oelckers
3f43f48b57
- adapted all SW hitscan calls outside of FAFhitscan.
2021-12-26 23:08:56 +01:00
Christoph Oelckers
4bfb03b6b3
- adapted hitscan calls in Exhumed.
2021-12-26 23:08:56 +01:00
Christoph Oelckers
10dce7dd2d
- adapted all hitscan calls in Duke/RR.
2021-12-26 23:08:56 +01:00
Christoph Oelckers
129ce0aea8
- migrated Blood's hitscan calls and its global gHitInfo struct.
2021-12-26 23:08:56 +01:00
Christoph Oelckers
9380819e4e
- initialize actorArray for all games.
...
- the foundation for an actor aware backend.
2021-12-26 23:08:56 +01:00
Christoph Oelckers
52c80f187a
- added coreactor.h
2021-12-26 23:08:55 +01:00
Christoph Oelckers
e526686d1e
- the really final ones.
2021-12-26 23:08:55 +01:00
Christoph Oelckers
7dd2f79676
- the final ones before moving to the backend.
2021-12-26 23:08:55 +01:00
Christoph Oelckers
33d2d80c42
- sector references in remote, some cursectnum replacements.
2021-12-26 23:08:55 +01:00
Christoph Oelckers
104e80e34a
- NEAR_TAG_LIST, also deleted useless OperateWall code.
2021-12-26 23:08:55 +01:00
Christoph Oelckers
b7cfb07245
- all sectnums that can trivially be replaced.
...
Most of the rest is in backend calling code and should be done while cleaning up the backend API.
2021-12-26 23:08:54 +01:00
Christoph Oelckers
19f8458f01
- FindCeilingView, FindFloorView and related things.
2021-12-26 23:08:54 +01:00
Christoph Oelckers
db95dc95d1
- FAF_Sector + SpawnQuake
2021-12-26 23:08:54 +01:00
Christoph Oelckers
98c3d57b73
- ->sectnum in ai.cpp and draw.cpp.
2021-12-26 23:08:54 +01:00
Christoph Oelckers
cf6e75ad54
- the final doable sector[] replacements.
...
The rest needs to be done with the backend.
2021-12-26 23:08:54 +01:00
Christoph Oelckers
e2e0f69393
- deleted deprecated Warp... functions.
2021-12-26 23:08:54 +01:00
Christoph Oelckers
c4f29772ae
- SpawnVis
2021-12-26 23:08:53 +01:00
Christoph Oelckers
1457cf2c0d
- track stuff
2021-12-26 23:08:53 +01:00
Christoph Oelckers
b3eceb3b56
- the remaining trivial sector[] replacements
2021-12-26 23:08:53 +01:00
Christoph Oelckers
1a7cc6d782
- FAFgetzrangepoint + ActorDrop
2021-12-26 23:08:53 +01:00
Christoph Oelckers
959c3bc18b
- springboard
2021-12-26 23:08:53 +01:00
Christoph Oelckers
0345615518
- some smaller changes.
2021-12-26 23:08:52 +01:00
Christoph Oelckers
9a6bd0b7e1
- SectorWallBits
2021-12-26 23:08:52 +01:00
Christoph Oelckers
1763fbc7ff
- OperateSector
2021-12-26 23:08:52 +01:00
Christoph Oelckers
df558bd9a2
- GetUpperLowerSector
2021-12-26 23:08:52 +01:00
Christoph Oelckers
0c9d465e4c
- FAF_Connect* functions and related code.
2021-12-26 23:08:52 +01:00
Christoph Oelckers
96915a646b
- SectorZadjust
2021-12-26 23:08:52 +01:00
Christoph Oelckers
b076edcc6f
- PlayerRemoteReset
2021-12-26 23:08:51 +01:00
Christoph Oelckers
75af6966c9
- FAFHitscan cleanup.
2021-12-26 23:08:51 +01:00
Christoph Oelckers
1a7c70cbbd
- use pointers in FAFHitscan
2021-12-26 23:08:51 +01:00
Christoph Oelckers
6ae8e93de8
- hitinfo.hitwall is also gone.
2021-12-26 23:08:51 +01:00
Christoph Oelckers
270a443c88
- hitinfo.hitsect is gone.
2021-12-26 23:08:51 +01:00
Christoph Oelckers
bcc61470a2
- mostly deal with hitinfo.hitsect.
2021-12-26 23:08:50 +01:00
Christoph Oelckers
f495097663
- first step of replacing hitinfo.hitsect with a pointer.
...
This takes care of easy to handle common patterns
2021-12-26 23:08:50 +01:00
Christoph Oelckers
1162442068
- handle most GetOverlapSector callers.
2021-12-26 23:08:50 +01:00
Christoph Oelckers
11d3a660ad
- GetOverlapSector internals.
2021-12-26 23:08:50 +01:00
Christoph Oelckers
4d5c255b08
- adjust a few warp functions.
2021-12-26 23:08:50 +01:00
Christoph Oelckers
c4e388ef56
- merged SpawnActor wrapper.
2021-12-26 23:08:50 +01:00
Christoph Oelckers
d447e3e86f
- make the sector reference in SINE_WAVE_FLOOR a pointer.
2021-12-26 23:08:49 +01:00
Christoph Oelckers
16480ccfcc
- use sector wrappers where applicable.
2021-12-26 23:08:49 +01:00
Christoph Oelckers
52d9451cbc
- SOP::op_main_sector
2021-12-26 23:08:49 +01:00
Christoph Oelckers
f388efc5ef
- eliminated the redundant SOP::sector array.
2021-12-26 23:08:49 +01:00
Christoph Oelckers
c43d594f34
- SectorIsUnderwaterArea
2021-12-26 23:08:49 +01:00
Christoph Oelckers
4149a335a3
- SOP::mid_sector
2021-12-26 23:08:48 +01:00
Christoph Oelckers
b936345e11
- sectnum() cleanup and AnimSet return type.
2021-12-26 23:08:48 +01:00
Christoph Oelckers
f68d17133a
- SectorSetup, SetupSectorObject
2021-12-26 23:08:48 +01:00
Christoph Oelckers
3b16db7a0f
- SectorMidPoint
2021-12-26 23:08:48 +01:00
Christoph Oelckers
da8a5f282d
- CopySectorMatch
2021-12-26 23:08:48 +01:00
Christoph Oelckers
de5377cb2c
- WallBreakPosition
2021-12-26 23:08:48 +01:00
Christoph Oelckers
d6cd291030
- use a wall pointer in SINE_WAVE
2021-12-26 23:08:47 +01:00
Christoph Oelckers
33b3864d14
- final wall not related to hitscan/neartag.
2021-12-26 23:08:47 +01:00
Christoph Oelckers
f0dd018ad4
- use pointers in sparks interface.
2021-12-26 23:08:47 +01:00
Christoph Oelckers
4acca06c71
- the final wall iterators.
2021-12-26 23:08:47 +01:00
Christoph Oelckers
bb315f8148
- more wall cleanup
2021-12-26 23:08:47 +01:00