Commit graph

7453 commits

Author SHA1 Message Date
Mitchell Richters
b160d78701 - Exhumed: Tidy up vect variables on the stack. 2023-03-24 20:26:18 +11:00
Mitchell Richters
4cdced60b1 - Exhumed: Tidy up some pos/sect variables on the stack. 2023-03-24 19:52:38 +11:00
Mitchell Richters
d976a6da01 - Exhumed: Tidy up zVal on player ticker stack. 2023-03-24 19:52:37 +11:00
Mitchell Richters
5463b14b26 - Exhumed: Split out player ramses code. 2023-03-24 19:52:36 +11:00
Mitchell Richters
0271a49030 - Exhumed: Move moving block check code back into player ticker for now.
* Reverts 52b2d1cd7d
* Upon closer inspection, the original code here used `zz` on the player stack, which was re-obtained again using the actor's Z vel, however the actor's Z vel gets modified along the way which could break how this code is meant to work.
* Should be split again but requires holistic thought.
2023-03-24 19:50:27 +11:00
Mitchell Richters
e2d3c4dceb - Exhumed: Get rid of GetAngleToSprite() in favour of backend utility. 2023-03-24 19:50:27 +11:00
Mitchell Richters
eaa58e6687 - Exhumed: Get rid of GetWallNormal() in favour of backend utility. 2023-03-24 19:50:26 +11:00
Mitchell Richters
7fe82690a7 - Exhumed: Fix moving block sound setup to match PowerslaveGDX.
* Setup we had looked wrong by comparison, and it eliminates the last goto in the player tick code!
2023-03-24 19:50:26 +11:00
Mitchell Richters
62de240c27 - Exhumed: Reduce branch depth in CheckMovingBlocks() to make next change more visible. 2023-03-24 19:50:26 +11:00
Mitchell Richters
0e39dbfc95 - Exhumed: Make CheckMovingBlocks() work on player pointer. 2023-03-24 19:50:26 +11:00
Mitchell Richters
e256ac06e9 - Exhumed: Split out player death pitch code. 2023-03-24 19:50:25 +11:00
Mitchell Richters
8812831c73 - Exhumed: Split out player yaw code.
* Consider where this is executed. Should it come after the Ramses check, or be performed along-side player's pitch?
2023-03-24 19:50:25 +11:00
Mitchell Richters
9b3c726458 - Exhumed: Split out player pitch code. 2023-03-24 19:50:25 +11:00
Mitchell Richters
806dca975a - Exhumed: Remove goto out of updatePlayerAction().
* Doesn't really make sense and PowerslaveGDX doesn't do any jumping like this here.
2023-03-24 19:50:25 +11:00
Mitchell Richters
4c8b7e6804 - Exhumed: Initial cleanup of updatePlayerAction(). 2023-03-24 19:50:25 +11:00
Mitchell Richters
791504b5eb - Remove some pointless weapon functions. 2023-03-24 19:38:10 +11:00
Mitchell Richters
7fe6befef8 - Exhumed: Split out player actions code. 2023-03-24 19:36:43 +11:00
Mitchell Richters
a6cec3d4f1 - Exhumed: Just use pPlayer->nAction in player code, don't store on the stack. 2023-03-24 15:14:07 +11:00
Mitchell Richters
0842ea3c14 - Exhumed: Clean out some stale goto calls that were commented out.
* Only two remaining gotos to handle now.
2023-03-24 15:11:32 +11:00
Mitchell Richters
611d7bae98 - Exhumed: Bring player neartag() call to branch where it's needed. 2023-03-24 15:11:32 +11:00
Mitchell Richters
ed2c557297 - Exhumed: Remove ClearSpaceBar() and just directly clear the input bit.
* Also fix issue where `SB_OPEN` bit never seemed to be cleared properly.
* Also just directly test/use the player's input actions to minimise stack variables during this cleanup process.
2023-03-24 15:11:32 +11:00
Mitchell Richters
7293a1f5d1 - Exhumed: Pass player pointer through to updatePlayerTarget(). 2023-03-24 11:59:34 +11:00
Mitchell Richters
cdffb61cc7 - Exhumed: Remove prototype POSIX targets didn't like. 2023-03-23 21:25:49 +11:00
Mitchell Richters
5d6744836f - Exhumed: Have feebtag() return an actor pointer instead. 2023-03-23 21:00:35 +11:00
Mitchell Richters
22e135afeb - Exhumed: Rename pickup actor in pickup code. 2023-03-23 20:52:04 +11:00
Mitchell Richters
757d7b3660 - Exhumed: Split out player pickup code to separate file.
* Want to work on this in isolation.
* Can likely optimise this out to a lookup array of function pointers.
2023-03-23 20:50:08 +11:00
Mitchell Richters
f68c168ae4 - Blood: Delete empty file that got missed. 2023-03-23 20:36:37 +11:00
Mitchell Richters
764ec032c1 - Exhumed: Split out player current item code. 2023-03-23 19:48:27 +11:00
Mitchell Richters
f7433234b2 - Exhumed: Split out player quake code. 2023-03-23 19:48:26 +11:00
Mitchell Richters
04ab6f4640 - Exhumed: Split out player invincibility code. 2023-03-23 19:47:41 +11:00
Mitchell Richters
1a8dcda5b6 - Exhumed: Split out player invisibility code. 2023-03-23 19:47:11 +11:00
Mitchell Richters
374f0bb295 - Exhumed: Split out player double code. 2023-03-23 19:46:45 +11:00
Mitchell Richters
b51623b415 - Exhumed: Split out player torch code. 2023-03-23 19:46:18 +11:00
Mitchell Richters
8f21a89abc - Exhumed: Remove some duplicated code already covered in InitPlayers(). 2023-03-23 19:14:57 +11:00
Mitchell Richters
27144c0bc3 - Exhumed: Store the player's index within the player's struct. 2023-03-23 19:14:26 +11:00
Mitchell Richters
645d75ba0b - Exhumed: Use pointers to access player in AIPlayer::Tick(). 2023-03-23 18:50:30 +11:00
Mitchell Richters
75de294560 - Exhumed: Clean out the rest of input.cpp. 2023-03-23 17:41:01 +11:00
Mitchell Richters
fb9ff7d105 - Exhumed: Increase quake precision in SetQuake(). 2023-03-23 17:38:18 +11:00
Mitchell Richters
bd30e31b8d - Exhumed: Move nQuake[] array into Player struct. 2023-03-23 17:38:18 +11:00
Mitchell Richters
05fd2911a4 - Exhumed: Move dVertPan[] array into Player struct. 2023-03-23 17:38:18 +11:00
Mitchell Richters
095b33fa67 - Exhumed: Clean out the rest of enginesubs.cpp. 2023-03-23 17:38:16 +11:00
Mitchell Richters
e85162df97 - Removed unused lastTic global. 2023-03-23 17:38:01 +11:00
Mitchell Richters
e5f3f5f149 - Make setForcedSyncInput() require a player index.
* This should only ever apply to the console player.
2023-03-23 17:09:02 +11:00
Mitchell Richters
183ad0c61c - Adjust a few setForcedSyncInput() calls. 2023-03-23 16:34:33 +11:00
Mitchell Richters
fa5490b834 - Exhumed: Just move analyzesprites() into gi->processSprites(). 2023-03-23 15:55:00 +11:00
Mitchell Richters
0ac7af6cd7 - Exhumed: Avoid unnecessarily iterating through tsprites twice. 2023-03-23 15:54:59 +11:00
Mitchell Richters
10ebc00853 - Exhumed: Attempt to make player pTarget updating MP friendly.
* This probably works better than using the temporary view pos vector of the console player, anyway.
* Might assist with #626 as well.
2023-03-23 15:54:59 +11:00
Mitchell Richters
3b889d5c36 - Exhumed: Make main loop player index aware. 2023-03-23 15:54:59 +11:00
Mitchell Richters
c486940b2c - Exhumed: Ensure playsim runs with PlayClock at 0 for first tic. 2023-03-23 15:54:59 +11:00
Mitchell Richters
eed1d14b9d - Exhumed: Split out velocity updating to static function. 2023-03-23 15:54:59 +11:00
Mitchell Richters
187710e9e2 - Exhumed: Set nFreeze input locking in right spot. 2023-03-23 15:54:58 +11:00
Mitchell Richters
895304ccee - Exhumed: Split out weapon updating to static function. 2023-03-23 15:54:58 +11:00
Mitchell Richters
e9e36fedb2 - Exhumed: Split out inventory updating to static function. 2023-03-23 15:54:58 +11:00
Mitchell Richters
4d6419732a - Duke: Add CVAR to allow disabling pitch reset with pitch input.
* Need to add this to the menu to address #853.
2023-03-23 15:54:58 +11:00
Mitchell Richters
88e6a6e894 - Rework ff652f454c slightly to accept an InputPacket pointer. 2023-03-22 20:08:53 +11:00
Mitchell Richters
2b22e49a9b - Duke: Temporary workaround for last commit so the player returns to centre on level load. 2023-03-22 18:26:23 +11:00
Mitchell Richters
ff652f454c - Tidy up how games reapply needed bits at start of tic. 2023-03-22 18:17:50 +11:00
Mitchell Richters
e5bad9af2c - Duke/RR: Re-arrange the playsim angle calls.
* Make them precisely where they were originally called from.
2023-03-21 21:37:25 +11:00
Mitchell Richters
181f88b028 - Duke/RR: Remove the confusing VEH_HEELTOE bit. 2023-03-21 10:41:55 +11:00
Mitchell Richters
2918c34d42 - Duke/RR: Fix two typos. 2023-03-21 10:39:24 +11:00
Mitchell Richters
64a3141f6f - Duke/RR: Add VEH_TURNING flag instead of testing left/right in places. 2023-03-21 10:21:30 +11:00
Mitchell Richters
f240b6c623 - Duke/RR: Fix bad flag test that needed to confirm two flags set, not any one of the two. 2023-03-21 10:12:38 +11:00
Mitchell Richters
19ddc1ee51 - Duke/RR: Repair angle test when adjusting velocity.
* Initially figured I could just use the sign of the angle adjustment, but the vehicle code makes left/right reversals that necessitate using the flags for this.
2023-03-21 09:39:36 +11:00
Mitchell Richters
a24b8499fc - Duke/RR: Swap out all 5-6 bools for a bitfield. 2023-03-21 09:39:35 +11:00
Mitchell Richters
a3a150558b - Duke/RR: Consolidate (mostly) identical vehicle throttle code. 2023-03-20 21:54:47 +11:00
Mitchell Richters
c8238d9646 - Duke/RR: Consolidate (mostly) identical vehicle sound code. 2023-03-20 21:46:18 +11:00
Mitchell Richters
cc977d510a - Duke/RR: Consolidate identical vehicle drinking code. 2023-03-20 21:46:16 +11:00
Mitchell Richters
07b1ec518b - Duke/RR: Consolidate identical vehicle bumping code. 2023-03-20 21:07:52 +11:00
Mitchell Richters
d5bc7718d1 - Duke/RR: Tidy up angle changes/accesses in vehicle ticker code.
* Already have an actor pointer on the stack we can use.
* Other tidy-ups.
2023-03-20 21:07:52 +11:00
Mitchell Richters
134b635966 - Duke/RR: Ensure braking sync bit is always cleared in onBoat(). 2023-03-20 21:07:50 +11:00
Mitchell Richters
c6f6cf5933 - Duke/RR: Fix vehicle controller sign that got lost along the way.
* Issue from 9d74a5c60b.
2023-03-19 22:45:02 +11:00
Mitchell Richters
ebd8ab985e - Duke/RR: Don't archive off MotoSpeed for reuse at end of vehicle functions.
* Kept the workflow identical to the old setup in the other commits, but does not seem necessary and all it does is make the speed one tic behind where it would be otherwise.
2023-03-19 21:58:30 +11:00
Mitchell Richters
ba8f1069ab - Duke/RR: Fix an issue with reversing.
* Got the position of the bools wrong here when removing something unsafe from the input handler.
2023-03-19 21:35:39 +11:00
Mitchell Richters
a9e606ca68 - Duke/RR: Shorten a long ternary. 2023-03-19 21:08:43 +11:00
Mitchell Richters
81650036e6 - Duke/RR: Remove vehForward/Reverse variables from player struct.
* Back in 2020, I was trying to tidy stuff up and had no idea about network awareness, etc.
* The original game misused network bits here, however I don't see why the player's angle can't just be tested for signedness. Again, something I didn't see way back when...
2023-03-19 20:55:39 +11:00
Mitchell Richters
37e9cfed45 - Duke/RR: Remove vehBraking variable from player struct.
* Back in 2020, I was trying to tidy stuff up and had no idea about network awareness, etc.
* We must continue the misuse of network bits like the original game did to make sure the RRRA vehicles are network aware.
2023-03-19 20:54:43 +11:00
Mitchell Richters
31f8de3854 - Duke/RR: Remove vehTurn variables from player struct.
* Back in 2020, I was trying to tidy stuff up and had no idea about network awareness, etc.
* The original game misused network bits here, however I don't see why the player's angle can't just be tested for signedness. Something I didn't see way back when...
2023-03-19 20:54:19 +11:00
Mitchell Richters
76e6efd204 - Duke/RR: Fix oversight in previous commit.
* Unknowingly had forced synchronised input on!
2023-03-19 20:09:14 +11:00
Mitchell Richters
d380e73cfd - Duke: Consolidate boat/moto turn functions into one. 2023-03-19 14:59:35 +11:00
Mitchell Richters
c13c244dca - Simplify moto velocity sign determination. 2023-03-19 14:35:02 +11:00
Mitchell Richters
9d74a5c60b - Duke: Consolidate vehicle turning code between boat/moto. 2023-03-19 14:35:00 +11:00
Mitchell Richters
56b95a46f7 - Duke: Consolidate vehicle tilting code between boat/moto. 2023-03-19 13:31:47 +11:00
Mitchell Richters
de5b73c60f - SW: Fix strafing issue due to missing bool negation. 2023-03-19 11:14:04 +11:00
Mitchell Richters
056330863c - Duke: Eliminate GetActor() calls in playerisdead(). 2023-03-19 09:10:14 +11:00
Mitchell Richters
a7d829d539 - Duke: Change where centering view locks the input. 2023-03-19 09:08:24 +11:00
Mitchell Richters
3ad50d5045 - Duke: Don't reset synchronised input flag if centering view.
* The way the playsim works, because the horizon functions come after the yaw ones, yaw was not being applied while pitch was locked.
2023-03-18 22:21:38 +11:00
Mitchell Richters
5b382ac2c6 - Duke: Remove everyothertime global, we can just use PlayClock. 2023-03-18 22:21:38 +11:00
Christoph Oelckers
792f977d46 - fixed STAT_ACTORS must handle actors where scale.X is 0 as 'deleted' and destroy them. 2023-03-18 12:08:53 +01:00
Mitchell Richters
1147030bca - Remove concept of InputOptions, its messy and unnecessary. 2023-03-18 21:16:50 +11:00
Mitchell Richters
b3c27a177e - Consolidate each game's gi-GetInput() into a unified function.
* Eliminates a lot of boilerplate.
* Consolidation of input accumulation buffers discretely used in each game.
* Allows privatisation of `PlayerAngles::CameraAngles`.
2023-03-18 19:49:25 +11:00
Mitchell Richters
65ee4b14d6 - Move gi->getConsoleActor() directly into the header. 2023-03-18 19:29:29 +11:00
Mitchell Richters
ee294d7fa0 - Blood: Force synchronised input while dead. 2023-03-18 19:29:29 +11:00
Mitchell Richters
4355a44721 - Duke: Rework input blocking setup.
* Takes the duplicated conditions out of the input handler and makes the ticker responsible by forcing synchronised input.
2023-03-18 19:29:29 +11:00
Mitchell Richters
bd3e9b305e - Adjust signatures of input functions slightly for consistency. 2023-03-18 19:29:29 +11:00
Mitchell Richters
b8ba78cf89 - Exhumed: Use array pointers in GameInterface::Ticker() for one's sanity. 2023-03-18 19:29:28 +11:00
Mitchell Richters
42a895d666 - Exhumed: Move dead checks out of the input handler and into the ticker. 2023-03-18 19:29:15 +11:00
Mitchell Richters
1af60fb02b - Exhumed: Clear local input accumulation buffer after copying a packet, just like the other games. 2023-03-18 19:19:22 +11:00
Mitchell Richters
0cf44e42fc - Exhumed: Eliminate initsectp global. 2023-03-18 19:19:22 +11:00
Mitchell Richters
d30ce9691a - Exhumed: Eliminate initpos global. 2023-03-18 19:19:22 +11:00
Mitchell Richters
5fe4b0fdb1 - Exhumed: Eliminate inita global. 2023-03-18 19:19:21 +11:00
Mitchell Richters
401236980c - Duke: Tidy up some unnecessarily deep branches in vehicle input code. 2023-03-18 19:19:21 +11:00
Mitchell Richters
51a20211f3 - Duke: Tidy up some repeated bools in vehicle input code. 2023-03-18 19:19:21 +11:00
Mitchell Richters
37dda1aa0e - Duke: Move input bit pre-processing into hud_input().
* Really, _really_ need to do something about this `crouch_toggle` malarkey...
2023-03-18 19:19:20 +11:00
Mitchell Richters
5a6495956f - Duke: Move Quick_Kick button test into ApplyGlobalInput() as it doesn't seem to share a bit with any other game anymore. 2023-03-18 19:17:30 +11:00
Mitchell Richters
b1888a44c3 - SW: Process weapon bits within the ticker and not the input handler. 2023-03-18 19:17:30 +11:00
Mitchell Richters
a4f0a75a58 - SW: Simplify unsynchronised input setup.
* Had complicated flagging and setup for SO vehicles that never worked and doubt I'd ever get to work.
* Setup now lends itself well to a potential more generic input setup.
2023-03-18 19:17:30 +11:00
Mitchell Richters
292030b59e - Duke: Repair issues with going underwater after taking some stuff out of the global state.
* Really, need to do something about this `crouch_toggle` malarkey...
2023-03-18 19:17:28 +11:00
Mitchell Richters
b07732bae4 - Duke: Remove duplicated call to SetupGameButtons() that's done globally in RunGame(). 2023-03-18 09:15:17 +11:00
Mitchell Richters
a45890e064 - Move some Duke-specific stuff out of ApplyGlobalInput(). 2023-03-18 09:15:15 +11:00
Mitchell Richters
eed9716d86 - Move joyaxes[] array from getHidInput() directly into ControlInfo. 2023-03-17 20:58:38 +11:00
Mitchell Richters
fc069feac6 - Negate ControlInfo::dyaw to match data out of backend. 2023-03-17 20:58:13 +11:00
Mitchell Richters
446218dd7b - Get mouse/controller input by pointed variable and not copy on return. 2023-03-17 20:58:11 +11:00
Mitchell Richters
1f97e73501 - Rename ControlInfo joystick variables to names matching backend. 2023-03-17 20:16:58 +11:00
Mitchell Richters
686bec5664 - Duke: Make vehicle input functions work on floats and not doubles and FAngles.
* It's what's natively needed at the end of the day.
2023-03-17 19:40:46 +11:00
Mitchell Richters
7f79ee9801 - Exhumed: Repair missing negation affecting death sequence.
* Pitch negation strike's back!
2023-03-17 19:17:18 +11:00
Mitchell Richters
81caf74721 - Tidy up coord stat to use gi->getConsoleActor() and also print pitch. 2023-03-17 17:28:26 +11:00
Mitchell Richters
3c4b4e4483 - Tidy up warptocoords CCMD since everything is in an actor now.
* Now accepts floating point inputs.
* Restores lost pitch capability.
2023-03-17 17:28:04 +11:00
Mitchell Richters
e6cffbaefb - Duke: Remove unnecessary playrunning() test within a loop. 2023-03-17 14:41:17 +11:00
Mitchell Richters
130c5315e9 - Call PlayerAngles::resetCameraAngles() from within the player loop of each game.
* I was only thinking of the console player initially but since each game can draw the view of other players in network games, each game will need to update and reset the camera angles for all players.
2023-03-17 14:40:18 +11:00
Mitchell Richters
d329328191 - Rename PlayerAngles::RenderAngles to CameraAngles.
* Better conveys what it is and separates it from the already established `getRender*()` methods around the place.
* Sorry Simon!
2023-03-17 14:20:36 +11:00
Mitchell Richters
742a2e5c9a - Exhumed: Ensure automap uses untouched interpolated actor position.
* Using chase cam while the automap was on was drawing the player sprite incorrectly.
2023-03-17 14:11:27 +11:00
Mitchell Richters
0fca5b14a2 - SW: Ensure automap uses untouched interpolated actor position.
* Using chase cam while the automap was on was drawing the player sprite incorrectly.
2023-03-17 13:45:29 +11:00
Mitchell Richters
d6b68dec5e - Duke: Remove player_struct::resurrected flag I added in 2021 and fix issue properly.
* The check for `player_struct::dead_flag` in `FinalizeInput()` was overzealous and is not checked in the original code in this instance.
2023-03-17 12:29:37 +11:00
Christoph Oelckers
d17650f885 - removed the ValidateTarget call from HackSeqCallback.
The original function does not validate its target, it just uses undefined memory instead when this case happens.
2023-03-16 17:49:50 +01:00
Mitchell Richters
c4041affb1 - Duke: Reduce boilerplate from previous commit. 2023-03-16 22:24:34 +11:00
Mitchell Richters
9a17d33579 - Duke: Ensure spawned player actor has view height baked in up until the first getzrange() call.
* The original game spawning the player's sprite/actor would set the sprite's pos with the Z matching the player's, which had a height offset already applied.
* This baked in height offset was carried through up until the `SetActor()` call in `processinput()`, where the original game would then strip off `gs.playerheight`.
* This baked in height offset within the actor is critical on the first tic for pre-activated elevators on level spawn to function right, such as E1L2 and E2L3.
* Properly setting the player actor's Z immediately after the initial `getzrange()` call, but before other functions like `movement()`, etc further down in `processinput()` is the best spot.
* Fixes #870.
2023-03-16 22:15:11 +11:00
Mitchell Richters
8bcbc1b892 - Null the roll angle used for weapon drawing when looking left/right and with Blood's delirium for now.
* Intended to make the look left/right keys better, but doesn't work properly for weapons made up of layered parts of varying sizes.
* Fixes #879.
2023-03-16 16:34:31 +11:00
Mitchell Richters
528eb0ea9a - Blood: Fix state checks when using TNT while diving underwater.
* A mess of bloody proportions...
* Originates from d30c94c709.
* Fixes #878.
2023-03-16 15:50:52 +11:00
Mitchell Richters
cb1e4e7a34 - Exhumed: Ensure Player::items[] is signed.
* Change originates from b71c725e3e.
* Matches PCExhumed and GDX.
* Logic in game requires this variable to be signed.
* Fixes #415.
* Fixes #888.
2023-03-16 13:05:22 +11:00
Mitchell Richters
3d6f1e1a04 - Exhumed: Store dedicated player velocity in Player struct.
* Changes implementation in 67c7dd65f9.
* Cannot rely on the actor's velocity alone as parts of the game modify this, such as getting hit by lava dudes, but game nullifies this at the start of the player's tic.
2023-03-16 12:17:42 +11:00
Mitchell Richters
b42b9de2a2 Revert "- SW: Tune shadow drawing code so that it by default uses the sector's interpolated floorz when possible."
This reverts commit 3271c2011e.

