Commit graph

238 commits

Author SHA1 Message Date
Christoph Oelckers
65bc6e6aef - removed the now redundant wall() and sector() interator helper functions.
With both wall and sector now being TArrays they are not needed anymore.
2021-12-30 09:56:53 +01:00
Christoph Oelckers
2d648924e8 - the final Duke flags. 2021-12-30 09:56:49 +01:00
Christoph Oelckers
d0a06ae961 - deal with most of CSTAT_SECTOR_SKY and CSTAT_SECTOR_SLOPE 2021-12-30 09:56:45 +01:00
Christoph Oelckers
11f41a97d5 - made gotpic a FixedBitArray.
gets rid of some inline garbage.
2021-12-30 09:53:56 +01:00
Christoph Oelckers
dddf48fd3e - cleaned up and renamed buildtypes.h.
Content was reordered so that the file can contain the inlines belonging to the map data types that previously had to be stored elsewhere.
Also moved out of the Build folder because virtually everything in here can be traced to content available in Duke Nukem 3D's and Shadow Warrior's source releases.
2021-12-30 09:53:46 +01:00
Christoph Oelckers
838bed7800 - final cleanup of sectnum related stuff.
Made sure that remaining uses of sector indices are safe to be kept and deleted a few redundant functions.
2021-12-26 23:10:01 +01:00
Christoph Oelckers
6a43a270fa - use sectno() access function where we really need a sector index. 2021-12-26 23:10:01 +01:00
Christoph Oelckers
8ee5d1b0d7 - activated the garbage collector
This finally gets rid of all static storage for actors - so no more indices ever! :)
2021-12-26 23:10:00 +01:00
Christoph Oelckers
588f88c9cc - migrated the actors to DObjects.
No GC yet, only the classes have been altered and some GC-related features been added.
Full switchover will require adding GC support to all data in the game.
2021-12-26 23:09:57 +01:00
Christoph Oelckers
122a1f009d - moved gamevar storage to player and actor objects respectively.
For actors this eliminates the need to for sprite indices which was the intended goal. It also properly associates the gamevars with their owners.
2021-12-26 23:09:56 +01:00
Christoph Oelckers
8a2385dd89 - actor clearing cleaned up.
We still need this until we can get rid of the static arrays...
2021-12-26 23:09:55 +01:00
Christoph Oelckers
f855b1020f - actor lists refactored.
No more shorts, no more static arrays.
This was one of the biggest blockers for unlimiting the engine.
2021-12-26 23:09:54 +01:00
Christoph Oelckers
8c298de114 - Duke: replaced DukeLinearSpriteIterator and explicit loops over the sprite[] array. 2021-12-26 23:09:52 +01:00
Christoph Oelckers
6600f55543 - separate map loading from actor spawning for the other games, too.
It still uses the horribly messed up original spawn logic, though.
2021-12-26 23:09:51 +01:00
Christoph Oelckers
75b36cbd1c - Duke: made player.i a real pointer
How could I overlook this one.
2021-12-26 23:09:45 +01:00
Christoph Oelckers
d1f7269ca8 replaced cursectnum with a cursector pointer 2021-12-25 21:28:56 +01:00
Christoph Oelckers
fcbf861ad4 - final preparations for changing type of cursectnum 2021-12-25 21:28:55 +01:00
Christoph Oelckers
aada3f3d19 - renamed DDukeActor::getSector. 2021-12-25 21:28:51 +01:00
Christoph Oelckers
cc41f4e7c6 - migrated Duke's added sector properties. 2021-12-25 21:28:48 +01:00
Christoph Oelckers
baf36a321b - inside, haskey and removed unused processmove functions. 2021-11-29 00:56:30 +01:00
Christoph Oelckers
09c2677fe7 - lots of EGS calls. 2021-11-29 00:56:29 +01:00
Christoph Oelckers
a7634c4cad - Duke: use pointers in interpolation interface. 2021-11-29 00:56:27 +01:00
Christoph Oelckers
0f2f46ec35 - made one_parallax_sectnum a pointer 2021-11-29 00:56:26 +01:00
Christoph Oelckers
bc199d00c7 - made 'clouds' a pointer array. 2021-11-29 00:56:26 +01:00
Christoph Oelckers
c31d8a93fd - a few more
Enough of this - Duke is clearly clean of bad storage now
2021-11-29 00:56:24 +01:00
Christoph Oelckers
9d8e7ea759 - crane cleanup
This now uses its own struct where it can store the needed actor pointer directly.
2021-11-29 00:56:22 +01:00
Christoph Oelckers
463ce55d0b - premap 2021-11-29 00:56:19 +01:00
Christoph Oelckers
5cda9d0858 - tabified two files in Duke that were missed somehow, plus some comment cleanup elsewhere. 2021-11-29 00:53:35 +01:00
Christoph Oelckers
94b2b0af31 - widen sector index in engineLoadBoard to 32 bit 2021-11-09 00:07:00 +01:00
Christoph Oelckers
35b9318580 - Duke/RR: checked the rest of the code for shorts and replaced most local ones with ints. 2021-11-07 16:33:13 +01:00
Christoph Oelckers
c8c8ca05d3 - Duke: sector[] handled in one more premap loop. 2021-11-07 15:00:08 +01:00
Christoph Oelckers
1c0e3d849b - addressed the updatesector related deprecation warnings with Duke. 2021-11-06 20:46:08 +01:00
Mitch Richters
a1570c185f - Duke: Remove posx/posy/posz variables and replace with points in the previously unionised pos vec3_t variable. 2021-10-31 17:52:52 +11:00
Mitch Richters
b02a6a3ec9 - Replace MIN() from templates.h with version provided in STL. 2021-10-30 10:36:15 +02:00
Christoph Oelckers
821f3d356b - renamed DDukeActor::GetIndex to GetSpriteIndex to bring it in line with the other games. 2021-10-24 09:22:35 +02:00
Christoph Oelckers
9a8ee00aec - set currentLevel before calling engineLoadBoard.
This is needed if the compatibility patcher needs to alter mapinfo data.
2021-07-27 22:12:29 +02:00
Christoph Oelckers
e10bcf6294 - split the screen job code into a generic and a Raze specific part.
Preparations for porting this to GZDoom.
2021-05-22 01:35:50 +02:00
Christoph Oelckers
f136330628 - removed the native versions of Duke's and RR's status bar. 2021-05-15 17:15:29 +02:00
Christoph Oelckers
d311792e06 - engine side preparations for Duke Statusbar scriptification.
Mainly, gotweapon had to be reverted to a flat bool array to avoid implementing FixedBitArray for the VM.
Also adding a few new tile names and PushV for string arrays.
2021-05-15 10:44:35 +02:00
Christoph Oelckers
5a6121d424 - status bar interface work. 2021-05-15 10:25:38 +02:00
Christoph Oelckers
43981bff85 - Duke: fixed mirror setup for new renderer.
A wall must be marked one-way to be used as a mirror.
2021-05-08 16:27:01 +02:00
Christoph Oelckers
8003ab6fa3 Merge branch 'scriptable_cutscenes' into newrenderer 2021-05-02 22:37:46 +02:00
Christoph Oelckers
bb9d492db6 - migrated RRRA as well. 2021-05-02 14:01:10 +02:00
Christoph Oelckers
6f4e380728 - migrated RR's cutscene definitions.
Also turned several level-specific init options into map flags or map parameters.
2021-05-02 13:12:24 +02:00
Christoph Oelckers
dbd179be5c - RR progression fixes.
* E1L7 abuses an 'end the game' command to progress to E2L1, this needs special treatment.
* handle ENDGAME.MAP more cleanly by injecting an 'engine.con' into the compilation chain to define its map record. The main issue with this is that it needs to be defined before the regular CONs run.
* check the already defined 'clearinventory' and 'clearweapons' flags that are exposed through RMAPINFO (Duke/RR only so far.)
2021-05-02 10:55:22 +02:00
Christoph Oelckers
9bc210fe35 - fixed RR weapon clearing in E2L2 and RRRA E1L3. 2021-05-02 10:37:20 +02:00
Christoph Oelckers
1798380f23 - adapted map transition in Duke/RR.
There's still some issues which will be taken care of by adding map flags.
2021-05-02 10:35:43 +02:00
Christoph Oelckers
f3eb476fbf - minor cleanup. 2021-05-01 23:09:24 +02:00
Christoph Oelckers
f732d4ec64 - added MAPINFO parser, based on GZDoom's.
This isn't hooked up yet, but all necessary structures and fields have been added so that selected pieces can be tested.
2021-05-01 22:52:28 +02:00
Christoph Oelckers
aa148d602c - scriptified SW's 2D screens.
Compiles but not tested yet.
2021-04-30 20:08:35 +02:00
Christoph Oelckers
d5db898236 - fixed bad level number for weapon removal in RRRA. 2021-04-30 20:08:35 +02:00
Christoph Oelckers
fa2bcf563a - forgot to save these. 2021-04-30 20:08:35 +02:00
Christoph Oelckers
b65dfb6145 - check r_precache in all games. 2021-04-30 20:08:35 +02:00
Christoph Oelckers
6d743ce921 - most of the summary screen is working 2021-04-30 20:08:33 +02:00
Christoph Oelckers
0dc6980e5c - made episode intro cutscenes a game independent feature.
So far only defined for Duke E4 but all the logic is outside the game code now and can be universally handled.
2021-04-30 20:08:33 +02:00
Christoph Oelckers
3c27ec8cbd - tested all of Duke's and RR's cutscenes. 2021-04-30 20:08:33 +02:00
Christoph Oelckers
dc8b72b2ce Merge branch 'master' into newrenderer2
# Conflicts:
#	source/games/duke/src/actors.cpp
#	source/games/duke/src/hudweapon_d.cpp
#	source/games/duke/src/hudweapon_r.cpp
#	source/games/duke/src/render.cpp
2021-04-15 19:34:03 +02:00
Christoph Oelckers
96d78ab9e6 - made DukeActor::s a pointer.
As a reference we would never be able to export this to scripting
2021-04-15 19:21:43 +02:00
Mitchell Richters
6cebd7fca2 Merge branch 'master' into newrenderer2 2021-04-15 18:01:26 +10:00
Mitchell Richters
aeb16e390c - Duke: Add resurrected flag to handle resurrection via cheating or when pissing in RR. 2021-04-15 18:00:58 +10:00
Mitchell Richters
f254eeb465 - binaryangle.h: Remove lookangle class and replace use with binangle.
* Added in fca846272e to deal with signed adjustments but its just not needed.
* Made better use of `binangle`/`fixedhoriz` class getters and setters than before as well.
2021-04-11 15:45:53 +10:00
Christoph Oelckers
13bbf0a4f9 - sector portals in RRRA are working. 2021-03-24 23:55:10 +01:00
Christoph Oelckers
a36377111c - engine-side portal setup for Blood and RRRA. 2021-03-21 14:48:35 +01:00
Christoph Oelckers
6f7e7459ea - did some cleanup on Duke's render code to prepare for the new way of handling portals.
Like for Blood, the Polymost-only code has been moved aside.
Closer examination of the preparations the engine is doing for rendering SE40/150-portals shows that all this was merely done to avoid glitches with a two-phase rendering setup - nothing of this will be needed for doing it properly.
They can just be treated as run-of-the-mill stacked sectors. when using hardware rendering capabilities for clipping.
2021-03-21 10:58:11 +01:00
Mitchell Richters
2abda0e27d - All Games: Migrate each game's clock counter to backend solution. 2021-02-18 21:47:33 +11:00
Mitchell Richters
97159c20c1 - Duke: Leverage new spritetype methods within Duke, removing bposx/bposy/bposz from hittype. 2021-01-06 06:22:29 +11:00
Christoph Oelckers
553bb2af19 - moved 'frags' into player_struct.
Again for reducing the work with the script interface.
2020-11-29 14:10:03 +01:00
Christoph Oelckers
7ad0750839 - grouped all of Duke's constant per-session state in a single struct.
Mainly done so later the script export can be done more easily.
This also renames a few of the affected variables for clarity.
2020-11-29 13:54:58 +01:00
Christoph Oelckers
a34f5debe8 - route the shared control CCMDs through the game interface instead of registering local variants for each game. 2020-11-29 13:35:09 +01:00
Christoph Oelckers
48b16d5233 - cleanup on player CVAR use. 2020-11-29 13:22:04 +01:00
Christoph Oelckers
b9477f147e - migrated Duke's interpolations to the common system and added handling for texture scrollers. 2020-11-26 18:32:36 +01:00
Christoph Oelckers
d8e331ef0f - changed Duke/RR palette handling to only retrieve the currently active palette right before rendering.
Storing this in the player_struct is pointless and a relic from having to use real hardware palette switches.
With this now just being a translation index being passed to the backend it can be cheaply retrieved right when used and nowhere else.
Also making some changes to how RRRA's psychedelic cactus handles the projection. This fixes issues with occasionally passing a bad matrix.
2020-11-05 07:31:48 +01:00
Christoph Oelckers
083454986b - made camsprite an actor variable. 2020-11-04 20:40:26 +01:00
Christoph Oelckers
0eb10f0313 - newowner and related code. 2020-11-04 20:40:25 +01:00
Christoph Oelckers
d0db810ab0 - ud.camerasprite -> actor. 2020-11-04 20:40:08 +01:00
Christoph Oelckers
4add2b5839 - two more 2020-11-04 20:40:07 +01:00
Christoph Oelckers
770897b8b9 - player.i, part 1 2020-11-04 20:39:42 +01:00
Christoph Oelckers
d8a7821b4f - cleaned up a few more loops. 2020-11-04 19:55:17 +01:00
Christoph Oelckers
bc6ae872ae - cleaned up the checkhitswitch interface to receive sprites as pointers. 2020-11-04 19:55:15 +01:00
Christoph Oelckers
635b53f78f - RR-movement + dummyplayersprite 2020-11-04 19:55:13 +01:00
Christoph Oelckers
29b08b2115 - access_spritenum 2020-11-03 22:49:17 +01:00
Christoph Oelckers
de92287d0b - fixed the messed up parameter order of OnEvent.
This should serve as a textbook example why passing around indices is a very, very bad idea!
2020-11-03 19:21:42 +01:00
Christoph Oelckers
8fd0fe5955 - changed the spriteq to use pointers instead of indices. 2020-10-24 09:40:10 +02:00
Christoph Oelckers
9cdaaff42b - migrated EGS and deletesprite to new actor interface.
Inline wrappers for old code exist.
The backupplayer inline was moved into player.cpp because that's the only place it gets used.
2020-10-21 19:14:41 +02:00
Christoph Oelckers
6f4a0c94e8 - something on player is now a pointer as well 2020-10-21 16:31:18 +02:00
Christoph Oelckers
72329eb01b - wackedbyactor, too. 2020-10-21 16:31:18 +02:00
Christoph Oelckers
e94274a543 - holoduke_on is now a pointer as well. 2020-10-21 16:31:18 +02:00
Christoph Oelckers
d7604a3160 - made on_crane a pointer as well. 2020-10-21 16:31:17 +02:00
Christoph Oelckers
7c88de0b42 - made player.actorsqu a pointer and added the needed infrastructure for that. 2020-10-21 16:31:17 +02:00
Christoph Oelckers
78afb67c7f - setup for Duke actor data transition to something more scripting friendly.
The main problem here is that there's two data arrays representing an actor - sprite and hittype and the engine only uses indices for reference.
By setting up hittype to contain a sprite reference, the function and iterator interface can be rewritten to use a single pointer instead to represent an actor.
The main objective is to reduce the number of accesses to the global arrays which constitute the biggest refactoring blocker.
2020-10-21 16:31:17 +02:00
Christoph Oelckers
3d36381752 - converted all stat iterators outside sector*.cpp. 2020-10-15 01:34:28 +02:00
Christoph Oelckers
8e1c71b867 Merge branch 'InputContinuation' 2020-10-11 15:24:51 +02:00
Christoph Oelckers
fc82b3bc8a - Duke: replaced the game type macros with inline functions. 2020-10-11 14:30:42 +02:00
Mitchell Richters
fca846272e - gamecontrol: Initial setup of PlayerAngle struct and deployment within Duke.
* Struct made up of binangle class units.
* Create signed clone of binangle for use with look_ang and rotscrnang.
* Append currently outgoing function names with `2` at the end to avoid conflict.
2020-10-07 23:13:29 +11:00
Mitchell Richters
f39939d114 - gamecontrol: Initial setup of PlayerHorizon struct and deployment within Duke.
* Started with the most complicated game first.
* Struct made up of fixedhoriz class units.
* Append currently outgoing function names with `2` at the end to avoid conflict.
2020-10-07 17:12:48 +11:00
Mitchell Richters
09a05f354c - Re-standardise horizon around 0 and not 100.
* Blood had this right. It makes sense that the horizon be based around as it's easier to work with.
* Removed all associated game math to deduct default horizon of 100 when doing weapon zvel etc, meaning actual horizon can just be used.
* Re-did return to center function to work on the already converted pitch. Return speed should be 1:1 with previous code.
2020-10-07 13:28:45 +11:00
Christoph Oelckers
6488f52055 - fixed: Restarting after dying unset the currently selected skill level. 2020-09-29 18:30:00 +02:00
Christoph Oelckers
9ab29f5975 - reset ud.eog after playing the end of game cutscene.
If this persists, all following levels will also immediately end the game as well.
2020-09-27 20:34:48 +02:00
Christoph Oelckers
b93a9b478a - implemented World Tour's developer commentaries. 2020-09-26 17:43:34 +02:00
Mitchell Richters
362fda4378 - Duke: Change fix in 6e9576b871 to be outside of donewgame() in case player is loading a map from the command line. 2020-09-26 09:17:50 +10:00