Commit graph

282 commits

Author SHA1 Message Date
Christoph Oelckers
b7a5ea8ef6 - moved some common utilities into the backend. 2021-12-26 23:09:44 +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
33c707c708 - Duke: getangle simplification 2021-12-26 23:08:40 +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
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
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
69c21407a7 - pass a sector pointer to checkcursectnums. 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
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
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
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
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
09c2677fe7 - lots of EGS calls. 2021-11-29 00:56:29 +01:00
Christoph Oelckers
3d05020f4c - checkhitceiling + ceilingglass are sector[] free. 2021-11-29 00:56:28 +01:00
Christoph Oelckers
09e75ddca2 - change wall parameter of checkhitwall. 2021-11-29 00:56:21 +01:00
Christoph Oelckers
345d9c87b6 - RR: no more wall[] in actors_r.cpp 2021-11-29 00:55:41 +01:00
Christoph Oelckers
e0260bc709 - Duke/RR: weaponhitwall cleaned up (both variants) 2021-11-29 00:55:40 +01:00
Christoph Oelckers
5bb805663e - Duke/RR: cleaned up the rest of hitradius* as well
Using wallsofsector iterator plus defining local variables more locally.
2021-11-29 00:55:40 +01:00
Christoph Oelckers
63985ce6be - Duke/RR: redo the supremely ugly code to access the third point in hitradius* 2021-11-29 00:55:40 +01:00
Christoph Oelckers
68d653efe9 - made the same changes to hitradius_r
Also had to do some reformatting to get rid of the goto in there.
2021-11-29 00:55:40 +01:00
Christoph Oelckers
ad030d7e23 - Duke: SE20 + SE128 are wall-free
Also use symbolic constantfor SE_128 to make it easier to find.
2021-11-29 00:55:39 +01:00
Christoph Oelckers
01abe7b2ac - addressed most unused/uninitialized variable warnings from MSVC. 2021-11-29 00:55:30 +01:00
Christoph Oelckers
c6bd5c04c7 - fixed most warnings GCC pointed out in game code. 2021-11-29 00:55:29 +01:00
Christoph Oelckers
dcccb0d653 - Duke: added [[fallthrough]] annotations wherever needed. 2021-11-29 00:55:29 +01:00
Christoph Oelckers
aac02d52db - Duke/RR: fixed hitradius
The recent optimization did not update the sector pointer inside the loop
2021-11-15 00:18:52 +01:00
Christoph Oelckers
2e1ff313b0 - Duke: only use the main clipmove function and match clipmove_ex’s interface 2021-11-08 23:11:29 +01:00
Christoph Oelckers
066896db8e - warnings fix 2021-11-08 18:37:20 +01:00
Christoph Oelckers
fd2764dc6e - Duke: eliminated all local short variables in actors*.cpp. 2021-11-07 16:30:55 +01:00
Christoph Oelckers
e2faeec2ce renamed all signed and unsigned chars to int8_t/uint8_t. 2021-11-07 16:30:55 +01:00
Christoph Oelckers
887279f8a5 - RR: Use int instead of short in bowling functions. 2021-11-07 16:20:59 +01:00
Christoph Oelckers
a594e6465c - added nextSector access function to walltype and used it to eliminate a few more sector[] references. 2021-11-07 15:56:29 +01:00
Christoph Oelckers
c068054fa0 - RR: most sector[] accesses replaced by pointers in actors_r.cpp. 2021-11-07 15:00:07 +01:00
Christoph Oelckers
d45f687d4b - pass a sector pointer to floorspace/ceilingspace. 2021-11-07 15:00:06 +01:00
Christoph Oelckers
1c0e3d849b - addressed the updatesector related deprecation warnings with Duke. 2021-11-06 20:46:08 +01:00
Christoph Oelckers
83fe41e71e - made updatesector receive a 32 bit int pointer and deprecated the 16 bit variant. 2021-11-06 15:53:16 +01:00
Christoph Oelckers
f4cc5b5b89 - Duke: const-ify SE24 tile lists 2021-11-06 14:19:55 +01:00
Christoph Oelckers
c8d65a1f06 - use sector wrappers where easily doable with search and replace. 2021-11-06 14:19:55 +01:00
Christoph Oelckers
b548d9eca2 - a few more quick sector[] replacements. 2021-11-06 14:19:55 +01:00
Christoph Oelckers
bc56b5a28f - RR: cleaned up STAT_DESTRUCT init code a bit 2021-11-06 14:19:54 +01:00
Christoph Oelckers
8818a3f1cb - Duke: added a getSector method to DDukeActor. 2021-11-06 14:19:54 +01:00
Mitch Richters
a1570c185f - Duke: Remove posx/posy/posz variables and replace with points in the previously unionised pos vec3_t variable. 2021-10-31 17:52:52 +11:00
Christoph Oelckers
b1ac1ad585 - more changesprite* renaming. 2021-10-12 21:36:42 +02:00
Christoph Oelckers
2e37cc627c - function renaming for clarity and easier lookup. 2021-10-12 21:36:42 +02:00
Christoph Oelckers
948f194064 - fixed warnings in Duke. 2021-10-08 19:21:29 +02:00
Mitchell Richters
ec20f66eda - Duke/RR: Always ensure player's wantweaponfire is reset to -1 after switching weapon.
* Fixes #333.
2021-07-17 12:12:12 +10:00
Christoph Oelckers
20ca676539 - RR: fixed crash in function that handles acts of mass destruction (like blowing up gas stations.)
With bad setups 'spr' could be left uninitialized. This crashed E1L1 of 'The Hickston Swamp' mod.
2021-06-11 23:20:50 +02:00
Christoph Oelckers
4b35a30de5 - RR: fixed the bowling lane lights.
Tiles had not been made writable.
Also renamed a few bowling related things.
2021-06-09 23:53:05 +02:00
Christoph Oelckers
d311792e06 - engine side preparations for Duke Statusbar scriptification.
Mainly, gotweapon had to be reverted to a flat bool array to avoid implementing FixedBitArray for the VM.
Also adding a few new tile names and PushV for string arrays.
2021-05-15 10:44:35 +02:00
Christoph Oelckers
7d77b2315f - merged the few remaining contents of mmulti.h into d_net.h 2021-05-03 19:01:00 +02:00
Christoph Oelckers
96d78ab9e6 - made DukeActor::s a pointer.
As a reference we would never be able to export this to scripting
2021-04-15 19:21:43 +02:00
Christoph Oelckers
68b7628f56 - RRRA: Sector effector type 156 is not supposed to scroll the floor texture. 2021-04-07 18:12:25 +02:00
Mitchell Richters
18fbc8996b - Duke: Remove a few redundant sprite backups and change some backups to what's actually needed. 2021-01-06 06:22:31 +11:00
Mitchell Richters
97159c20c1 - Duke: Leverage new spritetype methods within Duke, removing bposx/bposy/bposz from hittype. 2021-01-06 06:22:29 +11:00
Mitchell Richters
5124c0daec - Amalgamate ksgn and sgn into Sgn in cmdlib.h, and remove pragmas.h. 2021-01-05 07:31:37 +11:00
Mitchell Richters
868aa7f07a - Replace mulscale() calls with MulScale() from common. 2021-01-05 07:31:24 +11:00
Mitchell Richters
2396179dfc - Replace mulscale##() calls with MulScale() from common.
* Regex for reference: mulscale([0-9]+)\((.+)(\)+)
2021-01-05 07:31:15 +11:00
Christoph Oelckers
72df9c26d8 - Duke: fixed: SE31's handler overwrote the interpolation coordinates, which rendered interpolation ineffective.
Also removing some redundant coordinate copying. Since we save all sprite coordinates at the start of a frame, there is no need to do the same again in the stat handlers.
Fixes #237
2020-12-11 19:17:41 +01:00
Christoph Oelckers
7ad0750839 - grouped all of Duke's constant per-session state in a single struct.
Mainly done so later the script export can be done more easily.
This also renames a few of the affected variables for clarity.
2020-11-29 13:54:58 +01:00
Christoph Oelckers
daf71fa470 - replaced a few more literal numbers. 2020-11-27 20:06:38 +01:00
Christoph Oelckers
2cd3927613 - use floats for wall panning offsets. 2020-11-26 18:32:35 +01:00
Christoph Oelckers
d545eb7aa9 - make sector panning variables floats and added some convenience wrappers. 2020-11-26 18:32:35 +01:00
Christoph Oelckers
169d708547 - removed all remaining uses of tilesiz. 2020-11-23 08:55:02 +01:00
Christoph Oelckers
d60bc8be9f - replaced all remaining uses of tilesiz[].y 2020-11-23 08:39:49 +01:00
Mitchell Richters
b6e8030307 - buildutils: Replace sintable[] use within Duke's actors_r.cpp with bsin()/bcos(). 2020-11-22 21:18:03 +01:00
Christoph Oelckers
7df20ee047 - RR: Give ammo for the secondary ripsaw mode when picking up the weapon in standard RR, too. 2020-11-22 17:50:38 +01:00
Christoph Oelckers
d8e331ef0f - changed Duke/RR palette handling to only retrieve the currently active palette right before rendering.
Storing this in the player_struct is pointless and a relic from having to use real hardware palette switches.
With this now just being a translation index being passed to the backend it can be cheaply retrieved right when used and nowhere else.
Also making some changes to how RRRA's psychedelic cactus handles the projection. This fixes issues with occasionally passing a bad matrix.
2020-11-05 07:31:48 +01:00
Christoph Oelckers
60263ccad9 - fixed destroyit.
This caused parts of the exploding house in RRRA E1L5 not to disappear.
2020-11-04 21:53:56 +01:00
Christoph Oelckers
aac5ab55a3 - movesprite cleanup. 2020-11-04 20:40:25 +01:00
Christoph Oelckers
0eb10f0313 - newowner and related code. 2020-11-04 20:40:25 +01:00
Christoph Oelckers
f3f0fd0a3a - ported the sound code to actors and removed the inline helpers. 2020-11-04 20:40:07 +01:00
Christoph Oelckers
770897b8b9 - player.i, part 1 2020-11-04 20:39:42 +01:00
Christoph Oelckers
eb5cd98d9a - fixed a few bad parameters. 2020-11-04 20:39:39 +01:00
Christoph Oelckers
32a7c2349e - shoot interface transitioned/operateweapon mostly done. 2020-11-03 22:01:58 +01:00
Christoph Oelckers
7e29be7569 - switched checkhitwall interface to actors. 2020-11-03 21:49:57 +01:00
Christoph Oelckers
4258c27248 - switched the checkhitsprite interface to actors. 2020-11-03 21:43:50 +01:00
Christoph Oelckers
768487584e - aim and all calling instances.
This also takes care of RR's chicken arrow storing an actor reference in lotag.
2020-11-03 20:42:03 +01:00
Christoph Oelckers
6ee856b8c1 - added missing 'break' to SE code.
This caused the car in RR's first level to go too fast.
2020-11-03 20:21:30 +01:00
Christoph Oelckers
f5cccb0df2 - actorflag, actorfella, automap, animateaccess, holoduke spawn, initreactor.
# Conflicts:
#	source/games/duke/src/game_misc.cpp
2020-11-03 19:21:43 +01:00
Christoph Oelckers
de92287d0b - fixed the messed up parameter order of OnEvent.
This should serve as a textbook example why passing around indices is a very, very bad idea!
2020-11-03 19:21:42 +01:00
Christoph Oelckers
669fcc967f - cheats.cpp and ccmds.cpp handled.
# Conflicts:
#	source/games/duke/src/cheats.cpp
2020-11-03 07:06:27 +01:00
Christoph Oelckers
8d1409a708 - bring weaprec handling of RR in line with Duke.
This code set a sprite index where a tile number is expected by all other code checking this array.
In the stock game this should never trigger, though, as the actor being checked is the burning dynamite which cannot be picked up again as-is.
2020-11-03 06:51:29 +01:00
Christoph Oelckers
6adc2f8e55 - findplayer 2020-11-01 17:07:47 +01:00
Christoph Oelckers
3c19f8e44e - the last remaining small functions in actors_d.cpp and actors_r.cpp. 2020-11-01 17:07:46 +01:00
Christoph Oelckers
52c342a2ff - renamed variables in move functions. 2020-11-01 17:07:46 +01:00
Christoph Oelckers
e6e53d1954 - move, fakebubbaspawn and destroyit. 2020-11-01 17:07:46 +01:00
Christoph Oelckers
a6f9673403 - moveeffectors. 2020-11-01 17:07:46 +01:00
Christoph Oelckers
c438061b83 - made SE06 and SE28 separate functions. 2020-11-01 17:07:45 +01:00