Commit graph

1968 commits

Author SHA1 Message Date
Mitchell Richters
9de4b4753a - Duke: Add nullptr check to haskey(). 2022-01-05 18:05:15 +11:00
Mitchell Richters
b422b049c1 - Duke: Fix bad interp check in RR's dofurniture(). 2022-01-05 10:03:33 +11:00
Mitchell Richters
874f9952f8 - Duke: Fix bad clipmove result check in movesprite_ex_r(). 2022-01-05 09:50:22 +11:00
Christoph Oelckers
47b9de1fb4 - RR: interpolate moving furniture. 2022-01-04 17:18:25 +01:00
Christoph Oelckers
33aee54113 - RR: interpolate jaildoors and minecarts. 2022-01-04 17:18:25 +01:00
Christoph Oelckers
45b88277a3 - Platoon Leader: Set explicit sky offset for the third episode's orange sky. 2022-01-04 17:17:58 +01:00
Christoph Oelckers
8dedcf94d3 - Duke: removed special precaching for sky texture
Due to precomposition these single tiles will never be rendered anyway.
2022-01-04 17:17:58 +01:00
Mitchell Richters
6414a4ce78 - Duke: Add nullptr check to footprints() code. 2022-01-04 22:44:11 +11:00
Christoph Oelckers
226807db34 - RR: fixed wakeup check logic in movefta.
Essentially the feature must be on for all RR actors and off for all Duke actors.
RR's original logic here to exclude animals was broken and non-functional.
2022-01-04 09:39:55 +01:00
Mitchell Richters
783dd98641 - Duke: Fix nullptr check for Duke and RR that was causing a crash in a glitched spot in RR's E1L1. 2022-01-04 14:00:18 +11:00
Christoph Oelckers
1d091ae395 - merged both movefta functions, using the already defined flags instead of explicit picnum checks. 2022-01-02 15:59:24 +01:00
Christoph Oelckers
e42fc5e743 - use the newly added flag to consolidate ifhitsector. 2022-01-02 12:27:36 +01:00
Christoph Oelckers
cc6d52013d - made Duke actor flags type safe and added a few new definitions that are not active yet. 2022-01-02 10:17:44 +01:00
Christoph Oelckers
cd599a7a15 - Duke: abstracted all checks for TILE_APLAYER with an isPlayer method. 2021-12-31 18:51:43 +01:00
Christoph Oelckers
3eb640658f - don't typedef MATTGAMEVAR 2021-12-31 13:12:20 +01:00
Christoph Oelckers
61d4d06783 - RRRA: fixed typo in portal setup. 2021-12-30 22:16:39 +01:00
Christoph Oelckers
552668418a - moved opos and oang to DCoreActor. 2021-12-30 18:21:02 +01:00
Christoph Oelckers
7f62df517d - moved all interpolate* methods from spritetypebase to DCoreActor.
The places where it was used on tsprites were redone to use the actor's base coordinate, which at the point of the operation would always be the same.
2021-12-30 17:32:31 +01:00
Christoph Oelckers
c10fb1278a - moved the backup... methods to DCoreActor. 2021-12-30 17:10:08 +01:00
Christoph Oelckers
6c381d4392 - removed sector() method from low level sprite type. 2021-12-30 16:58:48 +01:00
Christoph Oelckers
5498699faf - use DCoreActor::sector() wherever possible. 2021-12-30 16:51:56 +01:00
Christoph Oelckers
88e4bb9f79 - moved sectno method to DCoreActor. 2021-12-30 16:39:43 +01:00
Christoph Oelckers
f0b7fe4add - use setsector from DCoreActor.
Also did a bit of cleanup
2021-12-30 16:36:04 +01:00
Christoph Oelckers
af6ca40e3d - use DCoreActor::insector instead of spritetype::insector. 2021-12-30 16:24:51 +01:00
Mitchell Richters
225a2a39da - Duke: Replace player_struct noise_* variables with a vector. 2021-12-31 00:19:33 +11:00
Mitchell Richters
1e90b0bbbe - Duke: Replace player_struct bobposy with bobpos.Y calls. 2021-12-30 23:00:44 +11:00
Mitchell Richters
034e1fd175 - Duke: Replace player_struct bobposx with bobpos.X calls. 2021-12-30 23:00:44 +11:00
Mitchell Richters
f9b728d188 - Duke: Replace DDukeActor lastvy with ovel.Y calls. 2021-12-30 23:00:44 +11:00
Mitchell Richters
8932b2fc1d - Duke: Replace DDukeActor lastvx with ovel.X calls. 2021-12-30 23:00:43 +11:00
Mitchell Richters
0bc26e78ba - Duke: Replace player_struct loogiey[64] with loogie[64].Y calls. 2021-12-30 23:00:43 +11:00
Mitchell Richters
e196a4daa3 - Duke: Replace player_struct loogiex[64] with loogie[64].X calls. 2021-12-30 23:00:43 +11:00
Mitchell Richters
2d6bc783c4 - Duke: Replace player_struct exity with exit.Y calls. 2021-12-30 23:00:43 +11:00
Mitchell Richters
8d2595ea84 - Duke: Replace player_struct exitx with exit.X calls. 2021-12-30 23:00:43 +11:00
Mitchell Richters
19a9fc462f - Duke: Replace CraneDef poley with pole.Y calls. 2021-12-30 23:00:43 +11:00
Mitchell Richters
034727d902 - Duke: Replace CraneDef polex with pole.X calls. 2021-12-30 23:00:42 +11:00
Mitchell Richters
4b1fbf13df - Duke: Replace CraneDef z with pos.Z calls. 2021-12-30 23:00:42 +11:00
Mitchell Richters
3dfcbafd93 - Duke: Replace CraneDef y with pos.Y calls. 2021-12-30 23:00:42 +11:00
Mitchell Richters
8006d8e394 - Duke: Replace CraneDef x with pos.X calls. 2021-12-30 23:00:42 +11:00
Mitchell Richters
788be33c1a - Duke: Replace player_orig oz with opos.Z calls. 2021-12-30 23:00:42 +11:00
Mitchell Richters
f5dd8ba3b9 - Duke: Replace player_orig oy with opos.Y calls. 2021-12-30 23:00:42 +11:00
Mitchell Richters
c5d94f9a8e - Duke: Replace player_orig ox with opos.X calls. 2021-12-30 23:00:42 +11:00
Mitchell Richters
8a94022f5d - Duke: - Duke: Replace FireProj position and velocity variables with vectors. 2021-12-30 23:00:42 +11:00
Mitchell Richters
fd8c7bfa52 - Duke: Replace player_struct poszv with vel.Z calls. 2021-12-30 23:00:41 +11:00
Mitchell Richters
b2023efb44 - Duke: Replace player_struct posyv with vel.Y calls. 2021-12-30 23:00:41 +11:00
Mitchell Richters
31ed257f39 - Duke: Replace player_struct posxv with vel.X calls. 2021-12-30 23:00:41 +11:00
Mitchell Richters
9bbb54fe2e - Replace every line that just contains spaces or tabs with an empty line feed in all files except 3rd party libraries. 2021-12-30 20:30:21 +11:00
Christoph Oelckers
f9cea2b1db - turning one check in hitradius into a flag. 2021-12-30 09:58:48 +01:00
Christoph Oelckers
3fcecedf32 - deleted ClearContent functions from actor classes.
this is a leftover from pre-DObject times and no longer needed.
2021-12-30 09:58:47 +01:00
Christoph Oelckers
16635e53fc - renamed DDukeActor::picnum to attackertype.
This one having the same name here as spritetype::picnum is just confusing as hell and badly describes this variable's function.
2021-12-30 09:58:14 +01:00
Christoph Oelckers
059412b75e - first batch of routing all write access to sectortype::ceilingz and floorz through a function interface.
We need this for implementing "precise" rendering to flag vertices as dirty.
2021-12-30 09:58:14 +01:00
Christoph Oelckers
12619671e6 - Duke/RR: added fudging to work around aiming randomization issues with the pistol when autoaim is off.
Solution is the same as in RedNukem/EDuke32: do one hitscan directly in aiming order and if that hits a sprite, use it as aiming target.
2021-12-30 09:58:10 +01:00
Christoph Oelckers
ce1daa82c2 - Duke: make camera actors temporarily invisible before rendering a scene.
Mainly needed for voxel/model replacements of the security camera sprite.
2021-12-30 09:58:09 +01:00
Christoph Oelckers
34f14aa4c3 - added vector variants of FindDistance2D and FindDistance3D 2021-12-30 09:58:07 +01:00
Christoph Oelckers
e3ce0da111 - make all actor pointers in the player struct regular pointers. 2021-12-30 09:58:06 +01:00
Christoph Oelckers
7bbd4343a8 - renamed all shadowing variables in Duke. 2021-12-30 09:57:33 +01:00
Mitchell Richters
e15c887f90 - Duke: Fix bad setup in initcrane() following actor sprite pointer cleanups. 2021-12-30 09:57:31 +01:00
Christoph Oelckers
3adbed4826 - t[] replacement in spawn code. 2021-12-30 09:57:22 +01:00
Christoph Oelckers
9b932b2d91 - t[] replacement in actors_d.cpp and actors_r.cpp. 2021-12-30 09:57:22 +01:00
Christoph Oelckers
8c35224fe1 - Duke: removed all t-pointers to temp_data in actors.cpp. 2021-12-30 09:57:22 +01:00
Christoph Oelckers
6766a5922a - pass actors to calcChaseCamPos. 2021-12-30 09:57:18 +01:00
Christoph Oelckers
ed0c27b240 - Duke: deleted unused spritetype* variants of badguy() and bossguy() 2021-12-30 09:57:15 +01:00
Christoph Oelckers
09634c4993 - use actors instead of sprites in the new renderer's API. 2021-12-30 09:57:15 +01:00
Christoph Oelckers
d0143db8fe - got rid of sx() and sm() inlines. 2021-12-30 09:57:13 +01:00
Mitchell Richters
3adf81e4f9 - Duke: Replace player_struct oposz with opos.Z calls. 2021-12-30 09:57:07 +01:00
Mitchell Richters
111aa16e64 - Duke: Replace player_struct oposy with opos.Y calls. 2021-12-30 09:57:07 +01:00
Mitchell Richters
0e897c29b0 - Duke: Replace player_struct oposx with opos.X calls. 2021-12-30 09:57:07 +01:00
Mitchell Richters
dd0ff465b0 - Replace spritetypebase oz with opos.Z calls and eliminate spritetypebase opos union. 2021-12-30 09:57:07 +01:00
Mitchell Richters
a79b4b5ffc - Replace spritetypebase oy with opos.Y calls. 2021-12-30 09:57:06 +01:00
Mitchell Richters
e0fb92bb01 - Replace spritetypebase ox with opos.X calls. 2021-12-30 09:57:06 +01:00
Mitchell Richters
baf78848eb - Replace spritetypebase z with pos.Z calls and eliminate spritetypebase pos union. 2021-12-30 09:57:06 +01:00
Mitchell Richters
cecb8dc48e - Replace spritetypebase y with pos.Y calls. 2021-12-30 09:57:05 +01:00
Mitchell Richters
33ca55023f - Replace spritetypebase x with pos.X calls. 2021-12-30 09:57:05 +01:00
Mitchell Richters
09e00a69fe - Replace walltype y with pos.Y calls and eliminate walltype pos union. 2021-12-30 09:57:04 +01:00
Mitchell Richters
51b647da87 - Replace walltype x with pos.X calls. 2021-12-30 09:57:04 +01:00
Mitchell Richters
b2ab64bb62 - Capitalise vec3_t z variable. 2021-12-30 09:57:03 +01:00
Mitchell Richters
68e2691be7 - Capitalise vec3_t y variable. 2021-12-30 09:57:03 +01:00
Mitchell Richters
c549cc5276 - Capitalise vec3_t x variable. 2021-12-30 09:57:02 +01:00
Mitchell Richters
118ceb18ca - Capitalise vec2_t y variable. 2021-12-30 09:57:02 +01:00
Mitchell Richters
3c9cd926ba - Capitalise vec2_t x variable. 2021-12-30 09:57:02 +01:00
Christoph Oelckers
6f9484a9ee - fixed compilation on GCC.
error: operands to ?: have different types ‘std::nullptr_t’ and ‘TObjPtr<Duke3d::DDukeActor*>’
2021-12-30 09:57:01 +01:00
Christoph Oelckers
1240818122 - getting rid of DDukeActor::s, final part. 2021-12-30 09:57:00 +01:00
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