Christoph Oelckers
f216857f55
- Getting rid of DDukeActor::s, part 1.
2021-12-30 09:57:00 +01:00
Christoph Oelckers
99507ed048
- spawn_d.cpp
2021-12-30 09:57:00 +01:00
Christoph Oelckers
df2fc596f9
- spawn.cpp
2021-12-30 09:56:59 +01:00
Christoph Oelckers
45a2b9766e
- sectors_r.cpp
2021-12-30 09:56:59 +01:00
Christoph Oelckers
d532c496f1
- sectors_d.cpp
2021-12-30 09:56:59 +01:00
Christoph Oelckers
f816f2fb22
- ->s in non-gameplay files.
2021-12-30 09:56:59 +01:00
Christoph Oelckers
edf3fd0f82
- premap_r.cpp + dependencies.
2021-12-30 09:56:59 +01:00
Christoph Oelckers
1f40dfa411
- premap.cpp + premap_d.cpp
2021-12-30 09:56:59 +01:00
Christoph Oelckers
e76e28cdea
- the rest of player_r.cpp
2021-12-30 09:56:58 +01:00
Christoph Oelckers
0768c9e8b6
- non 'actor' parts of player_r.cpp
2021-12-30 09:56:58 +01:00
Christoph Oelckers
de22c8ca26
- 's->' in player_d.cpp
2021-12-30 09:56:58 +01:00
Christoph Oelckers
6b675cc849
- non 'actor' parts of player_d.cpp
2021-12-30 09:56:58 +01:00
Christoph Oelckers
b55e04d455
- game_misc.cpp + gameexec.cpp.
2021-12-30 09:56:58 +01:00
Christoph Oelckers
a982c7e590
- player.cpp + noise.cpp.
2021-12-30 09:56:58 +01:00
Christoph Oelckers
c0ea208ba3
- animatesprites_d.cpp and animatesprites_r.cpp.
2021-12-30 09:56:57 +01:00
Christoph Oelckers
9eb7c536ab
- the rest of actors_r.cpp
2021-12-30 09:56:57 +01:00
Christoph Oelckers
7d5cf6e631
- first third of actors_r.cpp
2021-12-30 09:56:57 +01:00
Christoph Oelckers
8ff53eae7d
- second half of actors_d.cpp
2021-12-30 09:56:57 +01:00
Christoph Oelckers
f1e608685e
- more parts of actor_d.cpp
2021-12-30 09:56:57 +01:00
Christoph Oelckers
b7a4c484e9
- large block of s = actor->s; in actors_d.cpp
2021-12-30 09:56:57 +01:00
Christoph Oelckers
44895411b9
- a large block of 'act->s' in actors_r.cpp.
2021-12-30 09:56:56 +01:00
Christoph Oelckers
8dcc128697
- deal with 'spri = actor->s;'
2021-12-30 09:56:56 +01:00
Christoph Oelckers
0df97f00ec
- the remaining 's's in actor.cpp.
2021-12-30 09:56:56 +01:00
Christoph Oelckers
f5151e31a5
- globally replaced all 's->' with 'actor->spr.' in duke/src/actors.cpp.
2021-12-30 09:56:56 +01:00
Christoph Oelckers
55cb5aaac6
- global search & replace of ->s-> with ->spr.
...
This is the largest part of uses of DDukeActor's 's' pointer.
2021-12-30 09:56:56 +01:00
Christoph Oelckers
0284ec1cb0
- replacement of DDukeActor::s and pointers to DCoreActor::spr, part 3.
2021-12-30 09:56:56 +01:00
Christoph Oelckers
0f7024e70e
- replacement of DDukeActor::s and pointers to DCoreActor::spr, part 2.
2021-12-30 09:56:55 +01:00
Christoph Oelckers
997c12f67a
- replacement of DDukeActor::s and pointers to DCoreActor::spr.
2021-12-30 09:56:55 +01:00
Christoph Oelckers
6fd4d6d550
- ported slope sorite support from NBlood.
...
For Polymost only so far.
2021-12-30 09:56:54 +01:00
Christoph Oelckers
df0c577cf4
- replaced most of numsectors, too.
2021-12-30 09:56:54 +01:00
Christoph Oelckers
f1c0298825
- replaced numwalls with wall.Size in several places.
2021-12-30 09:56:54 +01:00
Christoph Oelckers
65bc6e6aef
- removed the now redundant wall() and sector() interator helper functions.
...
With both wall and sector now being TArrays they are not needed anymore.
2021-12-30 09:56:53 +01:00
Christoph Oelckers
986fccfddc
- use symbolic constants for all places where globalorientation is checked for the alignment bits.
2021-12-30 09:56:51 +01:00
Christoph Oelckers
5ff36f491e
- fixed the remaining places where the compiler complained about cstat.
2021-12-30 09:56:51 +01:00
Christoph Oelckers
8b427e35c2
- stuff that needs FromInt
2021-12-30 09:56:51 +01:00
Christoph Oelckers
2d648924e8
- the final Duke flags.
2021-12-30 09:56:49 +01:00
Christoph Oelckers
e02f4d8fd1
- randomFlip stuff.
...
To avoid casting from int to flags.
2021-12-30 09:56:49 +01:00
Christoph Oelckers
8f0f0e8816
- manual sprite flag replacements in Duke.
2021-12-30 09:56:49 +01:00
Christoph Oelckers
8e0b9f7ce6
- some automatic, some manual sprite flag replacements
2021-12-30 09:56:49 +01:00
Christoph Oelckers
ace01d02bc
- alignment flags and a few leftovers.
2021-12-30 09:56:48 +01:00
Christoph Oelckers
82fb03e399
- another batch of search&replace, with smaller results.
2021-12-30 09:56:48 +01:00
Christoph Oelckers
c5ae454207
- another big batch of automatic replacements.
2021-12-30 09:56:48 +01:00
Christoph Oelckers
5b65e214e0
- global search & replace of the more frequent sprite flag patterns.
2021-12-30 09:56:48 +01:00
Christoph Oelckers
8f012d1beb
- made wall flags type safe
2021-12-30 09:56:47 +01:00
Christoph Oelckers
adbf5177a7
- flag combo stuff.
2021-12-30 09:56:46 +01:00
Christoph Oelckers
b263c3ac6b
- wall and sprite flags in Duke, just simple cases.
2021-12-30 09:56:46 +01:00
Christoph Oelckers
6e32832428
- made sector ceiling/floor flags type safe.
...
- made sector flags type safe.
2021-12-30 09:56:46 +01:00
Christoph Oelckers
b0e3c6b5ec
- some remaining sector flag stuff
2021-12-30 09:56:45 +01:00
Christoph Oelckers
d0a06ae961
- deal with most of CSTAT_SECTOR_SKY and CSTAT_SECTOR_SLOPE
2021-12-30 09:56:45 +01:00
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
8d0013128e
- Exhumed: use symbolic constant CSTAT_SPRITE_INVISIBLE
2021-12-30 09:56:45 +01:00
Christoph Oelckers
1edccf1423
- added slope setter methods to sectortype.
...
To make sure that setting the slope flags is always done properly. (Why are the flags even needed?)
As a nice side effect, this, plus use of other inlines made the align*slope functions implode into virtually nothing.
2021-12-30 09:53:56 +01:00
Christoph Oelckers
11f41a97d5
- made gotpic a FixedBitArray.
...
gets rid of some inline garbage.
2021-12-30 09:53:56 +01:00
Christoph Oelckers
dddf48fd3e
- cleaned up and renamed buildtypes.h.
...
Content was reordered so that the file can contain the inlines belonging to the map data types that previously had to be stored elsewhere.
Also moved out of the Build folder because virtually everything in here can be traced to content available in Duke Nukem 3D's and Shadow Warrior's source releases.
2021-12-30 09:53:46 +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
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
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
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
6a43a270fa
- use sectno() access function where we really need a sector index.
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
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
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
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
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
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
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
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
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
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
5dfc79bdbe
- MarkSectorSeen
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
9213eae606
- deleted unused functions.
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
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
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
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
91e2391911
- adapted neartag in Duke.
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
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
10dce7dd2d
- adapted all hitscan calls in Duke/RR.
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
33c707c708
- Duke: getangle simplification
2021-12-26 23:08:40 +01:00
Christoph Oelckers
41506f35db
- calcviewpitch
2021-12-26 23:08:40 +01:00
Christoph Oelckers
109ff8c3cb
- Above and Below
2021-12-25 21:29:01 +01:00
Christoph Oelckers
5e01841f1e
- MoveSector et.al.
2021-12-25 21:29:00 +01:00
Christoph Oelckers
2d1f5fc576
- Exhumed: some cleanup.
2021-12-25 21:28:58 +01:00
Christoph Oelckers
38d64fc437
spritetype::setsector
2021-12-25 21:28:57 +01:00
Christoph Oelckers
4928187b02
- handle the RR geometry hack
2021-12-25 21:28:57 +01:00
Christoph Oelckers
9c7eecb55f
- the rest of Duke’s sectnum, except RR's geo hack
2021-12-25 21:28:57 +01:00
Christoph Oelckers
714b5ac872
- movesprite handled
2021-12-25 21:28:56 +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
22b2f64016
dukeplayer stuff
2021-12-25 21:28:55 +01:00
Christoph Oelckers
312b1fd39f
- cursectnum first half
2021-12-25 21:28:55 +01:00
Christoph Oelckers
265abf7fa6
— Duke: Use BFSSectorSearch to handle the hitradius searches without using indices.
...
(and a bit nicer looking loop condition.)
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
2979fb9e03
- new access methods for spritetype and DDukeActor.
2021-12-25 21:28:54 +01:00
Christoph Oelckers
4e30ba339b
- got rid of the tempsector... arrays in Duke's polymost interface.
...
Instead use some of the free parts in sectortype thats needed for the other games.
2021-12-25 21:28:51 +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
cc41f4e7c6
- migrated Duke's added sector properties.
2021-12-25 21:28:48 +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
Christoph Oelckers
fa48b740c0
-proper owner storage for Duke.
2021-12-25 21:28:38 +01:00
Christoph Oelckers
771f5e3338
- removed all old savegame handling
2021-12-25 21:28:38 +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
Christoph Oelckers
7daa501a4d
- removed all #include "compat.h" except the one in build.h
...
Still all compiles fine.
2021-12-14 12:24:10 +01:00
Christoph Oelckers
507dc10e4f
- Duke/RR: Fixed sprite validation checks in animatesprites.
2021-12-11 09:57:02 +01:00
Mitchell Richters
3269d6a398
- Duke: Ensure all weapon variables used for interpolation have the o
values set when CON updates them.
...
* Hasn't been an issue to date but could become one should a mod set these.
* Can't simply back the variable up and set the main one because unless the mod knows we're interpolating, it could have undesirable effects.
2021-12-10 17:31:51 +11: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
5aa4243327
- Duke: Test tsprite's sector in animatesprites_d()
following crash while noclipping in Duke WT's E5L1. Apply same fix to animatesprites_r()
as well.
2021-12-07 22:55:08 +11:00
Mitch Richters
6aba76cfe5
- Duke/RR: Fix RR crash while operating weapon outside of a sector (noclipping, etc).
2021-12-07 21:42:21 +11:00
Mitchell Richters
af96180123
- Duke/RR; Don't lose the precision of p->MotoSpeed
when calculating p->VBumpTarget
.
2021-12-07 20:02:30 +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
Mitch Richters
85a2e3bd06
- Duke/RR: Do nullptr test in floorspace_d()
/floorspace_r()
functions to match ceilingspace_*()
functions.
2021-12-07 19:41:25 +11:00
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
690994ea1e
- Duke: fix missing sectp update in processinput_d.
...
RR version had this correct
2021-11-30 00:20:16 +01:00