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
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
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
991ef5c27f
- Minor input tidy-up.
2023-02-04 17:05:18 +11: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
81f6899e72
- C++20 constant fixes.
...
Use of enums is deprecated in floating point calculations.
2023-01-21 10:34:44 +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
8ef7e0e4f3
- Duke: Only draw the screen border when the viewport isn't 100%.
2023-01-13 08:56:12 +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
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
Christoph Oelckers
1e3a285534
- Duke: fixed access card activation delay.
2023-01-08 10:34:14 +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
ba364a1cb6
- Duke: Fix automap sprite angle which was not right with unsynchronised input.
2023-01-05 21:00:31 +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
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
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
1d69ebe9b0
- Duke: Ensure that the expander hitscans when autoaim is "hitscan only".
...
* Fixes #827 .
2022-12-29 21:17:41 +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
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
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
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
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
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
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
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
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
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
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