* Fixes #884
* Fixes #892
2023-03-16 11:23:05 +11:00
Mitchell Richters
0d62e6befe - Exhumed: Optimise UnlinkIgnitedAnim() from fb97e3c6ca a bit.
* Bad cherry pick caused a stat iteration over the wrong stat number.
* Cleaned up commentary to reflect that we have actors and not so much sprites or an anim array anymore.
2023-03-15 22:52:14 +11:00
Mitchell Richters
07a82508fa - Blood: Fix palette of actor sprite on 2D automap.
* Fixes #846.
2023-03-15 22:22:52 +11:00
Mitchell Richters
a4bca328bc - SW: Remove Player::siang since we have the same data in 2023-03-15 19:57:45 +11:00
Mitchell Richters
7da3c62ea8 - Blood: Repair velocity scaling in ConcussSprite().
* Issue originates back from 645c606e39.
* During initial floatification, the velocity addition was changed a mulscale of 16 to 12, quadrupling the amplification.
* A lot's changed since then, but we can restore the size of the velocity by simply dividing the size value by 4x.
* Turned into a reciprocal as well to avoid division.
* Fixes #860.
2023-03-15 19:42:33 +11:00
Mitchell Richters
39624da390 - SW: Remove getViewHeightDiff() call in player sprite draw code.
* I added this when removing the player's pos vector in lieu of the sprite vector to further smooth out the sprite's Z in chase cam mode, but it just doesn't look good.
2023-03-15 19:42:33 +11:00
sirlemonhead
fb97e3c6ca PCExhumed: Fixed Ignited sprite anim issue that could cause invalid array access.
* Fixes #638.
2023-03-15 17:20:29 +11:00
Mitchell Richters
2162e51424 - Blood: Amend how QAVs process when game is paused.
* Repair of initial implementation in ebdc9c31f2.
* Fixes #883.
2023-03-14 21:45:47 +11:00
Mitchell Richters
016016b7ab - Blood: Fix max weapons slot test preventing slot 12 from being called.
* Fixes #891.
2023-03-14 21:45:46 +11:00
Mitchell Richters
a90665732c - Clean up other PlayerAngles interfaces for consistency. 2023-03-14 21:45:38 +11:00
Mitchell Richters
62561d863e - Tidy up PlayerAngles::doPitchKeys() interface by passing the whole sync packet through. 2023-03-14 21:45:37 +11:00
Mitchell Richters
9ffc65fa48 - Exhumed: Eliminate PlayerInput struct in favour of InputPacket object PlayerList::input. 2023-03-14 21:45:37 +11:00
Mitchell Richters
67c7dd65f9 - Exhumed: Remove PlayerInput::vel in favour of just using actor's velocity. 2023-03-14 21:45:37 +11:00
Mitchell Richters
73acffac2c - Exhumed: Move PlayerInput::nItem to Player struct as Player::nCurrentItem. 2023-03-14 21:45:37 +11:00
Mitchell Richters
f77b1007be - Exhumed: Remove unused PlayerInput::buttons 2023-03-14 21:45:37 +11:00
Mitchell Richters
c73ee5f848 - Exhumed: Move PlayerInput::pTarget to Player struct. 2023-03-14 21:45:37 +11:00
Mitchell Richters
18ef460a99 - Tidy up interface for PlayerAngles::doViewPitch() since we have internal access to the player's actor. 2023-03-14 21:45:36 +11:00
Christoph Oelckers
6c77d1c39e - Duke: fixed setup of purely scripted enemies,
Some band-aid is still needed for the time being.
2023-02-09 17:34:59 +01:00
Mitchell Richters
cbcc4f7729 - SW: Repair pitch setup for all weapons not accounting for the player's view pitch offset.
* Long-standing omission from back in 0e3604ac9e.
2023-02-04 17:18:47 +11:00
Simon
e28088380f Fix crash in Shadow Warrior when player dies 2023-02-04 17:05:20 +11:00
Mitchell Richters
991ef5c27f - Minor input tidy-up. 2023-02-04 17:05:18 +11:00
Christoph Oelckers
8052bc7e46 - fixed bad vector addition to incorrect variable. 2023-01-29 09:05:35 +01:00
Christoph Oelckers
4328016963 - move the remaining parts of spawninitdefault to DukeActor::Initialize.
This ensures proper execution of all code - spawninitdefault was designed to be the fallback for actors without a special case in spawninit.
2023-01-28 16:33:35 +01:00
Christoph Oelckers
38b278b12d - fixed enemy setup.
All enemies now run a native init function to reduce script-induced problems.

this required adding a NOGRAVITY flag so that the recon can use the same code as well which was the only enemy relying on custom code.
2023-01-28 16:33:15 +01:00
Christoph Oelckers
0db441accb - scriptified the native parts of the powder keg.
This was the last remaining actor with its own native ticking part.
2023-01-28 16:31:46 +01:00
Christoph Oelckers
9f01c87ccb - scriptified the native part of FireflyFlyingEffect. 2023-01-28 16:31:45 +01:00
Christoph Oelckers
9783b8c402 - scriptified World Tour's flamethrowerflame.
The first of 3 mixed native/CON items which are the last things remaining in the main thinker loops.
2023-01-28 16:31:45 +01:00
Christoph Oelckers
dce0afe499 - Blood: fixed application of push velocity. 2023-01-28 12:43:46 +01:00
Christoph Oelckers
432021b8e7 - Exhumed: avoid shade hacks with palette emulation on.
This code only makes sense with true color rendering.
2023-01-28 11:44:05 +01:00
Christoph Oelckers
fc547f5ada - Blood: fixed bad array resize. 2023-01-28 10:59:27 +01:00
Christoph Oelckers
3b8956c728 - Blood: make sure that tracking condition data is always properly initialized. 2023-01-28 10:11:34 +01:00
Christoph Oelckers
33f0d229fa - Exhumed: fixed bad return values for two HUD functions. 2023-01-21 14:37:57 +01:00
Christoph Oelckers
19a58ddeb0 - Blood: fixed velocity for ejected shell casings. 2023-01-21 14:33:42 +01:00
Christoph Oelckers
9cc7f90410 - Blood: reverted GetSpriteExtents to integer math.
The change in precision was enough to make the game misbehave.
2023-01-21 13:56:14 +01:00
Christoph Oelckers
2198782ecb - SW: make player sounds always follow the source.
Let's hope this fixes the issues with weapon sounds.
2023-01-21 12:01:32 +01:00
Christoph Oelckers
81f6899e72 - C++20 constant fixes.
Use of enums is deprecated in floating point calculations.
2023-01-21 10:34:44 +01:00
Christoph Oelckers
f6ff02c51e - Blood: fixed incorrect defaults for relative sound volume in two places 2023-01-18 06:58:37 +01:00
Christoph Oelckers
bb7f00988a - give Blood's sounds well defined names so they can be defined via SNDINFO. 2023-01-15 16:15:28 +01:00
Christoph Oelckers
841402a776 - allow setting loop points for WAV sounds or other simple formats. 2023-01-15 15:19:21 +01:00
Christoph Oelckers
f1c3a6548f - use backend pitch features for Duke instead of replicating them on the game side. 2023-01-15 13:18:54 +01:00
Christoph Oelckers
ad0bff921b - allow setting Duke's relevant sound properties through SNDINFO. 2023-01-15 11:54:24 +01:00
Christoph Oelckers
8001c4041f - Duke: fixed hitscan vector for pistol's aim check. 2023-01-14 16:48:28 +01:00
Christoph Oelckers
97f14c0e0e - Duke: fixed projectile offsetting for BOSS2 and BOSS3 2023-01-14 11:53:13 +01:00
Mitchell Richters
62c6131901 - Duke: Make screen backdrop setup the same as the other games. 2023-01-13 11:06:42 +11:00
Mitchell Richters
7f1add4786 - Exhumed: Remove unused local variable left over from 087aa7b2ee. 2023-01-13 10:34:31 +11:00
Mitchell Richters
c7d2a64af0 - Blood: Use nullAngle in one place. 2023-01-13 09:03:02 +11:00
Mitchell Richters
8ef7e0e4f3 - Duke: Only draw the screen border when the viewport isn't 100%. 2023-01-13 08:56:12 +11:00
Mitchell Richters
087aa7b2ee - Exhumed: Tidy up DrawMap() entrypoint. 2023-01-12 18:59:32 +11:00
Mitchell Richters
c606fc11da - Add call to resetForcedSyncInput() for all games.
* Blood was missing it.
* If it's pre-added to all games, it never needs thinking about.
2023-01-12 18:59:32 +11:00
Christoph Oelckers
b7799a5a3c - fix kill counter in Blood (for real this time.) 2023-01-08 20:12:28 +01:00
Christoph Oelckers
d7d4bfe04b - Blood: use a 3D unit vector to set Blood's projectile velocity. 2023-01-08 19:16:58 +01:00
Christoph Oelckers
532f994ccb - RR: stop the bowling pins' tumbling animation when they come to a rest.
Fixes an original RR bug.
2023-01-08 18:46:42 +01:00
Christoph Oelckers
ff33dd7188 - Duke: fixed bad surface check.
Surfaces are not bit flags, they are values.
2023-01-08 18:32:38 +01:00
Mitchell Richters
4f8909db96 - SW: Don't interpolate the player's sprite in InterpSectorSprites(), it's interpolated elsewhere.
* Fixes #845.
2023-01-08 23:25:45 +11:00
Mitchell Richters
3271c2011e - SW: Tune shadow drawing code so that it by default uses the sector's interpolated floorz when possible.
* Partially addresses #845.
2023-01-08 23:03:59 +11:00
Christoph Oelckers
7262184d53 - SW: account for invalid player actors being passed to the sound engine. 2023-01-08 12:41:34 +01:00
Mitchell Richters
1f489d5dbe - SW: Don't back up the actor's Z after changing it in KeepActorOnFloor().
* This seems completely wrong and kills Z interpolation on slopes, vators, etc.
* Thanks Graf 😁
* Fixes #844.
* Partially addresses #845.
2023-01-08 22:24:17 +11:00
Christoph Oelckers
1e3a285534 - Duke: fixed access card activation delay. 2023-01-08 10:34:14 +01:00
Mitchell Richters
165afbbfa9 - SW: Restore lost SetAngleFromChange(actor) call from previous commit. 2023-01-07 22:49:22 +11:00
Christoph Oelckers
ae6af08cf1 - SW: cleaned up SlopeBounce and fixed some bad math. 2023-01-07 12:23:29 +01:00
Christoph Oelckers
2e35d6a6a8 - Exhumed: account for rounding errors in MoveSectorSprites
The formula here left no margin for error and minor rounding errors are inevitable with this code.
2023-01-07 10:45:15 +01:00
Christoph Oelckers
7cf13ed158 - fixed bad angle math in cl_showweapon handler. 2023-01-06 17:22:21 +01:00
Mitchell Richters
9a27cf025f - Duke: Fix bad setup for stopping Duke's scream when putting the jetpack on. 2023-01-06 22:17:14 +11:00
Mitchell Richters
5e2991acc7 - Duke: Additional fixes for alterang().
- Initial issue started in 3c1970e9e0.
- Fix in 4f59e8a3d1 was partial and not enough.
- Ensure delta angle is absolute in if statements as required, but don't use absangle as we need to apply the true delta in the last conditional.
- Fix incorrect random angle addition as compared to older source.
- Fixes #735.
2023-01-06 21:39:55 +11:00
Mitchell Richters
1d0e9b369e - Blood: Fix bad spawned actor angle for actFireMissile().
* Originating from a8cc6c1189.
* Fixes #837.
2023-01-06 17:55:40 +11:00
Mitchell Richters
1438bb5e80 - Blood: Ensure actor's XY pos is updated before calling Z slope utils.
* Originates from efc832ca5c.
* Fixes #833.
2023-01-06 17:08:56 +11:00
Mitchell Richters
f69bfe4959 - SW: Remove leftover debug prints from previous commit. 2023-01-06 12:10:19 +11:00
Christoph Oelckers
32ce8a97bf - SW: do not double interpolate sectors that are both part of a sector object but also have a global interpolation attached.
In this case the SO interpolation must be skipped. The only use case for this combination is sine-wave animated water.
2023-01-05 19:26:42 +01:00
Mitchell Richters
179ec32d5f - SW: Fix automap sprite angle which was not right with unsynchronised input. 2023-01-05 21:00:32 +11:00
Mitchell Richters
ba364a1cb6 - Duke: Fix automap sprite angle which was not right with unsynchronised input. 2023-01-05 21:00:31 +11:00
Mitchell Richters
676cdba259 - Blood: Adjust VDoorBusy() setup from e133985fa0.
* Changes to case 3 while visibly different, actually equates to the same algorithm for case 0.
* Revert case 3 back to original condition and send through 0 to `ZTranslateSector()` in `VDoorBusy()` if its 3 and we're not vanilla.
2023-01-05 20:59:14 +11:00
Mitchell Richters
a93342df85 - Duke: Only store one VMValue member on the stack in CallInitialize(). 2023-01-05 20:56:04 +11:00
Christoph Oelckers
220c1f0e76 - make sure the RPG's start spund plays.
This fix is just a temporary workaround due to the incomplete scriptfication
2023-01-04 20:20:10 +01:00
Mitchell Richters
a36cb45421 - Blood: Add VanillaMode() test to previous commit. 2023-01-03 09:01:37 +11:00
Mitchell Richters
e133985fa0 - Blood: Adjust sine wave in GetWaveValue for 4th type to use full curve of the wave.
* Initial setup would cause a very abrupt stop when coming to the top of an elevator, such as the one in E1M5.
* This would continue for an abrupt fall, causing the floor to essentially give out underneath the player or a dude actor.
* Lengthened wave allows the wave to start off softly and finish softly, with the elevator fastest in the middle of motion.
* Fixes #778.
2023-01-02 23:42:37 +11:00
Mitchell Richters
95f05d51c5 - Blood: Increase precision of values used within GetWaveValue(). 2023-01-02 23:26:54 +11:00
Mitchell Richters
30cacb1a70 - Blood: Fix bad cherry pick in bcd2d82bc7. 2023-01-02 19:33:51 +11:00
bcd2d82bc7 - Blood: Allow fire button to be used for tnt/spray throw
Prevent alt fire blocking fire button for tnt/spray can throwing

