Commit graph

7628 commits

Author SHA1 Message Date
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
15f9861633 - summary screens, too. 2021-05-02 12:28:32 +02:00
Christoph Oelckers
4458f8c929 - migrated the global cutscenes to RMAPINFO as well. 2021-05-02 12:22:40 +02:00
Christoph Oelckers
2d4e91615f - migrated Duke's cutscene definitions to the new RMAPINFO.txt. 2021-05-02 12:02:55 +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
e9385ed4e8 - adapted Blood to the new level progression features and simplified several parts, particularly the clumsy retrieval of the next level.
Some cheats in Duke will not work correctly with this commit!
2021-05-02 09:08:57 +02:00
Christoph Oelckers
93bfc35ad6 - use the volumes to find the starting maps for the menu and the clusters for the cutscenes. 2021-05-02 01:01:30 +02:00
Christoph Oelckers
825963661b - migrated volumes to the new storage. 2021-05-02 00:35:56 +02:00
Christoph Oelckers
727244d52d - changed 3 places to call the proper map progression function.
These ignored the explicit settings in the map definition.
2021-05-01 23:10:04 +02:00
Christoph Oelckers
f3eb476fbf - minor cleanup. 2021-05-01 23:09:24 +02:00
Christoph Oelckers
13b21d3ed9 - removed script access to variables that no longer contain what they once did. 2021-05-01 23:08:51 +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
Emile Belanger
4a05b9cb5b Clear Viewpointbuffer position so it does not go to infinity 2021-05-01 21:29:03 +02:00
Christoph Oelckers
4c2266ee88 - fixed incomplete SW ending cutscene. 2021-05-01 20:31:51 +02:00
Christoph Oelckers
e0ec0f24d0 - fixed Blood's HUD time display.
This somehow got lost.
2021-05-01 20:08:51 +02:00
Christoph Oelckers
b21dadeef0 - we need to wait a bit before starting the intro scene.
The game timer actually starts before the main loop is ready so we have to wait with the cutscene until the loop is in sync with the timer.
2021-05-01 19:46:17 +02:00
Christoph Oelckers
27799def63 - rewrote movie player so that the decoder backends only perform the decoding but do not draw the frames themselves.
This caused twq problems:

1. It made it impossible to let the client apply effects to the video.
2. The client had no control when rendering stopped.

