Commit graph

10653 commits

Author SHA1 Message Date
Christoph Oelckers
e4cfc374be - another trip bomb flag. 2022-01-27 00:42:57 +01:00
Christoph Oelckers
0574da7cd4 - SE24 cleanup using flags.
The whole setup is actually very simple, once all the mess got removed from the code.
2022-01-27 00:42:49 +01:00
Christoph Oelckers
eae5ca93d0 - cleanup - flag name and removal of unused code. 2022-01-27 00:42:40 +01:00
Christoph Oelckers
2468debe34 - added a new flag for non-teleporting items. 2022-01-27 00:42:16 +01:00
Christoph Oelckers
fc94fb9651 - replaced checktimetosleep with a flag. 2022-01-27 00:42:07 +01:00
Christoph Oelckers
72510a47fa - replaced one more actor list check in hitradius with a flag. 2022-01-27 00:41:57 +01:00
Christoph Oelckers
125c3e8004 - flammable flags. 2022-01-27 00:41:33 +01:00
Christoph Oelckers
913b0622b8 - use symbolic constants 2022-01-27 00:35:45 +01:00
Christoph Oelckers
58b718d2a2 - turn all special actor type checks in moveflammable into flags.
Also wrap all flag checks in actorflag function
2022-01-27 00:34:21 +01:00
Christoph Oelckers
cbd8de36a9 - added spawn number parser to .DEF.
This is for mapping actor classes to whatever the games use to decide what kind of actor a sprite is.
2022-01-26 23:53:05 +01:00
Christoph Oelckers
d9fee902de - setSpritesetImage export added. 2022-01-26 23:35:53 +01:00
Christoph Oelckers
ef22a78618 - moved all VM exports to their own file. 2022-01-26 23:35:46 +01:00
Christoph Oelckers
5fe5dbd5aa - added spriteSet property to DukeActor
The idea here is to abstract picnum manipulation. Since all this is strongly index based it translates poorly to a system with named textures.
This allows a class to define a set of sprite images it intends to operate on as if it was still a simple indexed resource, even if the underlying storage changes.
2022-01-26 00:36:34 +01:00
Christoph Oelckers
c27976b2e5 - added script exports for Duke's iterators 2022-01-26 00:16:21 +01:00
Christoph Oelckers
5bc8b1c2d3 - Duke: added two more flags to eliminate the references to the crane's tile numbers. 2022-01-25 22:26:53 +01:00
Christoph Oelckers
e3103fff02 - fixed sky tiling. 2022-01-25 19:00:52 +01:00
Christoph Oelckers
0e89bffabd - Exhumed: fixed surace collisions of projectiles.
There was some commented out undefined behavior here, we need to properly define this case.
2022-01-25 00:57:59 +01:00
Christoph Oelckers
30adac6e7f - Exhumed: removed erroneous target assignment in Anubis AI. 2022-01-25 00:25:52 +01:00
Christoph Oelckers
58f535d3a4 - Duke: fixed gamevars not being allocated for map spawned actors. 2022-01-24 23:05:22 +01:00
Christoph Oelckers
d19e2e3e40 - version bump. 2022-01-24 10:29:16 +01:00
Christoph Oelckers
2022de845a - did some reshuffling on Exhumed's menu.
To allow adding a "User map" item and prevent accidental reset of ongoing games, both the items for starting the campaign and the training map are now in a submenu.
This allows the game to go through the regular startup procedure common to all games, which in turn allows adding the "User map" item to the episode selection.
2022-01-24 01:00:05 +01:00
Christoph Oelckers
a252b206d1 - exported DukeActor's native member variables.
This includes renaming two native ones because they shared the same name with members of spritetype.
2022-01-24 00:24:47 +01:00
Christoph Oelckers
f194fb6c90 - added a name to tilenum function so that we can define picnums by name in scripted actors. 2022-01-24 00:24:47 +01:00
Christoph Oelckers
e206a71448 - added the native property handlers for CoreActor. 2022-01-24 00:24:47 +01:00
Christoph Oelckers
0a6a5fe871 - set a default bitmask for the cstat flags.
These need to be combined with the flags from the map, so we need to know which ones are being used by the actor defaults.
2022-01-24 00:24:46 +01:00
Christoph Oelckers
04a380ce14 - added script exports for DCoreActor's member variables. 2022-01-24 00:24:46 +01:00
Christoph Oelckers
531a42e801 - added the flag parsing utilities. 2022-01-23 13:03:39 +01:00
Christoph Oelckers
e035ce00b6 - hooked up the compiler extension and the static actor data setup. 2022-01-23 13:03:39 +01:00
Christoph Oelckers
0398ba4ff0 - added all parts needed to implement the actor property parser.
Not hooked up yet with the rest of the code, this just adds the needed files in compilable form.
2022-01-23 13:03:39 +01:00
Christoph Oelckers
b5a5d24bf4 - SW: fixed Polymost sky panning 2022-01-23 12:51:14 +01:00
Christoph Oelckers
bd22aeb0d9 - SW: use correct sky scale in Polymost. 2022-01-23 12:44:22 +01:00
Christoph Oelckers
e64a6f7e30 - Blood: Fixed choking hand with new renderer.
This gets directed to the weapon 3D drawer, but for that it was processed too late.
2022-01-23 12:23:55 +01:00
Christoph Oelckers
a23124a201 - Exhumed: fixed check for bad ending cutscene. 2022-01-22 23:11:34 +01:00
Christoph Oelckers
747648ce78 - added guards against badly defined skies. 2022-01-22 22:52:45 +01:00
Christoph Oelckers
276597fc36 - normalize line endings. 2022-01-22 14:37:17 +01:00
Christoph Oelckers
c11000e4cd - Blood: do color highlighting for trigger messages, like NBlood does. 2022-01-22 09:38:01 +01:00
Rachael Alexanderson
7b560a3d79 - add debug ccmds for custom shaders 2022-01-20 22:31:31 -05:00
Rachael Alexanderson
f4c9c5df72 - hook up GLDEFS parser and do some final fixes 2022-01-21 01:16:22 +01:00
Rachael Alexanderson
0e4eeddb93 - add a stripped-down GLDEFS parser 2022-01-21 01:15:59 +01:00
Rachael Alexanderson
43a2437071 - fix compile error 2022-01-21 01:15:22 +01:00
Rachael Alexanderson
85aee83bf8 - backend sync with GZDoom 2022-01-21 01:15:22 +01:00
Rachael Alexanderson
13ca744ef8 - replicate GZDoom commit 12ed24d066 2022-01-21 01:15:22 +01:00
Rachael Alexanderson
c6f991a798 - in progress 2022-01-21 01:13:35 +01:00
Christoph Oelckers
19d8d65fd0 - split names into common and Raze-specific 2022-01-20 01:11:23 +01:00
Mitchell Richters
1446486871 - Exhumed: Extend 520c03b4f1 to back up the player's totalvel variable as well at the map's end. 2022-01-19 23:00:04 +11:00
Mitchell Richters
f91f3eacca - Blood: Fix off-by-one error in trProcessBusy() loop.
* Originated from 0beb91e17e.
2022-01-16 23:44:53 +11:00
Christoph Oelckers
f888b1da9c - sky parser improvements. 2022-01-16 12:12:44 +01:00
Christoph Oelckers
82be7db269 - give the tree sky of DukeDC an offset of -40 to better hide its poor design in the new renderer. 2022-01-16 12:12:44 +01:00
Christoph Oelckers
3aff12cf4c - sky management rework. 2022-01-16 12:12:43 +01:00
Christoph Oelckers
0beb91e17e - Blood: don't use references to address gBusy.
This will fail if the callback in trProcessBusy adds new entries to the array which would invalidate the reference.
2022-01-16 12:02:38 +01:00
Mitchell Richters
520c03b4f1 - Exhumed: Extend 57d54a2105 to back up the player's bobangle variable as well at the map's end. 2022-01-16 08:32:22 +11:00
Christoph Oelckers
4b9ea92969 - gracefully handle when a map tries to exit twice.
This case left a broken ScreenJobRunner behind which later crashed on garbage collection.
2022-01-15 19:20:58 +01:00
Christoph Oelckers
40cee808a1 - Exhumed: use proper distance calculations when spawning weapon flashes.
The cheap distance approximation here tended to fail on longer walls.
2022-01-15 18:33:37 +01:00
Christoph Oelckers
b1d3e8ee54 - Exhumed: Avoid playing the same pickup sound while another copy of it is already active.
The pickup code here is not robust enough to play the sound only once per pickup.
2022-01-15 16:11:42 +01:00
Christoph Oelckers
4ee64df844 - uncouple the fist animation for being shrunk from the display frame rate. 2022-01-15 15:48:50 +01:00
Christoph Oelckers
26d89e932a - Duke: add back a limit to the teleporter sound.
Due to broken game logic it is possible for this to play in very large quantities.
2022-01-15 11:56:38 +01:00
Christoph Oelckers
c5b382907d - SW: fixed velocity issue in InitEnemyFireball.
The value of the first shot was retrieved too early.
2022-01-15 10:36:55 +01:00
Christoph Oelckers
e2061dbcc6 - fixed bad wall array access when handling a sector that got split up. 2022-01-14 22:56:00 +01:00
Christoph Oelckers
7b1d99373b - fixed last commit and optimized wall lookup code a bit.
No need to continue if a matching wall has been found.
2022-01-14 20:20:47 +01:00
Christoph Oelckers
ef711f0b2d - allow a bit of tolerance for attached orthogonal wall sprites.
We have to account for mappers adding some 'safe' distance (which isn't really safe!)
2022-01-14 16:27:24 +01:00
Christoph Oelckers
8281374551 - do not use floor sprites for splitting geometry.
This is way too expensive on maps with lots of sprites. Instead, run them through the case for slope sprites which should be sufficient here
Also let rendered_* count the actual draw calls, not processed objects, because that is the most relevant metric for checking performance issues.
2022-01-14 00:49:57 +01:00
Christoph Oelckers
899ced50aa - moved alpha threshold determination for sprites to the setup pass.
Overall this is not much, but it can be easily offloaded to a worker thread later.
2022-01-14 00:19:26 +01:00
Christoph Oelckers
37e7f92182 - made a few changes to the timer calls for renderer profiling.
A few items were counted double, other were in the wrong slot.
2022-01-14 00:15:33 +01:00
Christoph Oelckers
18ddcbb1c5 - removed all uses of nexttoward in Polymost.
Taking a hint from EDuke32 here, the performance increase is absolutely massive with this function gone from the innermost loops.
2022-01-14 00:04:47 +01:00
Christoph Oelckers
24a67e194d - Duke: reverted sector storage to temp_data[0] for the subway.
This was the ultimate revenge of the Spaghetti code: Somewhere in there, something needs this value in temp_data[0], but I cannot find where this is...
2022-01-13 22:34:43 +01:00
Christoph Oelckers
9375750a17 - added sorting for wall sprites attached to non-orthogonal walls. 2022-01-13 20:55:55 +01:00
Christoph Oelckers
ecb2732629 - little bit of cleanup on Duke's bullet hole code. 2022-01-13 20:53:36 +01:00
Christoph Oelckers
8d84bc2599 - disable window clipping entirely in outside areas.
This is a first grade performance killer on large maps and doesn't offer much in clipping robustness.
On maps like Clear the Coast or Wpudrichem omitting this check reduces map traversal time by 40%.
2022-01-13 19:46:04 +01:00
Christoph Oelckers
8976813fe1 - removed some overlooked debug code. 2022-01-13 13:14:00 +01:00
Mitchell Richters
79f47ca2f9 - Duke: Add some comments to 40ffb23b44 so it can be better fixed in the future when multiplayer is going. 2022-01-13 22:42:48 +11:00
Christoph Oelckers
049fc5fb7c - proper maintenance of the depth bias state.
Change state must be combined, not overwritten, or it may miss some needed state changes.
2022-01-13 12:27:40 +01:00
Christoph Oelckers
fcf04a7df1 - delete unused variable. 2022-01-13 12:27:40 +01:00
Mitchell Richters
40ffb23b44 - Duke: Directly check the backend input code's crouch_toggle to always remain crouched after pausing, even if the first tic doesn't have input.
* This is needed because unlike the other games, Duke doesn't have any decent state manager for the player like Blood and SW do.
2022-01-13 21:54:56 +11:00
Christoph Oelckers
85cce1128a - do proper handling of the 'no shadow' case for Duke's bad guys.
Using a flag like RedNukem instead of hacking dispicnum, which occasionally does reach the renderer and causes problems.
2022-01-13 00:42:34 +01:00
Christoph Oelckers
a13612ab9b - Blood: allow bad start spots to pass for modern maps.
These can have alternative start spot definitions.
The error will still be printed, though.
2022-01-13 00:21:15 +01:00
Christoph Oelckers
1b162ececc - do not add two-sided walls outside of the visible range to the clipper
This caused a render glitch in Duke E4L2.
2022-01-13 00:04:32 +01:00
Christoph Oelckers
22afc25046 - fixed floor sprite normals. 2022-01-13 00:04:14 +01:00
Christoph Oelckers
0e36ab6688 - disable SSAO for Polymost. 2022-01-12 16:02:45 +01:00
Christoph Oelckers
f09bbb8b5e - fixed the normals for sloped planes. 2022-01-12 16:02:45 +01:00
Mitchell Richters
f8ffaa4be9 - Blood: Tidy up some missed kWeap constants. 2022-01-12 22:22:54 +11:00
Christoph Oelckers
26e9d33bfa - GCC didn't like this. :( 2022-01-12 00:19:41 +01:00
Christoph Oelckers
44e64a6a12 - backend update from GZDoom.
* GC fix
* better sound range check
* UE model loader license change.
2022-01-11 22:54:37 +01:00
Christoph Oelckers
e5dad53f6d - menu entries for light modes, plus handling of overbright shades. 2022-01-11 00:19:15 +01:00
Christoph Oelckers
f20bd94269 - the gl_fogmode hack is no longer needed 2022-01-11 00:18:56 +01:00
Christoph Oelckers
aa0e558af2 - use different fade ramps for 64 and 32 shades.
Also some optimization to eliminate redundant calculations of the fade strength.
2022-01-11 00:18:20 +01:00
Christoph Oelckers
07eeb147ab - tweaked light mode for weapon lighting and avoiding getting too dark. 2022-01-11 00:16:43 +01:00
Christoph Oelckers
aa7af0711a - fine tuning of the new light modes. 2022-01-11 00:13:31 +01:00
Christoph Oelckers
26223ffca2 - experimental new light mode, based on GZDoom's original light modes. 2022-01-11 00:12:50 +01:00
Christoph Oelckers
98c919fbe4 - g_visibility stuff 2022-01-11 00:12:32 +01:00
Christoph Oelckers
ddcee4ecbf - split up g_visibility into two variables.
This is preparation for experimenting with the weapon flashes that can be quite annoying with how they brighten distant parts of the level far more than nearby parts.
2022-01-11 00:12:32 +01:00
Christoph Oelckers
da5a92852f - cleanup of Duke's actor flags. 2022-01-11 00:12:32 +01:00
Christoph Oelckers
e892de21ec - preparations for unlimited tsprites.
Right now it is a no-op because Polymost cannot deal with this properly.
2022-01-11 00:12:32 +01:00
Christoph Oelckers
2377b17106 - fixed bad aspect ratio calculation in DStatusBarCore::SetScale 2022-01-10 00:19:39 +01:00
Christoph Oelckers
3c54495c58 - Duke: hardened the sound controller a bit by flagging the callsound call from doanimations as most likely terminating.
This allows avoiding unnecessary sound repeats on some doors.
A real fix is not possible with the broken setup here - the sound controller can only implicitly toggle its state so it is likely that improper use is frequent.
2022-01-09 23:03:11 +01:00
Christoph Oelckers
0f925d4cc0 - Duke: fixed monster sight sounds not being played. 2022-01-09 21:25:02 +01:00
Christoph Oelckers
91d51d518b - this hack is needed because dragging vertices around can randomly create wall intersection.
In clear English: Geometry in Build maps is always broken by design. :(
2022-01-09 20:38:07 +01:00
Christoph Oelckers
e1661e0de1 - Duke: disabled sound limiting.
This does not work with how the game uses sounds. Unlike Doom the sound engine in DOS Duke has no channel limit so any sound can play as many times as the game deems fit.
2022-01-09 15:18:35 +01:00
Christoph Oelckers
694f44774f - Duke: added missing z-offset in hits.
Among other things, this made throwing pipebombs on slopes misbehave.
2022-01-09 14:43:59 +01:00
Christoph Oelckers
a50430bf68 - Duke: fixed SE02's handling of sloping sectors. 2022-01-09 13:38:10 +01:00
Christoph Oelckers
a0e6ee0e2e - added a bit more logic to handle overlapping walls.
All this is needed to make the back door to the cinema in Duke E1L1 render properly without making the clipper break on complex overlapping sector setups, like some of the ducts in Duke E2L7.
2022-01-09 12:05:36 +01:00