* Advised of fix to Raze here: https://github.com/nukeykt/NBlood/pull/654#issuecomment-1253886969
* Fixes #671.
2023-01-02 19:24:38 +11:00
Mitchell Richters
c5f27f28b7 - SW: Tidy up the player sprite pos variable a little. 2023-01-02 17:06:01 +11:00
Mitchell Richters
577099284f - SW: Increment PlayClock at the end of the tic, not at the start. 2023-01-02 16:49:02 +11:00
Mitchell Richters
deef767c5d - Blood: Fix some nullptr issues in checkHit() and checkFloorHit().
* Fixes #834.
2023-01-02 15:02:57 +11:00
Mitchell Richters
b03d674a74 - SW: Fix tank track velocity.
* Originating from 8efe6f638b.
* Velocity was correctly floatified initially but because it was unwrapped, it never got adjusted for Q28.4 later on.
2023-01-02 14:41:43 +11:00
Mitchell Richters
56d9ccfc9c - SW: Fix tank tracks not working.
* Originating from 0c146e7ccb.
2023-01-02 14:39:43 +11:00
Mitchell Richters
7760eff4ba - SW: Fix issue with RC tank in $seabase.
* Originated from 8efe6f638b.
* I'm sure this was meant to be 0.05, but became 0.5 by mistake.
* Use something closer to `12800. / 262144.`.
* Fixes #831.
2023-01-02 14:36:55 +11:00
Mitchell Richters
f431d51c2f - SW: Add inertia correction to PlayerWarpUpdatePos().
* Warping between sectors such as the clouds in $volcano now maintains perfect velocity, etc.
2023-01-02 11:53:10 +11:00
Mitchell Richters
ac13bd81af - Fix bad Z test in WarpPlane().
* Originates from incomplete change in 7eba7aacbd.
* Fixes #832.
2023-01-02 11:00:47 +11:00
Christoph Oelckers
c72f5e2242 - SW: SECT_WALL_MOVE must consider tilenum 0 as 'no change'. 2022-12-29 14:40:18 +01:00
Christoph Oelckers
d064706f93 - got rid of wallpicnum and overpicnum.
All map geometry npw uses texture IDs and no longer depends on Build's tile system.
(What's missing is a new map format, though, but this was a necessary prerequisite to make that worthwile...)
2022-12-29 14:14:53 +01:00
Christoph Oelckers
f5e9e7d981 - got rid of most remaining references to wallpicnum and overpicnum.
What remains now needs changing the variables to texture IDs first.
2022-12-29 14:14:53 +01:00
Christoph Oelckers
90702ae2f5 - consolidated the animwall code by using texture flags.
This is way too hacky for generalization. For that newly defined control actors are surely a better option.
2022-12-29 14:14:53 +01:00
Christoph Oelckers
bfdfff7a42 - named all of SW's breakable wall textures.
We need this later when these get exported.
2022-12-29 14:14:53 +01:00
Christoph Oelckers
b980789ddf - skip switch animation checks for custom switch actors. 2022-12-29 14:01:39 +01:00
Christoph Oelckers
95a2b85fae - migrated the rest of the switch code to use the external data. 2022-12-29 13:35:21 +01:00
Christoph Oelckers
0c0199fbdc - same procedure for wall switches 2022-12-29 13:33:02 +01:00
Christoph Oelckers
d9122a0482 - split out the sprite switch toggle handler into a common subfunction using the switch definitions. 2022-12-29 13:33:02 +01:00
Christoph Oelckers
4191a9493a - split RRRA's tag10000specialswitch into a subfunction.
Unfortunately I have no idea where this gets used so it's untested for now.
2022-12-29 13:33:02 +01:00
Christoph Oelckers
97a5fc2948 - did a clean reimplementation of resetswitch. 2022-12-29 13:33:02 +01:00
Christoph Oelckers
564e9d2905 - use switch types to cut doen the first switch/case block in checkhitswitch 2022-12-29 13:33:01 +01:00
Christoph Oelckers
808fb3c433 - simplified several switch check blocks using the data from the definition files. 2022-12-29 13:32:30 +01:00
Christoph Oelckers
2386ea9930 - implemented the 3 special switches
That's the developer commentary icon in World Tour, the deactivation switch for the chicken processing plant in RR and one shootable alarm bell in RRRA.
2022-12-29 13:32:30 +01:00
Christoph Oelckers
0d9fe83cba - implemented the switch parser and set up the external definitions. 2022-12-29 13:32:29 +01:00
Mitchell Richters
22f5c69b4c - Duke: Fix bad checkaccessswitch_*() calls.
* Fixes #815.
2022-12-29 22:45:36 +11:00
Mitchell Richters
e528c3fbb8 - SW: Repair whoopsie in BunnyCheat(). 2022-12-29 21:50:29 +11:00
Mitchell Richters
1d69ebe9b0 - Duke: Ensure that the expander hitscans when autoaim is "hitscan only".
* Fixes #827.
2022-12-29 21:17:41 +11:00
Mitchell Richters
fbee05e760 - SW: Restore two original cheat codes lost long ago.
* Fixes #810.
2022-12-29 20:59:19 +11:00
Mitchell Richters
9d5bae0c8e - SW: Fix clipmove call within DoPlayerMoveVehicle().
* Originating from 05ad1e38e9.
* Fixes #829.
2022-12-29 20:32:58 +11:00
Mitchell Richters
ca2a427379 - SW: Re-add CVAR_SERVERINFO back to sw_ninjahack but leave commented out, it may be needed later. 2022-12-29 19:41:41 +11:00
Mitchell Richters
6065140f68 - SW: Remove CVAR_SERVERINFO flag from sw_ninjahack and take them out of the global space. 2022-12-29 19:36:18 +11:00
Mitchell Richters
b0b2f1bf1b - SW: Only bring the weapon back up after doing chops if not on a vehicle with a weapon. 2022-12-29 19:25:17 +11:00
Mitchell Richters
c240c8e6ee - SW: Fix two bad calls to pushmove() where a fixed point adjustment was used.
* Came in from 3ac4e7ed2d.
* Fixes #816.
2022-12-29 19:02:56 +11:00
Mitchell Richters
dcd0e62466 - SW: Remove call to doYawKeys() from DoPlayerDeathFollowKiller(). 2022-12-29 14:35:42 +11:00
Mitchell Richters
96e8565ba7 - Blood: Reset player's render angle state only for the console player. 2022-12-29 14:35:42 +11:00
Mitchell Richters
572ec96467 - SW: Reset player's render angle state only for the console player. 2022-12-29 14:35:41 +11:00
Mitchell Richters
7593114fc7 - SW: Tidy up UpdatePlayerSprite() a bit. 2022-12-29 14:35:41 +11:00
Mitchell Richters
774c7795b1 - SW: Apply same fix to DoPlayerClimb(). 2022-12-29 14:35:38 +11:00
Mitchell Richters
7e1e447f98 - SW: Apply same fix to DoPlayerFly(). 2022-12-29 14:27:59 +11:00
Mitchell Richters
09304ef298 - SW: Fix player diving height issues.
* Fixes #822.
2022-12-29 14:27:59 +11:00
Mitchell Richters
6c7797a9f0 - SW: Clean up some noisy commented out calls to DoPlayerHeight(). 2022-12-29 13:50:27 +11:00
Mitchell Richters
adc2396f31 - Duke: Extend fix from previous commit to appropriately resize the VMValue array also. 2022-12-24 15:41:37 +11:00
CandiceJoy
a943652799 Fixed a Mac debug build crash where CallAnimate attempted to pass one too many parameters to the VM. 2022-12-23 10:38:59 +01:00
Mitchell Richters
0b3076d2b4 - SW: Fix PreMapCombineFloors() setup due to player actor not yet being initialised.
* Fixes #804.
2022-12-23 19:18:08 +11:00
Mitchell Richters
4890f1d9dc - SW: Adjustments to the death height code on the back of the last commit. 2022-12-23 19:18:07 +11:00
Mitchell Richters
5f1581be9d - SW: Rework the player's height adjustment to use the pos.Z setter from during the refactor.
* I tried to get smart during the refactor when I should have kept it simple.
* Fixes #813.
2022-12-23 19:18:07 +11:00
Christoph Oelckers
c7e25726c1 - use memset to clear 'gs' in loadconst.
MSVC compiled the old assignment to memsetting a local copy and then memcpying it to the destination, but this struct is far too large for that and was causing occasional stack errors when debugging.
2022-12-20 12:44:34 +01:00
Christoph Oelckers
ef7c72ce9f - Blood: add all statically stored EventObjects to the GC processor. 2022-12-18 17:54:54 +01:00
Christoph Oelckers
b1e2b2addf - backend cleanup from GZDoom. 2022-12-18 16:31:50 +01:00
Christoph Oelckers
8c41294cb0 - overpicnum lightening.
Especially make sure that it is never set to tile 0. There seems to have been some undefined behavior here treating 0 as 'no texture', but doing so inconsistently.
2022-12-18 15:13:22 +01:00
Christoph Oelckers
837e4d1438 - eliminated many uses of wallpicnum.
The ones left require a bit more work on the data first.
2022-12-18 15:11:08 +01:00
Christoph Oelckers
ffb471666d - moved the access switch handlers out of checkhitswitch_*. 2022-12-18 15:08:27 +01:00
Christoph Oelckers
a9ea2cd5c0 - moved GetReservedScreenSpace function into the scripted status bar where it belongs.
Since this is supposed to return the height of the status bar, keeping it native is a bit pointless as it cannot be modified that way.
2022-12-18 14:47:38 +01:00
Christoph Oelckers
c41dc29885 - eliminated half of the remaining tileWidth and tileHeight calls. 2022-12-18 14:45:09 +01:00
Christoph Oelckers
e78fd90f67 - adapted sky code for using texture IDs. 2022-12-18 14:42:27 +01:00
Christoph Oelckers
8dfbbc8220 - migrated floorpicnum and ceilingpicnum to FTextures.
The sky code still needs some work.
2022-12-18 14:32:52 +01:00
Christoph Oelckers
4ea252c227 - simplified SW's mirror setup a bit to take advantage of Raze's in-engine mirror handling.
We only need one label texture and no special treatment of the backsector.
2022-12-18 14:06:34 +01:00
Christoph Oelckers
9d62951cf3 - SW: use surface types for detecting water and lava sectors 2022-12-18 14:05:17 +01:00
Christoph Oelckers
32ad16f84d - SW's first texture flag, yay!
Removes two floorpicnum accesses
2022-12-18 14:04:33 +01:00
Christoph Oelckers
622710ede4 - migrated all uses of floorpicnum.
This necessitated a few more surface type definitions.
2022-12-18 14:02:56 +01:00
Christoph Oelckers
4a306a21dc - split several texture flags off into a surface type value.
Using the same field in the TexExtInfo struct as Blood's surfType.
This frees up a lot of flags for later use.
2022-12-18 13:56:54 +01:00
Christoph Oelckers
1a98f9b478 - Duke: change all checks for mirrors to texture IDs 2022-12-18 13:52:10 +01:00
Christoph Oelckers
5b8dd84361 - use setceilingtexture where textures are simply copied around 2022-12-18 13:52:10 +01:00
Christoph Oelckers
ee8b685fe2 - adapted the breakable stuff interface in Duke to Texture IDs. 2022-12-18 13:52:03 +01:00
Christoph Oelckers
f3e652da84 - preparations and annotations for places in SW where textures are stored in tags. 2022-12-18 13:44:36 +01:00
Christoph Oelckers
0ffeb2378a - generalize Duke's purple lava check. 2022-12-18 13:43:26 +01:00
Christoph Oelckers
6848af9b6c - use texture IDs in Duke's texture flag checkers. 2022-12-18 13:42:28 +01:00
Christoph Oelckers
5147826eeb - consolidated precaching code and rewrote the core to work on texture IDs. 2022-12-18 13:37:54 +01:00
Christoph Oelckers
1a6f808fca - refactored all access to the fake picanm[] array.
Also use symbolic names in precache calls in Blood.
2022-12-18 13:26:29 +01:00
Christoph Oelckers
e23a5095cb - moved the other tile info tables of Blood to the texExtInfo array as well.
The two fields are easily reusable for the other games so it's a welcome simplification.
2022-12-18 13:23:59 +01:00
Christoph Oelckers
c34756e5f2 - cleanup of voxel init code.
The voxreserve array was never properly set up so it is gone now.
nextvoxid now gets set right before loading .def files.
2022-12-18 13:18:44 +01:00
Christoph Oelckers
8a789b9015 - voxel management cleanup.
Moving the voxel index into the texExtInfo array and removing most of Blood's and SW's special handling.
2022-12-18 13:18:43 +01:00
Christoph Oelckers
20edd800f9 - big texture system refactor.
Finally that quickly slapped together BuildTiles class is gone and replaced with something that better integrates with the underlying texture manager
2022-12-18 13:05:58 +01:00
Christoph Oelckers
e9acd74157 - added a fallback in shoot_* for incompletely ported items. 2022-12-18 00:34:17 +01:00
Christoph Oelckers
82c30f551f - Blood: relax range check in AlignSlopes.
This now checks the full range of the wall array and if outside just does nothing. E2M6 has a bogus value for this feature that asserted with the old check.
2022-12-17 20:23:54 +01:00
Christoph Oelckers
bfe958abd6 - Blood: do not double-rotate the player.
One of these actions needs to be removed, now that the angles are consolidated.
2022-12-17 20:03:56 +01:00
Christoph Oelckers
521a59fd26 - Blood: fixed blood splats being spawned in the wrong place. 2022-12-17 19:34:35 +01:00
Christoph Oelckers
32071c4460 - Blood: fixed 3 places where 3D distance was used but 2D should have been used. 2022-12-17 18:43:15 +01:00
Mitchell Richters
cf5ba0886a - SW: Properly guard the call to PlayerDeathReset() in TerminateLevel().
* Stems from an oversight in 28b97486cd.
* Fixes #796.
2022-12-17 06:32:03 +11:00
Mitchell Richters
8bbf7f4e00 Revert "- SW: Revert last commit and apply changes directly in pp->setHeightAndZ() so all bases are covered."
This reverts commit a643a74083.

* Fixes #795
2022-12-16 08:44:38 +11:00
Mitchell Richters
a643a74083 - SW: Revert last commit and apply changes directly in pp->setHeightAndZ() so all bases are covered. 2022-12-15 18:16:38 +11:00
Mitchell Richters
b83d321c4b - SW: Don't use pp->setHeightAndZ() when setting PLAYER_CRAWL_HEIGHTF. 2022-12-15 18:06:07 +11:00
Christoph Oelckers
9fc17a4bcf - fixed velocity handling in a few enemy swimChase functions.
The one for the gill beast was particularly bad.
2022-12-14 11:32:56 +01:00
Christoph Oelckers
ff09257d47 - Exhumed: allow Anubis to get out of the walking state if he loses his target.
This happened on occasion on the first map
2022-12-14 10:25:01 +01:00
Mitchell Richters
53dfac5327 - Duke: Fix bad sector variable check in floorspace().
* Originated from 1b3f551216.
* Was causing the player to die quite easily when coming out of the transporter at the start of E2L2.
2022-12-14 18:14:06 +11:00
Christoph Oelckers
cd28c818b0 - fixed bad hitradius distance calculation.
Player offset was retrieved from the wrong actor here.
2022-12-13 17:19:04 +01:00
Christoph Oelckers
fba882e368 - fixed SE30 moving player twice each step.
With the changes in dd5834444e it was applying movement to the player in both the player and the actor loop.
2022-12-13 16:16:48 +01:00
Christoph Oelckers
f45265352d - added a few class types needed for RR's UFO spawners. 2022-12-13 15:49:09 +01:00
Christoph Oelckers
efd6d2cf07 - fix initialization issues with a few serializer functions. 2022-12-13 14:38:58 +01:00
Kevin Caccamo
4cdb0c3c55 Attempt to fix #787 2022-12-13 14:08:02 +01:00
Christoph Oelckers
4f388c3589 - fixed bad direction setup for vertically moving SE 0.
This also adds missing interpolation for this case.
2022-12-13 13:46:55 +01:00
Christoph Oelckers
5f6cd0da79 - Duke/RR: fixed floor alignment of flames in sloped sectors 2022-12-13 12:01:34 +01:00
Christoph Oelckers
6b0c067d46 - Duke: fixed flames not being floor aligned.
The same code was correct in the RR variant, so it just got copied over.
2022-12-13 11:51:14 +01:00
Christoph Oelckers
13e6718153 - added mapSpawned member to DDukeActor
Duke uses the owner a lot to check if an actor was spawned at map start or in-game, but that depends a lot on stale pointers being maintained, which our garbage collected system does not allow. So this field now serves as a more reliable stand-in for these cases.
No actual changes yet.
2022-12-13 10:36:45 +01:00
Christoph Oelckers
9c1fc93e1c - Exhumed: The ObjectList was not properly garbage collected. 2022-12-13 08:49:56 +01:00
Christoph Oelckers
629dc8e163 - fixed kill counting in Blood. 2022-12-13 08:37:22 +01:00
Christoph Oelckers
87ff99caa1 - fixed typo 2022-12-12 09:26:43 +01:00
Christoph Oelckers
1f7954fc29 - fixed World Tour fallback sound lookup. 2022-12-12 08:25:02 +11:00
Christoph Oelckers
1e249d3536 - fixed bad actor type check. 2022-12-11 20:15:14 +01:00
Mitchell Richters
28b97486cd - SW: For single player games, call PlayerDeathReset() from TerminateLevel() and not DoPlayerDeathCheckKeys().
* This fixes issues where player stats like health, etc are shown onscreen as reset before the entire view reloads.
2022-12-11 19:46:27 +01:00
Mitchell Richters
b8a8164b24 - SW: Don't call DoSpawnTeleporterEffect() upon death.
* This causes an air bubble to spawn above the player for a single tic, even while on land until the level truly restarts.
* Since we're restarting, its better to just not do this.
2022-12-11 19:46:27 +01:00
Mitchell Richters
9b73f46aff - SW: Don't reset player pitch upon death.
* This _somewhat_ addresses #770 by hiding the effects of it.
* Since we re-init `Player::Angles` when a new actor is spawned, this all resets anyway.
2022-12-11 19:46:27 +01:00
Mitchell Richters
7d6eb2bae6 - Remove some pitch/yaw deltaangle additions in lieu of setting the angle directly.
* This deltaangle addition was needed with the old input setup.
2022-12-11 19:46:27 +01:00
Mitchell Richters
c3f276a08a - Tidy up remaining Build angle constants in gamefuncs.h. 2022-12-11 19:46:27 +01:00
Mitchell Richters
de8353f085 - Eliminate BAngToDegree constant. 2022-12-11 19:46:26 +01:00
Mitchell Richters
67b40ee1d5 - Convert angle in hud_drawsprite() to work on true degrees, and in the right direction. 2022-12-11 19:46:26 +01:00
Mitchell Richters
3a1729a9ce - Duke (RR): Final tidy-up of displayweapon_r(). 2022-12-11 19:46:26 +01:00
Mitchell Richters
3eb3a29a7e - Duke: Tidy up animateshrunken(). 2022-12-11 19:46:26 +01:00
Mitchell Richters
c45b755773 - Duke (RR): Tidy up remaining uses of old weapon offset code. 2022-12-11 19:46:26 +01:00
Mitchell Richters
7ec2c1a0fa - Duke (RR): Move displaysaw() lambda to new weapon offsets. 2022-12-11 19:46:26 +01:00
Mitchell Richters
6d9b53af3d - Duke (RR): Move displayblaster() lambda to new weapon offsets. 2022-12-11 19:46:26 +01:00
Mitchell Richters
21fe395c2e - Duke (RR): Move displaytits() lambda to new weapon offsets. 2022-12-11 19:46:25 +01:00
Mitchell Richters
717955d5ab - Duke (RR): Move displaythrowingdynamite() lambda to new weapon offsets. 2022-12-11 19:46:25 +01:00
Mitchell Richters
70d7210462 - Duke (RR): Move displaydynamite() lambda to new weapon offsets. 2022-12-11 19:46:25 +01:00
Mitchell Richters
387e0286ac - Duke (RR): Move displaypistol() lambda to new weapon offsets. 2022-12-11 19:46:25 +01:00
Mitchell Richters
755e2be0a4 - Duke (RR): Move displayrifle() lambda to new weapon offsets. 2022-12-11 19:46:25 +01:00
Mitchell Richters
82e9b96174 - Duke (RR): Move displayshotgun() lambda to new weapon offsets. 2022-12-11 19:46:25 +01:00
Mitchell Richters
c6380bfd7a - Duke (RR): Move displaychicken() lambda to new weapon offsets. 2022-12-11 19:46:25 +01:00
Mitchell Richters
79ae9e1f97 - Duke (RR): Move displaycrossbow() lambda to new weapon offsets. 2022-12-11 19:46:24 +01:00
Mitchell Richters
be439918dc - Duke (RR): Move displaypowderkeg() lambda to new weapon offsets. 2022-12-11 19:46:24 +01:00
Mitchell Richters
40ec46e323 - Duke (RR): Move displaybowlingball() lambda to new weapon offsets. 2022-12-11 19:46:24 +01:00
Mitchell Richters
6193d17dac - Duke (RR): Move displayslingblade() lambda to new weapon offsets. 2022-12-11 19:46:24 +01:00
Mitchell Richters
50c1c5b48d - Duke (RR): Initial hookup of new weapon drawing offsets from the backend, starting with displaycrowbar(). 2022-12-11 19:46:24 +01:00
Mitchell Richters
5d3710d677 - Duke: Always use tsprite pos/angle when used in conjunction with viewvec or viewang.
* This solves the issue of jittery picnum changes when circle-strafing actors at high speeds.
2022-12-11 19:45:38 +01:00
Christoph Oelckers
bea6834f8e - code cleanup. 2022-12-11 19:45:38 +01:00
Christoph Oelckers
97d76a01e4 - SW: do a proper implementation for sprites which do not want texture animations.
Instead of hacking the picanm table it is far more preferable to flag the sprite as non-animating and let the renderer handle it.
2022-12-11 19:45:38 +01:00
Christoph Oelckers
281b102fac - gave all textures that were accessed with their "#0xxxx" name a descriptive names.
Only the fallback fonts were intentionally excluded because these are supposed to get the ART file content.
2022-12-11 19:45:18 +01:00
Christoph Oelckers
58db09969c - moved tileForName out of BuildTiles.
Just pulling one change out of the big upcoming refactor commit.
2022-12-11 19:45:18 +01:00
Christoph Oelckers
e26d9106aa - handle all occurences of tileWidth and tileHeight using spritetypebase::picnum. 2022-12-11 19:44:01 +01:00
Christoph Oelckers
1258ddc551 - cleaned out tileHeight calls in SW's panel.cpp.
Direct access to tile numbers has been significantly reduced.
2022-12-11 19:44:01 +01:00
Christoph Oelckers
f479f995a1 - transitioned all tileLeftOffset and tileTopOffset calls to use the texture manager. 2022-12-11 19:44:01 +01:00
Christoph Oelckers
afa821c2fd - removed redundant voxel/model code in Blood's animatesprites.
This just duplicated the generic handling in the renderer so it is not needed.
2022-12-11 19:44:01 +01:00
Christoph Oelckers
0869497ecb - rewrote the tile pixel cache to work on texture IDs instead of tile IDs.
This allows using the related checking features with other textures as well.
2022-12-11 19:44:00 +01:00
Christoph Oelckers
8b0e86e88b - wrap a few more accesses to picnum variables 2022-12-11 19:44:00 +01:00
Christoph Oelckers
a6db974a62 - refactored Blood's tile property arrays to texture IDs.
The data structure here can be optimized later when the other games get to the same point, but this allows to rid Blood of all references to wallpicnunm, floorpicnum and ceilingpicnum except one place in the precacher.
2022-12-11 19:44:00 +01:00
Christoph Oelckers
483617d3e1 - use the texture wrappers in a few places. 2022-12-11 19:44:00 +01:00
Christoph Oelckers
ffa265ae1d - gave Blood's and SW's mirror/ROR tiles proper names. 2022-12-11 19:44:00 +01:00
Christoph Oelckers
e5225e98e0 - migrated SW's portal setup code to texture IDs. 2022-12-11 19:43:59 +01:00
Christoph Oelckers
fe3a32d692 - SW: fixed camera validation 2022-12-11 19:43:59 +01:00
Christoph Oelckers
f4bda94dad - added tileGetTextureID and tested it with Blood's mirror/portal setup code. 2022-12-11 19:43:59 +01:00
Christoph Oelckers
bfef616981 - let tileDelete create a new null texture instead of using the default one.
This is to ensure that marker textures are still unique.
2022-12-11 19:43:59 +01:00
Christoph Oelckers
49f87e6227 - got rid of gotpic.
Now everything uses the 'seen' flag in the texture which indicates that the texture was actually used for hardware rendering since the last check.
It's also only the 3 places checking this flag which are responsible for clearing it.
2022-12-11 19:43:58 +01:00
Christoph Oelckers
a0722c55ea - removed canvas hack stuff from Buildtiles after cleaning up the mess in SW. 2022-12-11 19:43:58 +01:00
Christoph Oelckers
ede5b017ab - renamed walltype::picnum to wallpicnum for easier searching. 2022-12-11 19:43:58 +01:00
Christoph Oelckers
51ad64f71e - initialize all special tiles to their intended type before starting the game.
This ensures that we have an immutable mapping of tile number to texture ID now.
2022-12-11 19:43:58 +01:00
Christoph Oelckers
6a690849e6 - cleanup on the tile management.
* removed the long defunct EDuke32-based map art system. With our move to named textures this will not work anymore so fixing the existing problems would be pointless.
* moving .def related parsing stuff out of buildtiles.cpp.
* some initial refactoring to make the tile store a static, non-modifyable resource after initial setup.
2022-12-11 19:43:58 +01:00
Christoph Oelckers
a08db47528 - exported all breakable ceilings.
Very simple stuff with instant profit. :)
2022-12-11 19:43:58 +01:00
Christoph Oelckers
a63ee8079a - implemented customizable breakable walls and ported all hard coded variants to use this. 2022-12-11 19:43:57 +01:00
Christoph Oelckers
241636a907 - removed caching of the minifont.
Since this does not get used directly anymore, caching these images is rather pointless.
2022-12-11 19:43:57 +01:00
Christoph Oelckers
0df5be7ad0 - also renamed all RR tile names. 2022-12-11 19:43:57 +01:00
Christoph Oelckers
e9b6e84d47 - renamed all tile constants for Duke to DTILE_*.
We need to be able to find them for the ongoing work
2022-12-11 19:43:57 +01:00
Christoph Oelckers
9e3318a2fb - moved spawnclasses and breakwall definitions from .def to RMAPINFO.
.def is not the right place for this - it needs to run very early in the process, before scripted actors are loaded, so doing this stuff there means that half the initialization has to be postponed and error reporting is sub-par.
These are now part of RMAPINFO which gets parsed as one of the very last things - it is also where GZDoom is doing some of these things.