Now the backends only provide a texture handle that the client must draw. One immediate benefit is that Blood's fixed viewport scaling is now available to all video formats.
2021-05-01 18:59:16 +02:00
sinisterseed
47a09b4f14 - this line also needs to go.
The file doesn't exist anymore, causing project generation to fail.
2021-05-01 15:58:22 +03:00
Christoph Oelckers
6e0089a10d - deleted blood/credits.cpp from the project file. 2021-04-30 22:03:45 +02:00
Christoph Oelckers
10395688bf - must restore the laptop background of Exhumed's LEV20 cutscene each frame.
Also fixed the variable names in this function.
2021-04-30 20:08:36 +02:00
Christoph Oelckers
4069a5096a - scriptified Exhumed's 2D content (minus the programmatic textures.) 2021-04-30 20:08:36 +02:00
Christoph Oelckers
5b54e9c1ad - removed the 26 factor from Duke's par times.
What were they thinking?
2021-04-30 20:08:36 +02:00
Christoph Oelckers
5959543380 - hooked up SW's intermission handling. 2021-04-30 20:08:36 +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
cd1306dd05 - fixed mapinfo array.
Due to reallocations it must be an array of pointers.
2021-04-30 20:08:34 +02:00
Christoph Oelckers
eaf5e1fba5 - Cutscene support in Blood.
Intro tested, rest to do.
2021-04-30 20:08:34 +02:00
Christoph Oelckers
869dbd70e5 - fixed the design by merging the episode start handler into ShowIntermission.
Tying the start-of-episode cutscene to the cluster does not really work because it gets triggered by all maps of the cluster.
All currently existing intro cutscenes are tied to the map anyway.
Also correcting transition movie name for RRRA E2L1.
2021-04-30 20:08:34 +02:00
Christoph Oelckers
cdccdec3e7 - final cleanup on new cutscene interfacw
* fixed frame gaps when exiting a cutscene. This must be properly synchronized with the state handler in the main loop.
* reactivated the loading screens. With texture precaching working the delay when loading a map becomes significant enough to require a visual feedback.
* RR does not play 'bonusmusic' on its summary screen.
2021-04-30 20:08:34 +02:00
Christoph Oelckers
ad01aee5ec - fixed RR summary screen 2021-04-30 20:08:33 +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
06abc0cfe2 - removed debug output and fixed fade flag setup and missing OnTick return 2021-04-30 20:08:33 +02:00
Christoph Oelckers
26a7700579 - Duke's intro works, without fading. 2021-04-30 20:08:32 +02:00
Christoph Oelckers
1166b00af2 - switched intro movie playing over to the new system
Not tested yet.
2021-04-30 20:08:32 +02:00
Christoph Oelckers
af8d06994a - implemented the scripting interface layer. 2021-04-30 20:08:32 +02:00
Christoph Oelckers
ef6d8c2c67 - added cutscene definitions for Duke and finalized the definecutscene parser. 2021-04-30 20:08:32 +02:00
Christoph Oelckers
021f1b7832 - make SummaryInfo a struct instead of passing a list of values to the script classes. 2021-04-30 20:08:32 +02:00
Christoph Oelckers
e05f900315 - added the data structures to hold the cutscene data. 2021-04-30 20:08:31 +02:00
Christoph Oelckers
21aa5c9234 - added game flags for all supported add-ons. 2021-04-30 20:08:31 +02:00
Christoph Oelckers
88dfb93865 - redid Duke cutscene code to use functions, not classes as exports and added the missing screens.
Functions are better because they allow doing more in the internal setup code.
2021-04-30 20:08:31 +02:00
Christoph Oelckers
b515543016 - added varargs pushv function to Array<int>.
We'll need this for the ANM sound arrays.
Support for other array<> types to be done later.
2021-04-30 20:08:30 +02:00
Christoph Oelckers
66799d9a6d - more screen job setup work.
* interface for movie player done.
* first cutscene definition done.
* all converted classes removed from C++ code.
2021-04-30 20:08:30 +02:00
Christoph Oelckers
4ff2010bd1 - moved the entire screen job management to the script side.
This isn't hooked up yet and lots of code is commented out, the games won't start with this commit.
2021-04-30 20:08:30 +02:00
Christoph Oelckers
d853b63a1a - RR summary screen 2021-04-30 20:08:29 +02:00
Christoph Oelckers
c07fcbee08 - migrated level summary screen. 2021-04-30 20:08:24 +02:00
Christoph Oelckers
4636a52699 - MP summary screen ported. 2021-04-30 20:08:24 +02:00
Christoph Oelckers
7fbe153ae7 - more Duke screen porting. 2021-04-30 20:08:24 +02:00
Christoph Oelckers
b0163ff729 - made the end of E1 cutscene a bit more scripting friendly. 2021-04-30 20:08:24 +02:00
Christoph Oelckers
e75f0c17e4 - ported the TitleScreen class. 2021-04-30 20:08:23 +02:00
Christoph Oelckers
1022564cab - initial framework for scriptification of screen jobs. 2021-04-30 20:08:23 +02:00
Christoph Oelckers
4a7430c8e4 - got rid of JobDesc. 2021-04-30 20:08:23 +02:00
Christoph Oelckers
805b91b721 - put ScreenJobRunner declaration into header. 2021-04-30 20:08:23 +02:00
Christoph Oelckers
71e5f9b70f - changed screen job list to work without per-job completion callbacks.
They made things more complex than necessary and do not translate well to scripting.
2021-04-30 20:08:22 +02:00
Christoph Oelckers
fb5e2fe0c0 - use flags instead of bools. 2021-04-30 20:08:22 +02:00
Christoph Oelckers
af3eac8456 - simplified screen job setup where all elements can be skipped in one go. 2021-04-30 20:08:22 +02:00
Mitchell Richters
9bebd7fabf - Remove max ammo fudging for when showing the magazine amount for Duke since it overrides ammo maximums set from CON. 2021-04-26 12:35:07 +10:00
Christoph Oelckers
aa6bd8ffcc - factor in angoff when placing sprites. 2021-04-25 11:58:03 +02:00
Christoph Oelckers
8c379f7a44 Merge branch 'master' into newrenderer 2021-04-25 11:33:47 +02:00
Christoph Oelckers
79875d44e0 - moved MD4 calculator out of backend.
Only map hacks use MD4, this does not need to be shared.
2021-04-25 11:33:38 +02:00
Christoph Oelckers
dca964444b - backend fixes from GZDoom. 2021-04-25 11:32:50 +02:00
Christoph Oelckers
ad28630df6 - offloaded map patches to data files.
This is a lot easier to manage than having them in the code.
For now it piggybacks on the map hack feature, later this should use the same scripted approach as GZDoom.
2021-04-24 23:07:35 +02:00
Christoph Oelckers
a7046eaee4 - fixed animations on skies.
Lunatic Fringe made this very obvious.
2021-04-24 20:04:02 +02:00
Christoph Oelckers
5585351c0f - added a hack to help the new renderer with Lunatic Fringe.
This is by no means a permanent solution but having it buys some time to find something more universal that won't affect performance too badly and investigate the need for a more robust solution.
The idea here is to define pairs of walls where when the first element of the pair is seen, it will treat the second one as view blocking.
This is used as the two offending windows (sectors 151 and 152) to cope with the lack of a height sensitive clipper.
2021-04-24 20:00:54 +02:00
Christoph Oelckers
be08a2f800 - clipper rework
* let the clipper work on relative angles to simplify the math.
* properly initialize the initial visible range and preserve it for multiple invocations.
* track the maximum visible angular range per sector. While possibly not sufficient to handle every edge case imaginable it has low overhead and is still useful to eliminate obvious cases that do not need more complex checks. It is enough to fix the blue door in Duke E3L4.
* removed unused elements of the clipper.
2021-04-24 12:08:38 +02:00
Christoph Oelckers
c05df44ad4 - fixed the check for RR's geometry effect.
This always got triggered for Duke which made the entire map render 3 times. The most obvious effect was reduced translucency.
2021-04-23 21:36:51 +02:00
Christoph Oelckers
3ad4a869c1 - handle the case that a deleted sprite has inserted its bogus sector reference into the clip list.
We got one report of Blood crashing on this.
2021-04-23 20:11:46 +02:00
Christoph Oelckers
3766c5aed0 - restored original palette handling for access cards that got broken in 242f958c41
Unlike all the other HUD sprites this one works differently.
2021-04-23 19:36:55 +02:00
Christoph Oelckers
bf23d6c3b0 - corrected level number for RR's summary screen. 2021-04-23 16:07:04 +02:00
Christoph Oelckers
53e698e707 - 0.10.0 2021-04-22 22:03:50 +02:00
Christoph Oelckers
db7527fa43 - fix sky palette in Polymost mode. 2021-04-22 22:03:16 +02:00
Mitchell Richters
6fca2de7f3 - Fix clocking of timer when doing cumulative loads in loaddefinitionsfile(). 2021-04-22 18:57:41 +10:00
Mitchell Richters
8e53489487 - Remove some leftover stuff from gamecontrol.h. 2021-04-22 18:53:14 +10:00
Mitchell Richters
733f4f7aea - Move all the timing code from LoadDefinitions() to loaddefinitionsfile() 2021-04-22 18:50:49 +10:00
Mitchell Richters
27767f61ae - Move for (auto& m : *userConfig.AddDefs) loop from loaddefinitionsfile() into LoadDefinitions() and rework debug timer code to accommodate.
* Change also reverts 5af7be42a2.
2021-04-22 16:33:45 +10:00
Mitchell Richters
c0e5599478 Merge branch 'master' into newrenderer 2021-04-22 08:58:26 +10:00
Mitchell Richters
ab4c18a73a - processMovement(): Remove attenuation of hidInput->dyaw that was missed when scaling was removed from backend in 44e4c5ff78. 2021-04-22 08:58:17 +10:00
Mitchell Richters
5af7be42a2 - LoadDefinitions(): Remove if statement added in 1ea25e5d0e that was causing added DEF files not to load.
* The loop for `userConfig.AddDefs` feels like it should be moved out of `loaddefinitionsfile()` and into `LoadDefinitions()`, but that's subject to discussion.
2021-04-22 08:44:59 +10:00
Christoph Oelckers
14971f9569 Merge branch 'master' into newrenderer 2021-04-22 00:10:37 +02:00
Christoph Oelckers
729928c576 - SW: fixed bad serialization of sector object pointers 2021-04-22 00:03:18 +02:00
Christoph Oelckers
a4f5a32680 - fixed issue with restoring SO sprite array.
This array has -1 for empty entries so it cannot be saved partially.
2021-04-22 00:03:17 +02:00
Christoph Oelckers
c3e5cf322e - SW: cleaned up the depth variable handling in SECT_USER which was endian dependent, including the savegame handler 2021-04-22 00:03:17 +02:00
Christoph Oelckers
c17ec5fa45 - cleanup of savegame framework 2021-04-22 00:03:17 +02:00
Christoph Oelckers
97d8aee2e8 - savegame code cleanup. 2021-04-22 00:03:17 +02:00
Christoph Oelckers
b85da221d7 - SW: save tracks as JSON. 2021-04-22 00:03:17 +02:00
Christoph Oelckers
bb8309831c - SW: eliminated the int pointer in ANIM.
# Conflicts:
#	source/games/sw/src/save.cpp
2021-04-22 00:03:16 +02:00
Christoph Oelckers
c49c5fcf1d - SW: serialize SO interpolations as JSON. 2021-04-22 00:03:16 +02:00
Christoph Oelckers
2d571586bd - save sector objects as JSON 2021-04-22 00:03:16 +02:00
Christoph Oelckers
e9b1342ffd - SW: save globals as JSON. 2021-04-22 00:03:16 +02:00
Christoph Oelckers
66e5b9ada7 - SW: save SectUser as JSON, also store in a managed array. 2021-04-22 00:03:16 +02:00
Christoph Oelckers
06b03f7301 - SW: save the player and related data as JSON. 2021-04-22 00:03:15 +02:00
Christoph Oelckers
9bae2295cc - better USER clearing. 2021-04-22 00:03:15 +02:00
Christoph Oelckers
8fee2b3ed7 - save SW's User array as JSON. 2021-04-22 00:03:15 +02:00
Christoph Oelckers
32955621f8 - removed all parental lock garbage from SW.
Better get rid of it as it's a major complication as implemented.
2021-04-22 00:03:15 +02:00
Christoph Oelckers
bbb53bc717 - refactored the main User array into something that's automatically managed. 2021-04-22 00:03:14 +02:00