The better error reporting also allowed fixing some errors in these definitions.
2022-12-11 19:43:57 +01:00
Christoph Oelckers
c1a09196f0 - implemented breakable walls with external definitions.
The scripted case does not work yet due to bad loading order of files.
2022-12-11 19:43:57 +01:00
Christoph Oelckers
8e17f1f0f5 - removed the limit of 64 on-state switches from the init code.
No other place in the engine needs this, it was just the chosen size for a local check array.
2022-12-11 19:43:56 +01:00
Mitchell Richters
2c592405fa - Separate pitch/yaw key input into separate functions and apply from the ticker. 2022-12-11 19:43:56 +01:00
Mitchell Richters
470b4efac8 - Remove PlayerAngles::setYaw() method usage and remaining associated code. 2022-12-11 19:43:56 +01:00
Mitchell Richters
f58e3c58aa - Remove PlayerAngles::setPitch() method usage. 2022-12-11 19:43:56 +01:00
Mitchell Richters
491a42d2bb - Remove PlayerAngles::addYaw() method usage. 2022-12-11 19:43:56 +01:00
Mitchell Richters
7a7758efaa - Remove PlayerAngles::addPitch() method usage. 2022-12-11 19:43:56 +01:00
Mitchell Richters
1944d04014 - Duke: Fix pitch alteration in dokneeattack(). 2022-12-11 19:43:55 +01:00
Mitchell Richters
968d0ae0d2 - Implement new scaled angle change setup and remove enforcement of synchronised input. 2022-12-11 19:43:55 +01:00
Mitchell Richters
9437ea9622 - Move input vector rotation for Duke and SW into the playsim.
* The next commit needs this to ensure the vector is rotated using the most current angle.
2022-12-11 19:43:55 +01:00
Mitchell Richters
15b101870d - Completely remove current scaled angle change setup.
* During this transition, temporarily enforce synchronised input at all times.
2022-12-11 19:43:55 +01:00
Christoph Oelckers
4078c6d6bd - converted several of RR's static init sprite types to the class system. 2022-12-11 19:43:55 +01:00
Christoph Oelckers
5b34917f62 - split the sprite animation code for CON-based actors into a separate function.
Like the shadow code this is virtually identical for Duke and RR.
2022-12-11 19:43:55 +01:00
Christoph Oelckers
0d7288c543 - moved the shadow creation code out of animatesprites into a common subfunction.
Also removing several checks for non-enemy actors for which shadows are generally not being created.
2022-12-11 19:43:55 +01:00
Christoph Oelckers
6fb263d61b - converted the two last non-CON-based active items - RRRA's empty bike and boat. 2022-12-11 19:43:54 +01:00
Christoph Oelckers
fd26f7fd2d - set some more flags. 2022-12-11 19:43:54 +01:00
Christoph Oelckers
9641d3f712 - scriptified two of RRRA's special effects. 2022-12-11 19:43:54 +01:00
Christoph Oelckers
3ee28eb600 - use tickstat for all thinker loops that have no more special cases. 2022-12-11 19:43:54 +01:00
Christoph Oelckers
6de147b77f - moved the CON execute call to DDukeActor::Tick and removed a large portion of the special handling for scriptified actors. 2022-12-11 19:43:54 +01:00
Christoph Oelckers
1cfba8e989 - cleaned up the main thinker loops, using a flag to denote actors that are not on STAT_ACTOR but need to run CON code.
This should not be automatic as it may cause problems with mods not expecting this.
2022-12-11 19:43:54 +01:00
Christoph Oelckers
23640988db - define several of RR's fullbright decorative sprites via spawnclasses remapping. 2022-12-11 19:43:53 +01:00
Christoph Oelckers
bdc474d04f - scriptified all remaining Duke actors with specific init code and no CON part. 2022-12-11 19:43:53 +01:00
Christoph Oelckers
c9628db264 - scriptified the toilet. 2022-12-11 19:43:53 +01:00
Christoph Oelckers
cbb3b0ebfb - preparations for the next script exports. 2022-12-11 19:43:53 +01:00
Christoph Oelckers
10e4c90d37 - minor cleanup. 2022-12-11 19:43:53 +01:00
Christoph Oelckers
d83e203b8d - renamed a few RR sprites plus one associated global variable. 2022-12-11 19:43:53 +01:00
Christoph Oelckers
e5ac32e329 - scriptified the remaining RR destructibles. 2022-12-11 19:43:53 +01:00
Christoph Oelckers
15bee4ca6a - scriptified the remaining Duke destructibles, except the toilets. 2022-12-11 19:43:52 +01:00
Christoph Oelckers
e6c466fcba - scriptified several of Duke's destructible items. 2022-12-11 19:43:52 +01:00
Christoph Oelckers
066c4c88b2 - scriptified the two final special stat items from RRRA. 2022-12-11 19:43:52 +01:00
Christoph Oelckers
7cbc713b4e - scriptified stat121 special effect. 2022-12-11 19:43:52 +01:00
Christoph Oelckers
dc06a93a4f - scriptified RR's UFO teleporter. 2022-12-11 19:43:52 +01:00
Christoph Oelckers
5a155730b4 - scriptified RR's bowling stuff. 2022-12-11 19:43:52 +01:00
Christoph Oelckers
9ad8f67ce9 - added isEffector inline and exported NATURALLIGHTNING which got a bit in the way. 2022-12-11 19:43:52 +01:00
Christoph Oelckers
be6ead173a - scriptified several smaller actors 2022-12-11 19:43:51 +01:00
Christoph Oelckers
0dc526899b - scriptified FrameEffect 2022-12-11 19:43:51 +01:00
Christoph Oelckers
44d4e7a20a - scriptified the mortar projectiles.
This was split off heavyhbomb for clarity and to avoid interference with the pickup code.
2022-12-11 19:43:51 +01:00
Christoph Oelckers
0bc9023e17 - scriptified the pipe bomb and RR's dynamite, which is mostly the same thing.
The mortars were split off because they made the code too convoluted.
2022-12-11 19:43:51 +01:00
Christoph Oelckers
b9caa23357 - gave proper names to ST_160 and ST_161. 2022-12-11 19:43:51 +01:00
Christoph Oelckers
ff6a9b89ac - scriptified the green slimer. 2022-12-11 19:43:51 +01:00
Christoph Oelckers
bc34746227 - scriptified transport vehicles. 2022-12-11 19:43:50 +01:00
Christoph Oelckers
f1d6e0e6bb - scriptified Duke's shooting gallery targets. 2022-12-11 19:43:50 +01:00
Christoph Oelckers
e69772637c - define Duke's skies by name. 2022-12-11 19:43:50 +01:00
Christoph Oelckers
5358b3d98c - added a new sprite flag for those types which can trigger respawn actions. 2022-12-11 19:43:50 +01:00
Christoph Oelckers
4397e65443 - cleaned up the generic destructible code and used it for several more things. 2022-12-11 19:43:50 +01:00
Christoph Oelckers
f89ccec829 - scriptified Duke's reactor. 2022-12-11 19:43:50 +01:00
Christoph Oelckers
f6fe639233 - avoid propagating owner flags where easily doable.
This particular case is done a lot better by setting a special flag.
2022-12-11 19:43:50 +01:00
Christoph Oelckers
59659bc284 - scriptified the last two RR projectiles.
These are particularly messy - they have different looks depending on the shooter...
2022-12-11 19:43:49 +01:00
Christoph Oelckers
403141807f - scriptified all simple and explosive RR projectiles. 2022-12-11 19:43:49 +01:00
Christoph Oelckers
82515e1d76 - scriptified the World Tour's flamethrower#s fireball.
Also using a better method to mark the trailing balls than checking the owner.
2022-12-11 19:43:49 +01:00
Christoph Oelckers
26d9511087 - scriptified the octabrain projectile. 2022-12-11 19:43:49 +01:00
Christoph Oelckers
6a83a72f71 - removed some leftover debug code. 2022-12-11 19:43:49 +01:00
Christoph Oelckers
f2df8a162f - scriptified Duke's spit projectile. 2022-12-11 19:43:49 +01:00
Christoph Oelckers
fcd05e38c9 - scriptified the freezer projectile. 2022-12-11 19:43:49 +01:00
Christoph Oelckers
83080beed4 - added SMALLSMOKE to the spawn list for ZScript. 2022-12-11 19:43:49 +01:00
Christoph Oelckers
f4bc5d6df8 - scriptified Duke's RPG. 2022-12-11 19:43:48 +01:00
Christoph Oelckers
c1545a1eaa - scriptified the shrink spark. 2022-12-11 19:43:48 +01:00
Christoph Oelckers
a756b71647 - scriptified the firelaser projectile.
This also fixes the animation of the RR variant, which used a bad value with '&'.
2022-12-11 19:43:48 +01:00
Christoph Oelckers
44fa420387 - added a few new flags and renamed some sprites.
All this is preparations for scriptifying the projectiles.
2022-12-11 19:43:48 +01:00
Christoph Oelckers
15fb7dab35 - virtualized the 'shoot' interface and scriptified the bloodsplats to test it.
This calls virtual functions on the actor defaults now to allow writing specific shoot functions for subclasses.
2022-12-11 19:43:48 +01:00
Christoph Oelckers
8a921c98bd - scriptified ooz. 2022-12-11 19:43:47 +01:00
Christoph Oelckers
9d1384449c - scriptified the Recon. 2022-12-11 19:43:47 +01:00
Christoph Oelckers
2ab5e63386 - added a few new actor flags. 2022-12-11 19:43:47 +01:00
Christoph Oelckers
7db953e0ea - scriptified the force sphere.
Doesn't seem to be used anywhere, though...
2022-12-11 19:43:47 +01:00
Christoph Oelckers
bbfb811e1e - simplified PicForName 2022-12-11 19:43:47 +01:00
Christoph Oelckers
6d9a8bfaa5 - scriptified the pool balls. 2022-12-11 19:43:47 +01:00
Christoph Oelckers
1ef61c8588 - exported a bunch of stuff we're going to need soon. 2022-12-11 19:43:47 +01:00
Christoph Oelckers
f138798e26 - scriptified the rat. 2022-12-11 19:43:46 +01:00
Christoph Oelckers
99413651b3 - scriptified the respawn marker. 2022-12-11 19:43:46 +01:00
Christoph Oelckers
b485d7a450 - use isPlayer function where possible. 2022-12-11 19:43:46 +01:00
Christoph Oelckers
dbb7965550 - added two new flags for later use. 2022-12-11 19:43:46 +01:00
Christoph Oelckers
f43dc9d925 - Duke: fixed Jibs animation and scale. 2022-12-11 19:43:46 +01:00
Christoph Oelckers
a6a4e628df - scriptified RRRA's gambling machines.
These were fallout from the generic destructibles because the code to destroy them was removed along with that.
2022-12-11 19:43:46 +01:00
Christoph Oelckers
1d52963d4b - converted all simple destructible sprites.
Ironically the first item I used for testing needed a dedicated class, so here's that, too...
2022-12-11 19:43:46 +01:00
Christoph Oelckers
9e29c3970d - generic destructibles 2022-12-11 19:43:45 +01:00
Christoph Oelckers
786c335489 - added SFLAG2_NORADIUSPUSH flag. 2022-12-11 18:46:40 +01:00
Christoph Oelckers
93ef4b34d7 - scriptified the guts spawning function. 2022-12-11 18:46:40 +01:00
Christoph Oelckers
f39eaba109 - backported sound volume fix from NBlood. 2022-12-11 18:46:40 +01:00
Christoph Oelckers
3ac8bd02f5 - scriptified the jibs 2022-12-11 18:46:40 +01:00
Christoph Oelckers
1b3f551216 - use a flag for outer space textures. 2022-12-11 18:42:02 +01:00
Christoph Oelckers
c7cdf96a62 - exported two more settings to tile flags. 2022-12-11 18:42:02 +01:00
Christoph Oelckers
67e807de26 - exported the tile flag setters to .def. 2022-12-11 18:42:01 +01:00
Christoph Oelckers
5a2819239c - moved Duke's tile flags into the tile manager.
This is so that .def can access them. Later the other games also might make use of this.
2022-12-11 18:42:01 +01:00
Mitchell Richters
bb1113c251 - Remove the whole angle locking concept, we can just force synchronised input instead which is cleaner. 2022-12-11 18:42:01 +01:00
Mitchell Richters
6c0493868e - Implement new method for applying scaled angle changes.
* This method works more accurately to how an angle change would occur under interpolated circumstances.
2022-12-11 18:42:01 +01:00
Mitchell Richters
5a8612110d - Process scaled angle adjustments in each game's render function, not from the input function.
* Previous config had the potential to call `I_GetInputFrac()` nearly twice in a row, which would have resulted in some hitching.
* Calling from each game's render function avoids the above and means we can start applying scaled angle changes one frame faster.
2022-12-11 18:42:01 +01:00
Mitchell Richters
2a284c73c9 - SW: Remove all remaining angle wrapper usage and the wrappers themselves. 2022-12-11 18:42:00 +01:00
Mitchell Richters
58c1efb8de - Exhumed: Remove all remaining angle wrapper usage. 2022-12-11 18:42:00 +01:00
Mitchell Richters
dfb55c39ca - Duke: Remove all remaining angle wrapper usage. 2022-12-11 18:42:00 +01:00
Mitchell Richters
d3bc2f39a4 - Blood: Remove all remaining angle wrapper usage. 2022-12-11 18:42:00 +01:00
Mitchell Richters
1aad5eacfa - Remove all remaining legacy wrappers. 2022-12-11 18:42:00 +01:00
Mitchell Richters
a7a5d4b946 - Preserve one legacy getter that's needed extensively in Duke. 2022-12-11 18:42:00 +01:00
Mitchell Richters
cca36b8061 - Make legacy weapon drawers in PlayerAngles local to Redneck code, they will eventually go. 2022-12-11 18:42:00 +01:00
Mitchell Richters
e972818db5 - Tidy up modern crosshair/weapon offset drawers. 2022-12-11 18:41:59 +01:00
Mitchell Richters
25de63ffb5 - Cleanup of render draw code to use new angle getter. 2022-12-11 18:41:59 +01:00
Mitchell Richters
599a375d67 - Rename DCoreActor::interpolatedangle() to DCoreActor::interpolatedyaw() 2022-12-11 18:41:59 +01:00
Mitchell Richters
abdeeac205 - Rework PlayerAngles::doViewPitch() to apply at ticrate like PlayerAngles::doViewYaw(). 2022-12-11 18:41:59 +01:00
Mitchell Richters
f9aeee5b4a - Split out view angle stuff out of PlayerAngles::applyYaw() into PlayerAngles::doViewYaw().
* Do all the view angle stuff as interpolated changes in the playsim as well, there's no need for these to be done at ticrate.
2022-12-11 18:41:59 +01:00
Mitchell Richters
d7d76d5fc4 - Move all PlayerAngles view angle properties into new DRotator objects. 2022-12-11 18:41:58 +01:00
Mitchell Richters
175b182805 - Invert rotscrnang so it rolls forward, consistent with all other angles. 2022-12-11 18:41:58 +01:00
Mitchell Richters
bef4536c1f - Remove old PlayerAngles backup/restore methods. 2022-12-11 18:41:58 +01:00
Mitchell Richters
630c10856e - Re-write PlayerAngles scaled adjustment methods. 2022-12-11 18:41:58 +01:00
Mitchell Richters
aa868232c8 - Clean up all previously annotated angle/yaw checks. 2022-12-11 18:41:58 +01:00
Mitchell Richters
01d9877c8c - Blood: Repair synchronised input interpolation issues following changes. 2022-12-11 18:41:58 +01:00
Mitchell Richters
a84e09048e - Change wrapper internals for current yaw to the actor's sprite DRotator and make sure all the games load a level. 2022-12-11 18:41:57 +01:00
Mitchell Richters
7f5b97a0b7 - Change wrapper internals for current pitch to the actor's sprite DRotator and make sure all the games load a level. 2022-12-11 18:41:57 +01:00
Mitchell Richters
850c988dfa - Wrap access to previous yaw. 2022-12-11 18:41:57 +01:00
Mitchell Richters
be466fec8d - Wrap access to current yaw. 2022-12-11 18:41:57 +01:00
Mitchell Richters
fd05d320ff - Wrap access to previous pitch. 2022-12-11 18:41:56 +01:00
Mitchell Richters
15f1d89855 - Wrap access to current pitch. 2022-12-11 18:41:56 +01:00
Mitchell Richters
60a97f781e - Add DCoreActor pointer as PlayerAngles::pActor, setting and nulling where the player's actor is set. 2022-12-11 18:41:56 +01:00
Mitchell Richters
b9f5bb71cc - Merge PlayerHorizon and PlayerAngle structs into PlayerAngles struct. 2022-12-11 18:41:56 +01:00
Mitchell Richters
d75ac9e445 - Rename PlayerAngle prototypes in preparation for replacement work. 2022-12-11 18:41:56 +01:00
Mitchell Richters
353c2a20fd - Rename remaining PlayerAngle methods. 2022-12-11 18:41:55 +01:00
Mitchell Richters
f305fbb370 - Rename PlayerAngle getters in preparation for replacement work. 2022-12-11 18:41:55 +01:00
Mitchell Richters
a061f2baef - Rename PlayerAngle::spin to its destined final name. 2022-12-11 18:41:55 +01:00
Mitchell Richters
a42750f37f - Rename PlayerAngle::orotscrnang in preparation for replacement work. 2022-12-11 18:41:55 +01:00
Mitchell Richters
7d34288290 - Rename PlayerAngle::rotscrnang in preparation for replacement work. 2022-12-11 18:41:55 +01:00
Mitchell Richters
3a0ec29c18 - Rename PlayerAngle::olook_ang in preparation for replacement work. 2022-12-11 18:41:55 +01:00
Mitchell Richters
644cf82238 - Rename PlayerAngle::look_ang in preparation for replacement work. 2022-12-11 18:41:55 +01:00
Mitchell Richters
50cf22ec53 - Rename PlayerAngle::oang in preparation for replacement work. 2022-12-11 18:41:55 +01:00
Mitchell Richters
bd063de5f5 - Rename PlayerAngle::ang in preparation for replacement work. 2022-12-11 18:41:54 +01:00
Mitchell Richters
d810afa2e9 - Rename PlayerHorizon prototypes in preparation for replacement work. 2022-12-11 18:41:54 +01:00
Mitchell Richters
9ab8db04db - Rename remaining PlayerHorizon methods. 2022-12-11 18:41:54 +01:00
Mitchell Richters
3758d93ad8 - Rename PlayerHorizon getters in preparation for replacement work. 2022-12-11 18:41:54 +01:00
Mitchell Richters
723631cc81 - Rename PlayerHorizon::ohorizoff in preparation for replacement work. 2022-12-11 18:41:54 +01:00
Mitchell Richters
216fad7e18 - Rename PlayerHorizon::horizoff in preparation for replacement work. 2022-12-11 18:41:53 +01:00
Mitchell Richters
0c53990c87 - Rename PlayerHorizon::ohoriz in preparation for replacement work. 2022-12-11 18:41:53 +01:00
Mitchell Richters
401a829d54 - Rename PlayerHorizon::horiz in preparation for replacement work. 2022-12-11 18:41:53 +01:00
Mitchell Richters
f027d07ae5 - Annotate all player angles that are being set as the sprite angles to review later.
* Once the angles between player and sprite have been unified, these will be much harder to identify.
2022-12-11 18:41:53 +01:00
Mitchell Richters
110cc5149d - Annotate all sprite angles that are being set as the player angle to review later.
* Once the angles between player and sprite have been unified, these will be much harder to identify.
2022-12-11 18:41:53 +01:00
Mitchell Richters
2e0b9490e1 - Change spritetypebase::angle to a DRotator named Angles.
* Major pre-requisite for the next steps I'm undertaking, let's get it into the branch now.
2022-12-11 18:41:52 +01:00
Christoph Oelckers
347d725ba0 - Duke: gave all switch animation phases proper texture names. 2022-12-11 18:41:52 +01:00
Christoph Oelckers
c60fea678d - replace the homegrown hash chain in the sound engine with a TMap. 2022-12-11 18:41:52 +01:00
Christoph Oelckers
a825dfb8ca - Duke sound is working again. 2022-12-11 18:41:52 +01:00
Christoph Oelckers
f103e33300 - fixed code up to the point where everything compiles again. Duke sounds are currently non-functional.
All Duke script code has been changed to use strings as sound names now, just like GZDoom these will be looked up at compile time.
Original Duke sound indices still exist but are now being managed as resource IDs, not sound engine indices anymore.
2022-12-11 18:41:51 +01:00
Christoph Oelckers
4983f8e671 wipstuff 2022-12-11 18:41:51 +01:00
Mitchell Richters
a5e35637ac - Duke: Remove 2x player sprite Z setters that shouldn't be necessary. 2022-12-11 18:41:51 +01:00
Mitchell Richters
4848a844af - Duke: Use getPosWithOffsetZ() in a few places. 2022-12-11 18:41:51 +01:00
Mitchell Richters
4a6e2683f2 - Duke/RR: Properly fix movement() so the player's Z always makes it back to floorz.
* The `abs(k)` here was really messing it up.
* RR's height of 40 is actually a fix of Duke's 38, which left the player slightly off the ground.
* Duke when returning from crouching, jumping, or otherwise changing the Z always correctly ends up at the floor's Z now.
2022-12-11 18:41:51 +01:00
Mitchell Richters
597b291252 - Blood: Fix gi->WarpToCoords() that messed up the Z. 2022-12-11 18:41:51 +01:00
Mitchell Richters
e991116abf - SW: Take full advantage of our floating point work for the wall blood drips. 2022-12-11 18:41:50 +01:00
Christoph Oelckers
1ac4aee0c1 - RR cactus stuff 2022-12-11 18:41:50 +01:00
Christoph Oelckers
c48dfc082f - scriptified RR's lumber blade. 2022-12-11 18:41:50 +01:00
Christoph Oelckers
7188956702 - minor cleanup. 2022-12-11 18:41:50 +01:00
Christoph Oelckers
76fabcd1c7 - chickenplant scriptified. 2022-12-11 18:41:50 +01:00
Mitchell Richters
397acfa242 - Blood: Migrate to new actor viewzoffset property (sort of).
* The way this game does it player Z in a distinct variable needs to be maintained as it's impossible to maintain proper Z velocities when trying to do without it.
2022-12-11 18:41:50 +01:00
Mitchell Richters
13be5f7923 - Exhumed: Migrate to new actor viewzoffset property. 2022-12-11 18:41:50 +01:00
Mitchell Richters
e3f6b5ff85 - SW: Clean up a useless test function. 2022-12-11 18:41:50 +01:00
Mitchell Richters
c43bde9b4d - SW: Remove all the player oldpos stuff.
* This only had one valid use, for a bad setup in `DoPlayerRun()` where `DoPlayerBob()` was called before `DoPlayerMove()`.
2022-12-11 18:41:49 +01:00
Mitchell Richters
703db0e3c3 - SW: Remove PLAYER::posGet(). 2022-12-11 18:41:49 +01:00
Mitchell Richters
be06582062 - SW: Remove PLAYER::posAdd(). 2022-12-11 18:41:49 +01:00
Mitchell Richters
7eba7aacbd - SW: Remove last PLAYER::posSet() calls. 2022-12-11 18:41:49 +01:00
Mitchell Richters
bf0f0345b3 - SW: Remove most PLAYER::posSet() calls. 2022-12-11 18:41:49 +01:00
Mitchell Richters
0917434888 - SW: Remove PLAYER::posXY(). 2022-12-11 18:41:49 +01:00
Mitchell Richters
ff75fa513a - SW: Remove PLAYER::posZadd(). 2022-12-11 18:41:48 +01:00
Mitchell Richters
3b961ccae9 - SW: Remove PLAYER::posZget().
- SW: Remove `PLAYER::posZget()`.
2022-12-11 18:41:48 +01:00
Mitchell Richters
fe795e6cfb - SW: Remove PLAYER::posZset() in favour of new utilities. 2022-12-11 18:41:48 +01:00
Mitchell Richters
f18512e270 - SW: Ladder fixes where centering of player was effectively occurring twice. 2022-12-11 18:41:48 +01:00
Mitchell Richters
7624f8b77d - SW: Death sequence fixes. 2022-12-11 18:41:48 +01:00
Mitchell Richters
88bace9dd7 - SW: Slightly increase the range check in DoPlayerDeathHoriz(). 2022-12-11 18:41:48 +01:00
Mitchell Richters
61086d7a8b - SW: Don't bob the actual sprite's Z since we apply it as an offset in the draw code. 2022-12-11 18:41:48 +01:00
Mitchell Richters
e6044bc0fd - SW: Repair player height issues. 2022-12-11 18:41:48 +01:00
Mitchell Richters
6d736aea19 - SW: Swap out the internals of the player's pos methods and get the game going again.
* Leave `PLAYER::PlayerOldPosition` for now.
2022-12-11 18:41:47 +01:00
Mitchell Richters
c14d1587f0 - SW: Move PLAYER struct underneath include for swactor.h.
* Needed by the next commit since the forward declaration isn't working.
2022-12-11 18:41:47 +01:00
Mitchell Richters
97a07cd83c - SW: Wrap remaining calls to PLAYER::PlayerOldPosition. 2022-12-11 18:41:47 +01:00
Mitchell Richters
9ab5fd0801 - SW: Wrap calls to PLAYER::PlayerOldPosition.XY(). 2022-12-11 18:41:47 +01:00
Mitchell Richters
f711355f2f - SW: Wrap calls that get PLAYER::PlayerPrevPosition. 2022-12-11 18:41:47 +01:00
Mitchell Richters
ad7a626b92 - SW: Wrap calls that set PLAYER::PlayerPrevPosition. 2022-12-11 18:41:47 +01:00
Mitchell Richters
2d351b2c28 - SW: Wrap calls that set PLAYER::PlayerPrevPosition.Z. 2022-12-11 18:41:47 +01:00
Mitchell Richters
bf833fcfa3 - SW: Wrap calls to PLAYER::PlayerPrevPosition.XY(). 2022-12-11 18:41:47 +01:00
Mitchell Richters
82e0e25b7e - SW: Manual fixes to last commit I wanted to keep separate. 2022-12-11 18:41:46 +01:00
Mitchell Richters
a54d0f7639 - SW: Wrap calls that get PLAYER::PlayerNowPosition. 2022-12-11 18:41:46 +01:00
Mitchell Richters
964557ab6b - SW: Wrap calls that add to PLAYER::PlayerNowPosition. 2022-12-11 18:41:46 +01:00
Mitchell Richters
11f9d82239 - SW: Wrap calls that set PLAYER::PlayerNowPosition. 2022-12-11 18:41:46 +01:00
Mitchell Richters
4bf202bee4 - SW: Wrap calls that get PLAYER::PlayerNowPosition.Z. 2022-12-11 18:41:46 +01:00
Mitchell Richters
4e0aa1add1 - SW: Wrap calls that add/subtract PLAYER::PlayerNowPosition.Z. 2022-12-11 18:41:46 +01:00
Mitchell Richters
6226d302f5 - SW: Wrap calls that set PLAYER::PlayerNowPosition.Z. 2022-12-11 18:41:46 +01:00
Mitchell Richters
7757288d33 - SW: Tidy up one vector equality test. 2022-12-11 18:41:45 +01:00
Mitchell Richters
7d0b2fba69 - SW: Wrap calls to PLAYER::PlayerNowPosition.XY(). 2022-12-11 18:41:45 +01:00
Mitchell Richters
f0074a913e - SW: Rename Player::oldpos to Player::PlayerOldPosition to make it easier to search upon. 2022-12-11 18:41:45 +01:00
Mitchell Richters
bf10d9816f - SW: Rename Player::opos to Player::PlayerPrevPosition to make it easier to search upon. 2022-12-11 18:41:45 +01:00
Mitchell Richters
cf25884675 - SW: Rename Player::pos to Player::PlayerNowPosition to make it easier to search upon. 2022-12-11 18:41:45 +01:00
Mitchell Richters
e55412f240 - Remove DCoreActor::ZeroVelocity(). 2022-12-11 18:41:45 +01:00
Mitchell Richters
39d1a758ed - Remove DCoreActor::ZeroVelocityXY(). 2022-12-11 18:41:44 +01:00
Mitchell Richters
4de1b8ad86 - Create DCoreActor::getRenderPos() and use within Duke. 2022-12-11 18:41:44 +01:00
Mitchell Richters
d1c5f9516f - Duke: Remove player_struct::posoldAdd() and player_struct::posoldGet(). 2022-12-11 18:41:44 +01:00
Mitchell Richters
f10f1b9154 - Duke: Remove player_struct::posoldZset() and player_struct::posoldZget(). 2022-12-11 18:41:44 +01:00
Mitchell Richters
66a08a26e8 - Duke: Remove player_struct::posoldX(), player_struct::posoldY(), and player_struct::posoldXY(). 2022-12-11 18:41:44 +01:00
Mitchell Richters
4551274e7d - Duke: Remove player_struct::posSet(). 2022-12-11 18:41:44 +01:00
Mitchell Richters
a1e68f88a5 - Duke: Remove player_struct::posAdd(). 2022-12-11 18:41:44 +01:00
Mitchell Richters
27be72c7ec - Duke: Remove player_struct::posGet(). 2022-12-11 18:41:43 +01:00
Mitchell Richters
b42672dcf9 - Duke: Remove player_struct::posZget(). 2022-12-11 18:41:43 +01:00
Mitchell Richters
bd8a6dd956 - Duke: Remove player_struct::posZadd(). 2022-12-11 18:41:43 +01:00
Mitchell Richters
78b04649f1 - Duke: Remove player_struct::posZset(). 2022-12-11 18:41:43 +01:00
Mitchell Richters
92dd6c9795 - Duke: Remove player_struct::posXY(). 2022-12-11 18:41:43 +01:00
Mitchell Richters
6f102e1171 - Duke: Remove player_struct::posX() and player_struct::posY(). 2022-12-11 18:41:43 +01:00
Mitchell Richters
b1bd59db41 - Duke: Clean up all player position calls referencing gs.playerheight that don't need it when using the sprite height. 2022-12-11 18:41:42 +01:00
Mitchell Richters
29f2212d8f - Duke: Remove player_struct::backupz() in lieu of actor variant. 2022-12-11 18:41:42 +01:00
Mitchell Richters
a8c923f05c - Duke: Remove player_struct::backupxy() in lieu of actor variant. 2022-12-11 18:41:42 +01:00
Mitchell Richters
6eeedbd38a - Duke: Move player_struct::restorexyz() to DCoreActor::restorepos(). 2022-12-11 18:41:42 +01:00
Mitchell Richters
a78d976352 - Duke: Remove player_struct::backupxyz() in lieu of actor variant. 2022-12-11 18:41:42 +01:00
Mitchell Richters
4e4e457cfe - Duke: Fix doanimations() following position change to sprite. 2022-12-11 18:41:42 +01:00
Mitchell Richters
6d1370dcab - Duke: Fix a few more sector effector after position change to sprite. 2022-12-11 18:41:42 +01:00
Mitchell Richters
4a9775fde7 - Duke: Fix SE17 elevators after change to player position internals. 2022-12-11 18:41:41 +01:00
Christoph Oelckers
bfa7fddcea - always set the sound listener position to something valid.
Otherwise OpenAL throws lots of warning messages.
2022-12-11 18:41:41 +01:00
Mitchell Richters
dd5834444e - Duke: Swap out the internals of the player's pos methods and get the game going again. 2022-12-11 18:41:41 +01:00
Mitchell Richters
202137ed69 - Duke: Fix interpolation issues with player's XY coordinates while drawing using the sprite. 2022-12-11 18:41:41 +01:00
Mitchell Richters
9972c65842 - Duke: Back up all sprites as soon as possible.
* The player's input is processed before the sprites were backed up, causing interpolation issues with the player's Z.
2022-12-11 18:41:41 +01:00
Mitchell Richters
abd6275f17 - Add new double DCoreActor::viewzoffset set in spawning code during level loads.
* Interpolated backup copy isn't needed for Duke, but will be for SW.
2022-12-11 18:41:41 +01:00
Mitchell Richters
b0c95f69c5 - Duke: Wrap calls that get player_struct::PlayerOldPosition. 2022-12-11 18:41:41 +01:00
Mitchell Richters
1962d85f99 - Duke: Wrap calls that subtract from player_struct::PlayerOldPosition. 2022-12-11 18:41:40 +01:00
Mitchell Richters
fffc1915a9 - Duke: Wrap calls that add to player_struct::PlayerOldPosition. 2022-12-11 18:41:40 +01:00
Mitchell Richters
e4dd69f5b0 - Duke: Wrap calls that get player_struct::PlayerOldPosition.Z. 2022-12-11 18:41:40 +01:00
Mitchell Richters
830480b8b9 - Duke: Wrap calls that set player_struct::PlayerOldPosition.Z. 2022-12-11 18:41:40 +01:00
Mitchell Richters
4027f7256d - Duke: Wrap calls to player_struct::PlayerOldPosition.Y. 2022-12-11 18:41:40 +01:00
Mitchell Richters
823c5a7a47 - Duke: Wrap calls to player_struct::PlayerOldPosition.X. 2022-12-11 18:41:40 +01:00
Mitchell Richters
fa16d5d344 - Duke: Wrap calls to player_struct::PlayerOldPosition.XY(). 2022-12-11 18:41:40 +01:00
Mitchell Richters
a3b1ab10fe - Duke: Wrap calls that get player_struct::PlayerNowPosition. 2022-12-11 18:41:39 +01:00
Mitchell Richters
e9dcffc5ec - Duke: Route all clipmove()/pushmove() calls through a new interface that accepts a separated Z coordinate. 2022-12-11 18:41:39 +01:00
Mitchell Richters
a6a4cefa6c - Duke: Wrap calls that add to player_struct::PlayerNowPosition.
* The only adds were from DVector2 objects.
2022-12-11 18:41:39 +01:00
Mitchell Richters
58381c6eca - Duke: Wrap calls that set player_struct::PlayerNowPosition. 2022-12-11 18:41:39 +01:00
Mitchell Richters
25e6c4ecf8 - Duke: Wrap calls that get player_struct::PlayerNowPosition.Z. 2022-12-11 18:41:39 +01:00
Mitchell Richters
adc78c81c6 - Duke: Wrap calls that subtract from player_struct::PlayerNowPosition.Z. 2022-12-11 18:41:39 +01:00
Mitchell Richters
44166ae9e6 - Duke: Wrap calls that add to player_struct::PlayerNowPosition.Z. 2022-12-11 18:41:39 +01:00
Mitchell Richters
93189037c3 - Duke: Wrap calls that set player_struct::PlayerNowPosition.Z. 2022-12-11 18:41:38 +01:00
Mitchell Richters
008c05710b - Duke: Wrap calls to player_struct::PlayerNowPosition.Y. 2022-12-11 18:41:38 +01:00
Mitchell Richters
3a07c05af7 - Duke: Wrap calls to player_struct::PlayerNowPosition.X. 2022-12-11 18:41:38 +01:00
Mitchell Richters
5d3878eb55 - Duke: Wrap calls to player_struct::PlayerNowPosition.XY(). 2022-12-11 18:41:38 +01:00
Mitchell Richters
4b7d2fcfcc - Duke: Rename player's opos to something identifiable. 2022-12-11 18:41:38 +01:00
Mitchell Richters
4aa63b5446 - Duke: Rename player's pos to something identifiable. 2022-12-11 18:41:38 +01:00
Mitchell Richters
17914db418 - SW: Utilise new weapon drawing offsets from the backend. 2022-12-11 18:41:38 +01:00
Mitchell Richters
f524abdf47 - Blood: Utilise new weapon drawing offsets from the backend. 2022-12-11 18:41:37 +01:00
Kevin Caccamo
b1c0614d93 Attempt to fix #647
I'm guessing the `nWalls < -1` is a typo, and it should have been `nWalls <= -1` all along. I decided to write `nWalls < 0` instead.

I don't know if I broke anything with this commit, but hopefully everything else still works as intended.
2022-12-11 16:26:25 +01:00
Mitchell Richters
64e53ffc7e Revert "- Duke: Invert the horizon offset in displayweapon_d() as it makes more sense."
This reverts commit 2d2f628b95.

This made sense for things such as cracking knuckles on idle as if you're looking up, the Y should drop down, however the setup of other areas such as `animateknee()` depend on the pitch being inverted like this.
2022-12-11 20:01:41 +11:00
Christoph Oelckers
7d82ae28f4 - Duke/RR: fixed: animates array must be cleared on map change.
There was also some undefined behavior when an entry was deleted, this seems to originate from the original code.
2022-12-10 10:20:01 +01:00
Christoph Oelckers
1061e3e2ca - backend update from GZDoom. 2022-12-04 16:51:44 +01:00
Christoph Oelckers
4666c4a4b5 - RR: initialize the bowling lane displays after loading a savegame. 2022-12-02 15:45:19 +01:00
Christoph Oelckers
a0c7be9138 - try to address some occasional crash with chickens on the bowling lane.
Since this frequently swaps out some actors, it may be advisable to delay destruction by one frame to avoid actor chain consistency issues by writing into the just destroyed object.
2022-12-02 12:46:11 +01:00
Mitchell Richters
a580e9d884 - Duke: Increase the precision of the angle in handle_se00(). 2022-12-01 08:56:12 +01:00
Christoph Oelckers
f30abffa82 - uncommented line in savegame code that was disabled for testing and missed afterward. 2022-12-01 08:48:28 +01:00
Mitchell Richters
2d2f628b95 - Duke: Invert the horizon offset in displayweapon_d() as it makes more sense. 2022-11-30 10:03:58 +01:00
Mitchell Richters
a5e6e80c24 - Duke: Fix RPG from excess recoiling. 2022-11-30 10:03:58 +01:00
Mitchell Richters
3233a25e3a - Duke: Move WW2GI pistol aplWeapon*() calls to the stored ones. 2022-11-30 10:03:58 +01:00
Mitchell Richters
73705801e4 - Duke: Move 3x WW2GI aplWeaponTotalTime() calls to the stored one. 2022-11-30 10:03:57 +01:00
Mitchell Richters
7a3e4de913 - Duke: Move WW2GI handbomb aplWeapon*() calls to the stored ones. 2022-11-30 10:03:57 +01:00
Mitchell Richters
c48e95a710 - Duke: Store some repeated aplWeapon*() calls. 2022-11-30 10:03:57 +01:00
Mitchell Richters
59bafd6a37 - Duke: Clean up the addition/subtractions to the offsets vector in displayweapon_d(). 2022-11-30 10:03:57 +01:00
Mitchell Richters
33af8130b1 - Duke: General tidy-up of displayweapon_d(). 2022-11-30 10:03:57 +01:00
Mitchell Richters
4298f5011f - Duke: Clean up interface to animateknee(). 2022-11-30 10:03:57 +01:00
Mitchell Richters
436ed0288b - Duke: Clean up interface to animateaccess(). 2022-11-30 10:03:56 +01:00
Mitchell Richters
21df86d570 - Duke: Clean up interface to animatetip(). 2022-11-30 10:03:56 +01:00
Mitchell Richters
92a063b078 - Duke: Clean up interface to animateknuckles(). 2022-11-30 10:03:56 +01:00
Mitchell Richters
715ed3f279 - Duke: Clean up interface to animatefist(). 2022-11-30 10:03:56 +01:00
Mitchell Richters
81c3afcda0 - Duke: Move displayflamethrower() lambda to new weapon offsets. 2022-11-30 10:03:56 +01:00
Mitchell Richters
14ecd639dc - Duke: Move displayshrinker() lambda to new weapon offsets. 2022-11-30 10:03:56 +01:00
Mitchell Richters
ec3ccc18a5 - Duke: Move displaygrower_ww() lambda to new weapon offsets. 2022-11-30 10:03:56 +01:00
Mitchell Richters
68291bb595 - Duke: Move displayshrinker_ww() lambda to new weapon offsets. 2022-11-30 10:03:55 +01:00
Mitchell Richters
4d3f5fe3a0 - Duke: Move displayfreezer() lambda to new weapon offsets. 2022-11-30 10:03:55 +01:00
Mitchell Richters
99d7b763e4 - Duke: Move displaydevastator() lambda to new weapon offsets. 2022-11-30 10:03:55 +01:00
Mitchell Richters
6f6b52ee5d - Duke: Move displaydevastator_ww() lambda to new weapon offsets. 2022-11-30 10:03:55 +01:00
Mitchell Richters
624e28bf55 - Duke: Move displayhandremote() lambda to new weapon offsets. 2022-11-30 10:03:54 +01:00
Mitchell Richters
c126619d6d - Duke: Move displayhandbomb() lambda to new weapon offsets. 2022-11-30 10:03:54 +01:00
Mitchell Richters
e33ce4b7ac - Duke: Move displaychaingun() lambda to new weapon offsets. 2022-11-30 10:03:54 +01:00
Mitchell Richters
c7274ff5fb - Duke: Move displaychaingun_ww() lambda to new weapon offsets. 2022-11-30 10:03:54 +01:00
Mitchell Richters
35a26a1cb5 - Duke: Move displayshotgun() lambda to new weapon offsets. 2022-11-30 10:03:54 +01:00
Mitchell Richters
2c770706b8 - Duke: Move displayshotgun_ww() lambda to new weapon offsets. 2022-11-30 10:03:53 +01:00
Mitchell Richters
5935f860e4 - Duke: Bring displayrpg() lambda inline with standard look offsets since we're using widescreen assets now. 2022-11-30 10:03:53 +01:00
Mitchell Richters
7b3f8b0caf - Duke: Move displayrpg() lambda to new weapon offsets. 2022-11-30 10:03:53 +01:00
Mitchell Richters
71f5b7d9df - Duke: Move displaytripbomb() lambda to new weapon offsets. 2022-11-30 10:03:53 +01:00
Mitchell Richters
bd6e1d4f89 - Duke: Move displayknee() lambda to new weapon offsets. 2022-11-30 10:03:53 +01:00
Mitchell Richters
a6cfdea480 - Improved weapon drawing, based on the new crosshair drawing offset code, starting with Duke's pistol. 2022-11-30 10:03:52 +01:00
Mitchell Richters
ef52694365 - Improved crosshair drawing that factor's in look_ang better I've had stashed away for a little bit. 2022-11-30 10:03:52 +01:00
Mitchell Richters
a012fd8f94 - SW: Pitch-adjusted velocity for SpawnShell(). 2022-11-30 10:03:52 +01:00
Mitchell Richters
84dbd935d7 - SW: Pitch-adjusted velocity for PlayerInitCaltrops(). 2022-11-30 10:03:52 +01:00
Mitchell Richters
b6665a9855 - SW: Pitch-adjusted velocity for PlayerInitChemBomb(). 2022-11-30 10:03:52 +01:00
Mitchell Richters
8193416e7e - SW: Pitch-adjusted velocity for InitFireball(). 2022-11-30 10:03:52 +01:00
Mitchell Richters
c8f4e8dab2 - SW: Pitch-adjusted velocity for InitMine(). 2022-11-30 10:03:51 +01:00
Mitchell Richters
db2f9b9b13 - SW: Pitch-adjusted velocity for InitGrenade(). 2022-11-30 10:03:51 +01:00
Mitchell Richters
9d0b146470 - SW: Pitch-adjusted velocity for InitSobjMachineGun(). 2022-11-30 10:03:51 +01:00
Mitchell Richters
95a5e51283 - SW: Pitch-adjusted velocity for InitTurretLaser(). 2022-11-30 10:03:51 +01:00
Mitchell Richters
a1791acf97 - SW: Pitch-adjusted velocity for InitTurretRail(). 2022-11-30 10:03:50 +01:00
Mitchell Richters
01e326df9d - SW: Pitch-adjusted velocity for InitTurretFireball(). 2022-11-30 10:03:50 +01:00
Mitchell Richters
462576bc51 - SW: Pitch-adjusted velocity for InitTurretRocket(). 2022-11-30 10:03:50 +01:00
Mitchell Richters
9299e5f813 - SW: Pitch-adjusted velocity for InitTurretMicro(). 2022-11-30 10:03:50 +01:00
Mitchell Richters
86a7f7ca2c - SW: Pitch-adjusted velocity for InitTankShell(). 2022-11-30 10:03:49 +01:00
Mitchell Richters
b99dac1e56 - SW: Pitch-adjusted velocity for InitUzi(). 2022-11-30 10:03:49 +01:00
Mitchell Richters
319c1533b3 - SW: Pitch-adjusted velocity for InitTracerTurret(). 2022-11-30 10:03:49 +01:00
Mitchell Richters
25e0b9a073 - SW: Pitch-adjusted velocity for InitTracerUzi(). 2022-11-30 10:03:49 +01:00
Mitchell Richters
7ae21a27cc - SW: Pitch-adjusted velocity for InitMicro(). 2022-11-30 10:03:48 +01:00
Mitchell Richters
7658d8772d - SW: Pitch-adjusted velocity for InitNuke(). 2022-11-30 10:03:48 +01:00
Mitchell Richters
393553780b - SW: Pitch-adjusted velocity for InitBunnyRocket(). 2022-11-30 10:03:48 +01:00
Mitchell Richters
26460bc6aa - SW: Pitch-adjusted velocity for InitRocket(). 2022-11-30 10:03:48 +01:00
Mitchell Richters
8da5b096c0 - SW: Pitch-adjusted velocity for InitRail(). 2022-11-30 10:03:47 +01:00
Mitchell Richters
283f8d208a - SW: Pitch-adjusted velocity for InitLaser(). 2022-11-30 10:03:47 +01:00
Mitchell Richters
51c0fbcca1 - SW: Pitch-adjusted velocity for InitShotgun(). 2022-11-30 10:03:47 +01:00
Mitchell Richters
3fd397e384 - SW: Pitch-adjusted velocity for InitHeartAttack(). 2022-11-30 10:03:47 +01:00
Mitchell Richters
a27e5a0ed2 - SW: Pitch-adjusted velocity for InitStar(). 2022-11-30 10:03:47 +01:00
Mitchell Richters
bcf09c3037 - SW: Pitch-adjusted velocity for InitFistAttack(). 2022-11-30 10:03:46 +01:00
Mitchell Richters
2577ea21f2 - SW: Pitch-adjusted velocity for InitSwordAttack(). 2022-11-30 10:03:46 +01:00
Mitchell Richters
2b4149b70e - SW: Pitch-adjusted velocity for InitSpellMirv(). 2022-11-30 10:03:46 +01:00
Mitchell Richters
b7a1e699f6 - SW: Pitch-adjusted velocity for InitSpellNapalm(). 2022-11-30 10:03:46 +01:00
Christoph Oelckers
1d39e1edc1 - fixed bouncing of freezer's projectile. 2022-11-30 09:57:27 +01:00
Mitchell Richters
098542de69 - Duke: Call movetransports() before processing any player movement.
* This simply works much better. In addition to being able to revert commits like `- Duke: Maintain x/y/z velocity when falling through a portal, such as E1L1's air duct.`, transitioning from above water to underwater and vice-versa is interpolated, smooth and seamless, something that I was unable to hack in without this change.
2022-11-30 09:53:51 +01:00
Mitchell Richters
641b22addf Revert "- Duke: Maintain x/y/z velocity when falling through a portal, such as E1L1's air duct."
This reverts commit 1cb57a813948a494197e7df67dd6f58ae987b7db.
2022-11-30 09:53:51 +01:00
Mitchell Richters
ec16fd9310 - Duke: Soften the blood splats in Duke when the timer is at the end. 2022-11-29 21:08:49 +11:00
Mitchell Richters
537e9df6ec - Duke: Repair Z height when dead. 2022-11-29 20:59:35 +11:00
Christoph Oelckers
c9a94a4899 - fixed bad angle use in move_d. 2022-11-27 11:56:27 +01:00
Christoph Oelckers
ec48b91730 - fixed the last remaining z/inttoworld mismatches.
The one in clipmove was critical, the other ones not so much.
2022-11-27 10:21:47 +01:00
Christoph Oelckers
dc60c643c9 - Duke: added an ammo check to the chaingun firing loop
With weapon switching disabled it would not stop firing.
2022-11-26 17:59:22 +01:00
Christoph Oelckers
0e1121ed51 - reinstated original distance math for SE20.
This one's a catastrophic combination of a bad algorithm depending on equally bad math to calculate distance.
It simply does not do what one would expect - it should have calculated the distance to a wall's center to be robust.
2022-11-26 15:58:55 +01:00
Christoph Oelckers
4aad87cf83 - fixed Exhumed sound indices. 2022-11-25 11:26:24 +01:00
Christoph Oelckers
d43ebd22ae - fixed merge errors from backend update. 2022-11-24 18:05:47 +01:00
Christoph Oelckers
ed4f49ac86 - fixed sound code for backend update. 2022-11-24 17:46:39 +01:00
Mitchell Richters
f1bfaac301 - Duke: Minor fixes to some angle checks. 2022-11-24 23:08:28 +11:00
Mitchell Richters
4f59e8a3d1 - Duke: Fix delta angle setup in alterang(). 2022-11-24 22:03:47 +11:00
Mitchell Richters
fb74ece44b - Duke/RR: Fix up 2x missed Z changes. 2022-11-24 19:41:58 +11:00
Christoph Oelckers
4d6920e80b - fixed failiure to initialize the ambient tags array.
Also adding range checks to all places where it gets used. This is from CON code so proper values are never guaranteed.
2022-11-24 09:01:44 +01:00
Christoph Oelckers
13e19bad36 - fixed handling of bad class assignment to map picnums. 2022-11-24 08:12:18 +01:00
Christoph Oelckers
6cb3e2f457 - Duke: fixed operator precedence in scrap spawning code. 2022-11-21 10:48:47 +01:00
Christoph Oelckers
ae37461feb - one more stat constant. 2022-11-21 10:24:42 +01:00
Christoph Oelckers
29c4c77e55 - fixed bad StopSound implementation. 2022-11-21 09:25:46 +01:00
Mitchell Richters
fd8ac602f0 - Duke: Fix a few missed names from the last commit. 2022-11-21 13:22:25 +11:00
Christoph Oelckers
49055f1bfd - named a few more of RR's items. 2022-11-20 21:39:56 +01:00
Christoph Oelckers
1e421af8bc - renamed one more sprite.
Unused, non-functional, but it got some text on the actual sprite, which was used for naming it.
2022-11-20 21:29:39 +01:00
Christoph Oelckers
476dd138c9 - renamed several of RR's sprites, mostly related to the chicken processing plant. 2022-11-20 21:22:04 +01:00
Christoph Oelckers
a76d166966 - scriptified tongue actor.
This seems to be develpment garbage. No proper sprites exist for this.
2022-11-20 20:40:46 +01:00
Christoph Oelckers
5528725985 - got rid of deletesprite, plus one new flag. 2022-11-20 19:25:23 +01:00
Christoph Oelckers
65a5e5e29a - unlimized two map resources - cyclers and ambient tags. 2022-11-20 14:13:11 +01:00
Christoph Oelckers
b069904be1 - scriptified the remaining controller sprites. 2022-11-20 13:57:51 +01:00
Christoph Oelckers
cb005062cd - scriptified activators and locators. 2022-11-20 12:43:24 +01:00
Christoph Oelckers
9fa2fb75cf - scriptified the respawn controller.
This also handles one special RRRA controller which was just easier to scriptify right away than temporarily work around it.
2022-11-20 11:58:19 +01:00
Christoph Oelckers
31b1898c30 - deleted movecanwithsomething native function.
This was already scriptified.
2022-11-20 08:52:58 +01:00
Christoph Oelckers
d44b637f1b - fixed touchplate initialization
This was still using older code - the current native version was also not removed from the spawn function.
2022-11-20 08:51:09 +01:00
Christoph Oelckers
f515939fde - scriptified the sound controller. 2022-11-20 08:46:49 +01:00
Christoph Oelckers
714a2ef70e - scriptified canwithsomething, the last internal STAT_STANDABLE item. 2022-11-19 19:01:17 +01:00
Christoph Oelckers
c6b3cf3e0a - Duke: fixed long standing problem that pressing Escape or walking backwards does not switch off the camera view. 2022-11-19 18:26:17 +01:00
Christoph Oelckers
dee33ba4dd - scriptified viewscreen and camera. 2022-11-19 17:35:04 +01:00
Christoph Oelckers
046ba1ae0c - scriptified touchplate 2022-11-19 15:40:35 +01:00
Christoph Oelckers
63a8c3148c - scriptified doorshock 2022-11-19 15:40:21 +01:00
Christoph Oelckers
15cd80cad3 - scriptified the waterdrip 2022-11-19 15:40:09 +01:00
Christoph Oelckers
11acb92553 - scriptified the bolts. 2022-11-19 12:54:50 +01:00
Christoph Oelckers
676ca73983 - scriptified the trash actor. 2022-11-19 12:54:15 +01:00
Christoph Oelckers
9cf6f5dabc - fixed handling of actor defaults.
Order of application with map sprites was not correct.
This also simplifies how the defaults are stored - the separate data is gone, they now use the regular defaults.
2022-11-19 11:24:47 +01:00
Christoph Oelckers
5ae7011e41 - converted the masterswitch. 2022-11-19 11:24:39 +01:00
Christoph Oelckers
b106fb693a - scriptified OozFilter + Seenine
Also fixing the default handling for onHit.
2022-11-17 21:46:24 +01:00
Christoph Oelckers
26ba1f601e - scriptified the fire extinguisher. 2022-11-17 20:19:22 +01:00
Christoph Oelckers
f9826241ef - scriptied the cracks. 2022-11-17 20:18:46 +01:00
Christoph Oelckers
8ce358fc24 - scriptified the trip bombs. 2022-11-17 18:38:25 +01:00
Christoph Oelckers
c69e86d119 - Blood: unlimited the tracking conditions. 2022-11-16 11:55:41 +01:00
Christoph Oelckers
ef54579104 - Blood: updated nnexts with the parts not related to the condition rewrite. 2022-11-16 11:14:31 +01:00
Christoph Oelckers
e776e76ebf - Blood: applied all changes outside of nnexts.cpp from the latest modern update. 2022-11-16 07:53:21 +01:00
Christoph Oelckers
42e02d2956 - eliminated firstWall as well. 2022-11-15 15:44:33 +01:00
Christoph Oelckers
5798fa067f - cleaned up all -> accesses through firstWall(). 2022-11-15 15:33:35 +01:00
Christoph Oelckers
af60408e63 - sector wall access cleanup.
lastWall was only used twice and firstWall() + index can be done better now.
2022-11-15 15:31:52 +01:00
Christoph Oelckers
7d9a4ea70d - eliminated wallsofsector. 2022-11-15 15:24:17 +01:00
Christoph Oelckers
84b17a8a53 - eliminate wall_count. 2022-11-15 14:59:28 +01:00
Christoph Oelckers
bfae5ce1bc - use a TArrayView to store the wall references in a sector.
This is a lot more scripting friendly than hacking around the indices.
2022-11-15 14:53:39 +01:00
Christoph Oelckers
34333302f9 - wrapped all reading wallptr references. 2022-11-15 12:37:14 +01:00
Christoph Oelckers
c23db8ea35 - wrapped all reads of sectortype::wallnum and renamed all other wallnum variables. 2022-11-15 12:21:21 +01:00
Christoph Oelckers
b7a7584059 - renamed wallnum and sectnum functions.
These were creating a lot of search noise because local variables had the same name.
2022-11-15 12:03:44 +01:00
Christoph Oelckers
a2683559ce - refactored Duke's cactus. 2022-11-15 10:44:06 +01:00
Christoph Oelckers
ad7cf290d2 - restricted use of gs.firstdebris to the only place where it is really needed.
Also no script export for this, it is only needed for converting CON parameters to propr indices.
2022-11-15 08:28:05 +01:00
Christoph Oelckers
d253468b22 - scriptified the scraps.
A Duke-ish mess of epic proportions.
2022-11-15 00:06:21 +01:00
Christoph Oelckers
94a13118b3 - handle nofloorpal for CallAnimate overrides. 2022-11-15 00:06:21 +01:00
Christoph Oelckers
c94d2fb3d0 - made DDukeActor::movflag unsigned.
Due to the values it holds it cannot be a signed short as this would wrap around to something negative.
2022-11-14 19:25:28 +01:00
Christoph Oelckers
e867c4603f - Duke: fixed issues with CON-based movement.
Bad integer divisions and one incorrect check for X instead of Z.
2022-11-14 18:48:31 +01:00
Christoph Oelckers
5fea500f92 - flammable actors scriptified. 2022-11-14 16:31:45 +01:00
Christoph Oelckers
190fd1827e - scriptified Dukes water fountain.
That's this thingy in the first corridor of E2L1.
2022-11-14 12:10:13 +01:00
Christoph Oelckers
306db376d9 - added script exports for 'spawn' and 'lotsofglass' and made the spawn variant using class names operational. 2022-11-14 10:30:59 +01:00
Christoph Oelckers
317968c45a - exported DukeGameInfo.
Only the parts that can be considered stable.
2022-11-14 10:25:17 +01:00
Christoph Oelckers
ced22bb0a8 - added onUse virtual to DukeActor. 2022-11-14 10:22:22 +01:00
Christoph Oelckers
36f753df8f - RR: fixed weapon switching code. 2022-11-13 19:47:10 +01:00
Christoph Oelckers
f23ddc28f0 - Duke: scriptified the crane 2022-11-13 18:55:32 +01:00
Christoph Oelckers
660c546266 - actor interface fixes. 2022-11-13 18:51:23 +01:00
Christoph Oelckers
9bf3642cb8 - named the scrap sprites. 2022-11-13 11:51:44 +01:00
Christoph Oelckers
e3aa1da175 - CallOnanimate 2022-11-13 11:50:28 +01:00
Christoph Oelckers
ba016c7c3a - added CallOnHit and named spawn. 2022-11-13 10:30:52 +01:00
Christoph Oelckers
bab750c156 - MAXCRANES is obsolete 2022-11-13 10:21:09 +01:00
Christoph Oelckers
9d1ddb72d4 - added some texture names. 2022-11-13 10:13:49 +01:00
Christoph Oelckers
48d1367a7e - added some VM exports for DukePlayer 2022-11-13 08:59:08 +01:00
Christoph Oelckers
de51b65ead - reimplemented Duke's scripted actor iterators in a more lightweight fashion.
This now works without allocating garbage collected objects.
2022-11-13 08:59:07 +01:00
Christoph Oelckers
c32a695384 - DukeActor scriptification framework. 2022-11-13 08:55:20 +01:00
Christoph Oelckers
f7a2fd29ba - Blood: fixed incorrect underwater movement speed
The 'posture == 1' case has gotten lost while consolidating the redundant code.
2022-11-12 10:19:15 +01:00
Christoph Oelckers
ac4be79e96 - implemented cl_weaponswitch for Duke. 2022-11-12 09:34:08 +01:00
Mitchell Richters
bd5d96df10 - Duke: Fix chaingunner spit velocity that was still in fixed point.
* Fixes #742.
2022-11-11 21:34:23 +11:00
Mitchell Richters
60366d298e - Duke: Use player's pitch sine rather than tangent when throwing a pipebomb while crouched.
* Maintains the feel of the weapon by having the pipebomb roll along the ground.
* Sign of sine is correct and allows for an expected throw behavior when looking up/down unlike original code.
* Prevents an infinite tangent value from messing things up.
2022-11-11 21:10:41 +11:00
Christoph Oelckers
cfb9ebf8e5 - fixed bad velocity assignment in DoLaser, causing an endless loop. 2022-11-10 10:00:44 +01:00
Christoph Oelckers
53341ee525 - Duke: lower conveyor player carry speed.
Still no match to the animation, but these games seemingly never cared.
2022-11-10 08:40:14 +01:00
Christoph Oelckers
a8585d72c7 - fixed velocity for Duke's pipe bomb and RR's dynamite when crouching.
These cases may not use the generic free aim adjustment.
2022-11-09 22:50:13 +01:00
Christoph Oelckers
e88b24bce7 - SW: fixed clipdist for brown rippers. 2022-11-09 20:16:47 +01:00
Christoph Oelckers
d2f0981091 - SW: fixed distance check in DoGet. 2022-11-09 19:03:23 +01:00
Christoph Oelckers
870801b8ac - SW: explicitly initialize sector object turn angle values.
The integer code relied on the memset to -1, but with floats that sets it to -NaN.
2022-11-09 18:35:03 +01:00
Christoph Oelckers
32a447ea54 - RR: fixed velocity of dynamite projectile. 2022-11-09 15:39:16 +01:00
Christoph Oelckers
3c7810a229 - RR: fixed movement direction when throwing a bowling ball. 2022-11-09 15:21:08 +01:00
Christoph Oelckers
5ebf2fef89 - fixed handle_st18's ceiling movement. 2022-11-07 18:16:41 +01:00
Christoph Oelckers
fd1864bb48 - fixed bad iterator setup in SpriteSetupPost 2022-11-07 13:48:01 +01:00
Christoph Oelckers
3444991e4e - fixed VSpriteBusy coordinate adjustment. 2022-11-07 10:31:10 +01:00
Mitchell Richters
d892fa10d2 - SW: Fix ladder speed with unnecessary amplification applied.
* Fixes #745.
2022-11-07 20:23:14 +11:00
Mitchell Richters
ff7e0afa6f - Use std::fma() in the interpolation code.
* From everything I've read, this more accurate, can be ~5% faster and is heavily optimised on CPUs of the last 10-12 years.
* This homegrown solution can be removed for `std::lerp()` once we go C++20.
2022-11-07 19:28:34 +11:00
Mitchell Richters
88e92a15a6 - Clean up some interpolatedvalue() calls. 2022-11-07 17:52:53 +11:00
Mitchell Richters
274899c9db - Get rid of useless lerp() function I added last night for lack of C++20.
* We already have a generic linear interpolator that _I_ added, so let's use it.
2022-11-07 17:31:17 +11:00
Mitchell Richters
043ebadbee - Remove 2x Normalized180() method calls on pitch where it's not needed.
* Pitch should always be +/- 90 degrees and never need normalization. If it's not, then this shouldn't mask an error caused elsewhere.
2022-11-07 16:53:55 +11:00
Mitchell Richters
c8114e7ed0 - Revert change to TAngle<T>'s / operator that snuck in. 2022-11-07 15:43:00 +11:00
Mitchell Richters
143f691c06 - SW: Try to fix up the camera drawing a bit.
* Slight pitch adjustment, plus factoring in that values of 0 constituted 100 under original game.
* View screens in game are not actually 1:1 AR but 1.12:1
2022-11-06 21:59:07 +11:00
Mitchell Richters
0c4ad84c2e - RR: Pitch-adjusted velocity for operateweapon() when free-aiming. 2022-11-06 21:59:06 +11:00
Mitchell Richters
9a25b1d3f5 - RR: Pitch-adjusted velocity for shootweapon() when free-aiming. 2022-11-06 21:59:06 +11:00
Mitchell Richters
b14525b47b - RR: Pitch-adjusted velocity for shootmelee() when free-aiming. 2022-11-06 21:59:06 +11:00
Mitchell Richters
24dcd26e64 - RR: Pitch-adjusted velocity for shootwhip() when free-aiming. 2022-11-06 21:59:06 +11:00
Mitchell Richters
211b2cc349 - RR: Pitch-adjusted velocity for shootrpg() when free-aiming. 2022-11-06 21:59:06 +11:00
Mitchell Richters
b9bd02299a - RR: Pitch-adjusted velocity for shootstuff() when free-aiming. 2022-11-06 21:59:06 +11:00
Mitchell Richters
7941f3cde3 - Duke: Pitch-adjusted velocity for aim(). 2022-11-06 21:59:06 +11:00
Mitchell Richters
f2674e95d3 - Duke: Pitch-adjusted velocity for operateweapon_ww() when free-aiming. 2022-11-06 21:59:06 +11:00
Mitchell Richters
3a1f1c7580 - Duke: Pitch-adjusted velocity for operateTripbomb() when free-aiming. 2022-11-06 21:59:05 +11:00
Mitchell Richters
3908ec0c42 - Duke: Pitch-adjusted velocity for operateweapon() when free-aiming. 2022-11-06 21:59:05 +11:00
Mitchell Richters
fe7c49fcac - Duke: Pitch-adjusted velocity for shootlaser() when free-aiming. 2022-11-06 21:59:05 +11:00
Mitchell Richters
9e60284ff6 - Duke: Pitch-adjusted velocity for shootlaser() when free-aiming. 2022-11-06 21:59:05 +11:00
Mitchell Richters
1b499520a5 - Duke: Pitch-adjusted velocity for shootweapon() when free-aiming. 2022-11-06 21:59:05 +11:00
Mitchell Richters
63917fd158 - Duke: Pitch-adjusted velocity for shootknee() when free-aiming. 2022-11-06 21:59:05 +11:00
Mitchell Richters
a200db6f3a - Duke: Pitch-adjusted velocity for shootstuff() when free-aiming. 2022-11-06 21:59:05 +11:00
Mitchell Richters
73477a722c - Duke: Pitch-adjusted velocity for shootshrinker() when free-aiming. 2022-11-06 21:59:04 +11:00
Mitchell Richters
9f32eae1a7 - Duke: Pitch-adjusted velocity for shootflamethrowerflame() when free-aiming. 2022-11-06 21:59:04 +11:00
Mitchell Richters
64f55726c9 - Duke: Pitch-adjusted velocity for shootfireball() when free-aiming. 2022-11-06 21:59:04 +11:00
Mitchell Richters
33e2de70a2 - Duke: Pitch-adjusted velocity for shootrpg() when free-aiming. 2022-11-06 21:59:04 +11:00
Mitchell Richters
8ec475aec8 - Replace clamped off tangent values with a linear interpolation of the player's pitch.
* Gives a tangent-like ramping where it's noticeable without having to use the tangent at all.
* Had to do homegrown lerper since we're not C++20 yet.
2022-11-06 21:59:04 +11:00
Christoph Oelckers
b4a49ea228 - fixed movement speed for SE25 (Piston) 2022-11-05 16:00:39 +01:00
Christoph Oelckers
99753fd03a - fixed bad scaling factor in girlninj.cpp. 2022-11-04 18:18:23 +01:00
Christoph Oelckers
77ae3b3b71 - RR: fixed bad angle math in shootmortar 2022-11-03 11:08:40 +01:00
Christoph Oelckers
f5ce60fa6e - fixed issues with negative values being passed to sqrt für calculating RRRA's motorcyle and boat. 2022-11-02 13:32:07 +01:00
Christoph Oelckers
0e113dab79 - added true level compatibility map processing and deleted all related map hack code. 2022-10-31 10:45:47 +01:00
Christoph Oelckers
06c9296932 - added a quick hack to move a misplaced vertex in RR E1L1's barn. 2022-10-30 16:51:41 +01:00
Christoph Oelckers
0f57685f48 - updatesector interface cleanup. 2022-10-30 16:51:41 +01:00
Christoph Oelckers
c5523a99ee - fixed issues with Duke's poolballs. 2022-10-30 16:51:41 +01:00
Christoph Oelckers
09df4da241 - fixed scaling issue with Duke's green slimer. 2022-10-30 16:51:40 +01:00
Christoph Oelckers
0c87bcb91b - renamed getzsofslopeptr to calcSlope and removed one redundant inline. 2022-10-30 16:51:40 +01:00
Christoph Oelckers
32b2e84fdc - added episode and total episode time display to alt HUD 2022-10-30 16:51:40 +01:00
Christoph Oelckers
ffd284d233 - Duke: use player palette only on the foot weapon.
This is the only one showing Duke's clothes - the translation may cause discoloration on the others.
2022-10-30 16:51:39 +01:00
Mitchell Richters
79a1110d5f - Duke: Create new flag SFLAG2_INTERPOLATEANGLE and use for the bearing plate on gears.
* Fixes #719.
2022-10-30 16:51:39 +01:00
Mitchell Richters
65acafc2bd - Duke: Move new blood spat code into function for use in RR code as well. 2022-10-30 16:51:39 +01:00
Mitchell Richters
f149410750 - Duke: New setup for blood splatters against walls, taking full account of the float precision. 2022-10-30 16:51:38 +01:00
Christoph Oelckers
2fbee8faf5 - Exhumed alt hud. 2022-10-30 16:51:38 +01:00
Christoph Oelckers
35f6ece473 - renamed RR’s weapon sprites to match their weapons 2022-10-30 16:51:38 +01:00
Christoph Oelckers
88d421300a - made DukeActor::timetosleep unsigned.
Although mostly theoretical it is possible for this to overflow and render the actor non-functional.
If the value is unsigned the overflow will wrap around to 0 which is not critical.
2022-10-30 16:51:37 +01:00
Christoph Oelckers
15fc9e47fd - use symbolic STAT_ constants in spawninit where available. 2022-10-30 16:51:37 +01:00
Christoph Oelckers
ff71ab14ce - added a GZDoom-style alternative HUD.
So far only implemented for Blood.
2022-10-30 16:51:37 +01:00
Christoph Oelckers
f4c8ac0140 - made AnimSet's vel parameter an actual double.
This does not affect any outcome, it just avoids pointless type conversions.
2022-10-30 16:51:36 +01:00
Christoph Oelckers
4ac3820511 - deleted two unused local variables. 2022-10-30 16:51:36 +01:00
Christoph Oelckers
98e2fecd37 - another bunch of type conversion warnings fixed.
the ones in the findplayer functions are not critical in singleplayer.
2022-10-30 16:51:35 +01:00
Christoph Oelckers
902f8c9706 - silenced lots of warnings for deliberate type conversions.
The ones in d_net.cpp are not in active code.
2022-10-30 16:51:35 +01:00
Christoph Oelckers
9c097e1763 - revert to warning level 3.
Some stock warnings are far too noisy when level 4 is on.
2022-10-30 16:51:35 +01:00
Christoph Oelckers
5a045a6232 - deleted deprecated zrand variant 2022-10-30 16:51:35 +01:00
Christoph Oelckers
0c8a76dc9c - use ActorVect… functions in a few more places 2022-10-30 16:51:35 +01:00
Mitchell Richters
3f2d970b4f - Blood: Fix minor issue where player death horizon was being applied at double speed. 2022-10-30 16:51:34 +01:00
Mitchell Richters
2fc115a23d - Duke: Remove only place rotatepoint() is called where no pivot is used. 2022-10-30 16:51:34 +01:00
Christoph Oelckers
4df875e860 - use setfloorz/setceilingz in a few places where it wasn't done.
This isn't critical in any way so no need to merge, but let's be consistent, in case future changes rely on it.
2022-10-30 16:51:34 +01:00
Mitchell Richters
e07785e85b - Duke: Use pitch difference between player and shrunken actor to adjust horizon.
* Works a lot better, and is uncapped pitch compatible unlike the old setup.
2022-10-30 16:51:34 +01:00
Christoph Oelckers
e5efb5c15f - fixed seeker missile aiming
merge to "floatified VectorMissileSeek"
2022-10-30 16:51:34 +01:00
Christoph Oelckers
c159953ac6 - use normalangle(). 2022-10-30 16:51:33 +01:00
Mitchell Richters
e099a19f03 - Duke: Fix bad x/yrepeat scaling.
* Merge with or above `- use Scale wrappers in global code and parts of Duke.`.
2022-10-30 16:51:33 +01:00
Christoph Oelckers
3c6b64d621 - renamed everything back 2022-10-30 16:51:33 +01:00
Christoph Oelckers
81341ce4a6 - unwrapped SetScale as well.
Again no edits here - it's one big replace action.
2022-10-30 16:51:33 +01:00
Christoph Oelckers
da523eb8e3 - unwrapped vector SetScale. 2022-10-30 16:51:32 +01:00
Christoph Oelckers
15db7a7143 - unwrapped SetScaleX/Y. 2022-10-30 16:51:32 +01:00
Christoph Oelckers
8265239d2d - removed AddScale wrappers. 2022-10-30 16:51:32 +01:00
Christoph Oelckers
85b52b1c77 - removed Scale(), CopyScale() and MultScale wrappers. 2022-10-30 16:51:32 +01:00
Christoph Oelckers
51768439a9 - started removing wrappers. ScaleX() and ScaleY() done.
No manual changes in here.
2022-10-30 16:51:31 +01:00
Christoph Oelckers
4aa765675e - use a float vector to store the scale. 2022-10-30 16:51:31 +01:00
Christoph Oelckers
2df12e7961 - these are the final repeats 2022-10-30 16:51:31 +01:00
Christoph Oelckers
854c42e4ca - handle all remaining repeat constants. 2022-10-30 16:51:31 +01:00
Christoph Oelckers
42b36d97b9 - half of the remainint repeats in weapon.cpp. 2022-10-30 16:51:30 +01:00
Christoph Oelckers
391b8ffc34 - batch of repeats in weapons.cpp 2022-10-30 16:51:30 +01:00
Christoph Oelckers
0e8594628e - did the messier parts of weapon.cpp's repeats. 2022-10-30 16:51:30 +01:00
Christoph Oelckers
ce0a40320c - handle all 'notreallypos' places. 2022-10-30 16:51:30 +01:00
Christoph Oelckers
8a455aa09b - all remaining repeats outside weapon.cpp plus a few more. 2022-10-30 16:51:30 +01:00
Christoph Oelckers
60782efd01 - some odd repeats. 2022-10-30 16:51:29 +01:00
Christoph Oelckers
33aed76977 - random scale stuff in jweapon.cpp 2022-10-30 16:51:29 +01:00
Christoph Oelckers
8cb40291f2 - lots of repeat literals in SW 2022-10-30 16:51:29 +01:00
Christoph Oelckers
8ede08ce69 - mostly coolie related scaling factors. 2022-10-30 16:51:29 +01:00
Christoph Oelckers
abf5c9feee - all repeats in SW’s draw code 2022-10-30 16:51:29 +01:00
Christoph Oelckers
509d56d042 - handle bunny scaling in SW 2022-10-30 16:51:29 +01:00
Christoph Oelckers
2ceb41fcf4 - BuildAnim in Exhumed 2022-10-30 16:51:28 +01:00
Christoph Oelckers
f30a76dfc9 - BuildAnim wrapper 2022-10-30 16:51:28 +01:00
Christoph Oelckers
43b8f92f91 - all of Exhumed except BuildAnim 2022-10-30 16:51:28 +01:00
Christoph Oelckers
62427f8260 - handle xrepeat abuse in Exhumed’s energy blocks 2022-10-30 16:51:28 +01:00
Christoph Oelckers
42679d58bb - lots of repeats in Exhumed 2022-10-30 16:51:28 +01:00
Christoph Oelckers
558eaf38e1 - the last repeats in Duke
Mostly constants in the spawn code
2022-10-30 16:51:27 +01:00
Christoph Oelckers
bda616eb01 - fixed warning 2022-10-30 16:51:27 +01:00
Christoph Oelckers
2a4483e860 - all remaining repeats in Duke except spawn_d and spawn_r 2022-10-30 16:51:27 +01:00
Christoph Oelckers
38f7935ee9 - repeats in actors_d.cpp and actors_r.cpp 2022-10-30 16:51:27 +01:00
Christoph Oelckers
bc26f16ed5 - refactoring CreateActor - part 2 2022-10-30 16:51:26 +01:00
Christoph Oelckers
1a22127123 - refactoring CreateActor - part 1 2022-10-30 16:51:26 +01:00