Commit graph

1604 commits

Author SHA1 Message Date
Christoph Oelckers
a5f51cfd88 - SW: migrate everything to the main clipmove function 2021-11-08 23:11:30 +01:00
Christoph Oelckers
5ba005276f Revert "- redid the 'inside' function."
This reverts commit c034c2a299.

While the function works, it is subtly different for points exactly on a line - enough to cause problems with Shadow Warrior's waypoint implementation.
2021-11-08 23:11:20 +01:00
Christoph Oelckers
c034c2a299 - redid the 'inside' function.
This is based on external information and does not use any of the original Build code.
Despite being a lot clearer than Build's bit masking voodoo and using 64 bit math to avoid overflows it is roughly 10% faster. :)

Code was moved to gamefuncs.cpp because this no longer falls under the Build license.
2021-11-08 21:29:21 +01:00
Christoph Oelckers
eeaa7f98f0 - inlines for validating sector and wall indices. 2021-11-08 18:56:10 +01:00
Christoph Oelckers
5d0c9a9fc8 - flush the network timer righr after loading and before starting a level.
Without this the entire load time may get registered as skipped frames-
2021-11-07 22:51:02 +01:00
Christoph Oelckers
60faceaf59 - Exhumed: fixed serialization.
The exhumedActors array was not written out, resulting in all kinds of strange effects.
2021-11-07 21:45:51 +01:00
Christoph Oelckers
6b6c3f26a5 - use wallsofsector in a few more places. 2021-11-07 18:08:22 +01:00
Christoph Oelckers
59df3b0e19 - added a little utility that allows iterating over the walls of a sector with C++ for's. 2021-11-07 17:27:05 +01:00
Christoph Oelckers
ae08ae1d8d - some leftover shorts plus utilities that ended up unused but may be useful later. 2021-11-07 16:46:23 +01:00
Mitch Richters
bb20827027 - processMovement(): Fix prescaling for Exhumed when using mouse or controller.
* Controller input before was too fast compared to other games, now it's 1:1.
* Mouse input when used without mouse look was too slow, now it's also 1:1 with the other games.
* `hid` in the context of `hidprescale` refers to 'Human Interface Device'.
2021-11-07 18:32:02 +11:00
Mitch Richters
b27f5e3be0 - gameinput.cpp/h: Internalise if statements used before calling PlayerHorizon and PlayerAngle class method scaletozero() into method itself. 2021-11-07 18:25:37 +11:00
Mitch Richters
72531e61db - gameinput.cpp/h: Consolidate all the return to zero code for angles and horizons into class members, using technique from horizoff as basis. 2021-11-07 11:37:12 +11:00
Christoph Oelckers
d20aa47adf - made sector parameter of updatesectorz an int and deprecated the short version. 2021-11-06 19:27:51 +01:00
Christoph Oelckers
83fe41e71e - made updatesector receive a 32 bit int pointer and deprecated the 16 bit variant. 2021-11-06 15:53:16 +01:00
Mitch Richters
a2a75fccc2 - Add support for Duke Nukem's Penthouse Paradise as shipped with the Zoom release of Duke Nukem 3D Atomic. 2021-11-06 23:26:56 +11:00
Mitch Richters
8cf115c444 - searchpaths.cpp: Patch in registry detection for Duke 3D Atomic + Expansions from Zoom on Windows.
* Fixes #567.
2021-11-06 22:59:56 +11:00
Mitch Richters
5050947dca - PlayerAngle::applyinput(): Consolidate some mostly duplicated code into a lambda. 2021-11-06 17:57:00 +11:00
Mitch Richters
1bb0c04e61 Revert "- Blood: Add mechanism to be able to force QAV interpolation based on picnum for testing purposes and not for end-user usage."
This reverts commit 276c000f9f.

* This was added for testing/debugging etc but it really doesn't work unless the QAV is built for it. As such, just get rid of it.
2021-11-06 17:32:55 +11:00
Mitch Richters
ed67d5d395 - PlayerHorizon::applyinput(): Only run through all the horizon to pitch and back code if we have input to process. 2021-11-06 15:34:10 +11:00
Mitch Richters
5f8c8fe0a4 - PlayerHorizon::applyinput(): Consolidate some mostly duplicated code into a lambda. 2021-11-06 15:07:28 +11:00
Mitch Richters
7499c84d0b - Add interpolatedhorizon() inlines to handle interpolating fixedhoriz objects without having to convert old and new values back to Q16.16 first. 2021-11-06 14:07:58 +11:00
Mitch Richters
5ec5321034 - gameinput.h/cpp: Abstract the angle/horizon adjustment math into a few inlines to avoid repetition and having to cast enums as doubles for C++20 compliance. 2021-11-06 14:07:53 +11:00
Mitch Richters
4c02663842 - PlayerAngle::applyinput(): Re-add addition of +/- 1. when returning rotscrnang to 0 lost long, long ago. 2021-11-06 14:07:36 +11:00
Mitch Richters
ab99b6b29d - PlayerHorizon::calcviewpitch(): Make returning horizoff to 0 speed uniform across all games. 2021-11-06 13:31:29 +11:00
Mitch Richters
91f6b2954c - binangle class: Tidy up missed C++20 warning fixed about enum used in floating-point arithmetic. 2021-11-06 10:27:04 +11:00
Mitch Richters
0eb4ff4ad2 - PlayerHorizon::calcviewpitch(): Provide commentary on how numeric literals used in function came to be and place into an enum for clarity. 2021-11-06 10:27:00 +11:00
Mitch Richters
1df2ba80ed - PlayerAngle::applyinput(): Provide commentary on how numeric literals used in rotscrnang/look_ang/spin math came to be and place into an enum for clarity. 2021-11-06 10:26:54 +11:00
Mitch Richters
8e8dfa9f9a - PlayerHorizon::applyinput(): Provide commentary on how numeric literals used in aim/look up/down and return to centre math came to be and place into an enum for clarity. 2021-11-06 09:30:03 +11:00
Mitch Richters
c424f7c8dd - processMovement(). Remove cl_exhumedoldturn CVAR and tidy up numeric literals in use.
* In our older codebase before the input code was refactored, Exhumed's turning was broken and was only applying the base factor of 12, significantly slower than the other games.
* Upon doing some testing in PCExhumed, I noticed their turning was faster as when the counter meets its target, the turn value is shifted left by 2, effectively making it 48: b90417ed8e/source/exhumed/src/player.cpp (L336-L337)
* Removed this CVAR because of this.
* Reworked turning code so that pressing left+right together cancel each other out and that pressing both doesn't call `updateTurnHeldAmt(scaleAdjust)` twice.
* Redid turn averages factoring in Exhumed's speeds, rounded off values and stored in an enum for clarity.
2021-11-06 09:28:47 +11:00
Christoph Oelckers
389f760d45 - address C++20 deprecation warnings with enums in floating point arithmetic. 2021-11-02 23:32:31 +01:00
Christoph Oelckers
86166f5e67 Revert "- xs_Float.h: Make all inlines return an unsigned value, and change previous unsigned inlines to signed."
Revert "- `xs_Float.h`: Add `getint()` getter to `_xs_doubleints` struct."
Revert "- SW: When adjusting horizon in `DoPlayerDeathHoriz()`, just use integer horizon values and not Q16.16."
Revert "- Duke (RR): Clean up some unnecessary `FixedToFloat()` usage with the `fixedhoriz` `asbuildf()` method."
Revert "- `binaryangle.h`: Use `constexpr` on inline functions where it was previously not possible to do so."
Revert "- `m_fixed.h`: Use `constexpr` on inline functions where it was previously not possible to do so."
Revert "- `xs_Float.h`: Convert header to `constexpr`."

This does nor work as it violates the constexpr rules for unions. The code will error out on compilation for accessing an inactive member of a union.
2021-11-01 20:25:38 +01:00
Mitch Richters
f3a2de92a4 - binaryangle.h: Use constexpr on inline functions where it was previously not possible to do so. 2021-11-01 23:37:31 +11:00
Mitch Richters
eb8b075727 - binaryangle.h: Change binangle bitshift operators to operate on signed value to properly handle angles > 1024. 2021-11-01 22:13:39 +11:00
Mitch Richters
0fe5ac6a56 - gameinput.h: Correctly use targetset() in PlayerHorizon and PlayerAngle structs. 2021-10-30 17:30:01 +02:00
Mitch Richters
15c4d38694 - gameinput.h: Add initial structure for PlayerPosition as companion to PlayerAngle and PlayerHorizon structs. 2021-10-30 17:30:01 +02:00
Mitch Richters
7ee4f49649 - gameinput.h: Remove some of the verticality from the PlayerHorizon and PlayerAngle structs. 2021-10-30 17:30:01 +02:00
Christoph Oelckers
6e0fbb2043 - removed templates.h includes. 2021-10-30 10:51:03 +02:00
Mitch Richters
b02a6a3ec9 - Replace MIN() from templates.h with version provided in STL. 2021-10-30 10:36:15 +02:00
Mitch Richters
9894729fc2 - Replace MAX() from templates.h with version provided in STL.
# Conflicts:
#	source/common/textures/hw_ihwtexture.cpp
#	source/common/utility/templates.h
2021-10-30 10:36:02 +02:00
Christoph Oelckers
57b638f26f - use std::clamp instead of our homegrown version. 2021-10-30 10:35:00 +02:00
Mitch Richters
879e2f3ce4 - Build: Promote sintable[] array values to precision Blood uses in prep for replacing Blood's costable[]. 2021-10-30 10:24:15 +02:00
Mitch Richters
3663c4c742 - Split out sine/cosine scaling from bsinf() and bcosf() into its own inline. 2021-10-30 10:24:14 +02:00
Mitch Richters
07fc3b77b1 - Privatise tosigned() method in binangle class. 2021-10-30 10:24:14 +02:00
Christoph Oelckers
f1b40b7878 - bumped savegame version for Exhumed. 2021-10-28 18:59:40 +02:00
Christoph Oelckers
c7d4779b7e - fixed some warnings. 2021-10-26 18:54:43 +02:00
Christoph Oelckers
1214f8ba00 - properly macro-fy parsed strings from Blood's INI. 2021-10-19 21:49:03 +02:00
Christoph Oelckers
d2beee587d - updated version.h. 2021-10-14 22:50:12 +02:00
Christoph Oelckers
562968262c - moved spriteMass into DBloodActor 2021-10-14 19:01:10 +02:00
Christoph Oelckers
62d0d3712e - use a sprite flag to mark mapped sprites.
This avoids another global array which needs to be addressed by sprite index.
2021-10-14 15:09:43 +02:00
Christoph Oelckers
8d9d3d5f8f - disabled palette emulation for the GLES backend.
Right now the shader does not support it and will require significant redesign to work well with the target hardware.
2021-10-13 00:09:18 +02:00
Christoph Oelckers
ff0c4359e0 - deleted unused inlines. 2021-10-11 23:03:11 +02:00
Hugo Locurcio
91ce22931d Add cvars to control automap line alpha and thickness
This can be used to improve automap readability on high-resolution
displays.
2021-10-11 22:30:39 +02:00
Christoph Oelckers
83944a7191 - fixed uninitialized light index variable for floor sprites. 2021-10-11 22:28:26 +02:00
Christoph Oelckers
29769dd673 - fixed engine code warnings pointed out by XCode 13. 2021-10-08 19:06:41 +02:00
Christoph Oelckers
0d4e0d72fb - fixed vertex generation when splitting walls by planes on old hardware. 2021-09-18 13:04:46 +02:00
Christoph Oelckers
e8187b4a99 - fixed bad serializers for vec2_t and vec3_t. 2021-09-12 18:42:58 +02:00
Christoph Oelckers
7f485bfab1 - split off the extended sprite flags into their own word.
Some code overwrites the cstat field entirely (thanks Duke, for being sloppy with this...!)
2021-09-12 18:26:35 +02:00
Christoph Oelckers
99ecfe133d - flag sprites for automapping regardless of the 'automapping' variable's value.
Duke should show its floor sprites, too.
2021-09-12 18:22:38 +02:00
Kevin Caccamo
2297c9351a Attempt to fix music replacement definitions again
Store per-map music replacements in a TMap, and perform the replacements after parsing the MAPINFO
2021-09-12 18:21:42 +02:00
Christoph Oelckers
6dcd7e2557 - do not crash on badly defined walls where the end point is missing. 2021-09-12 18:18:26 +02:00
Mitchell Richters
37f8fc8b0d - Allow disabling of load screens like how they were before the move of ScreenJob from native code to ZScript. 2021-08-26 10:34:00 +10:00
Mitchell Richters
f44d695245 - Fix some warning messages in the defineqav DEF parser. 2021-08-26 10:33:24 +10:00
Mitchell Richters
fd149e50ee - Remove early return from GrpScan() that was allowing addons to come through even if they weren't valid.
* Raze configured to only search $PROGDIR with a single `worldtour.grp` file would attempt to autoload even if its dependency CRC wasn't present. Attempted to re-arrange function but had mixed results. Removing this early return is what worked under all test cases.
2021-08-24 20:56:28 +10:00
Mitchell Richters
276c000f9f - Blood: Add mechanism to be able to force QAV interpolation based on picnum for testing purposes and not for end-user usage. 2021-08-23 20:54:30 +10:00
Mitchell Richters
a920fc5aef - Add support for first and last keyword for defineqav parser when process interpolate ignore block. 2021-08-23 15:34:30 +10:00
Mitchell Richters
23be5ffe8c - Add support for all keyword for defineqav parser when process interpolate ignore block, and ensure the lowest value can't be below 0. 2021-08-23 15:06:04 +10:00
Mitchell Richters
e68b793852 - Add some extra safety to defineqav parser to ensure some unsupported actions can't be performed. 2021-08-23 14:19:33 +10:00
Mitchell Richters
ddc7b3d730
Merge branch 'master' into master 2021-08-23 11:40:05 +10:00
Mitchell Richters
1ee6fd76c4 Merge branch 'blood-qavrework'
# Conflicts:
#	source/core/gamecvars.cpp
#	source/core/gamecvars.h
#	source/games/blood/src/weapon.cpp
2021-08-23 11:02:09 +10:00
Mitchell Richters
d7450e12f0 - Blood: Re-add interpolated weapon QAVs in an externalised, disabled-by-default fashion. 2021-08-23 10:55:08 +10:00
Mitchell Richters
916241dcdb - Blood: Implement defineqav DEF parser with hookup to game-side code. 2021-08-23 09:00:47 +10:00
Mitchell Richters
f67a09680e - Blood: Rename CVAR cl_bloodhudinterp to cl_bloodqavinterp. 2021-08-21 19:55:02 +10:00
carnivoroussociety
db9a413f21 Added new cl_bloodvanillaenemies CVAR
GetClosestSpriteSectors(): If newSectCheckMethod is set, then always test midpoints at least once
Use new CVAR for tiny Caleb/burning cultists/Cerberus fixes
Do not use new GetClosestSpriteSectors() fix for teslaHit() if vanilla explosions is set
Do not use GetClosestSpriteSectors() fix for enemies sight scanning if vanilla enemies is set
2021-08-19 14:26:53 +10:00
carnivoroussociety
6606f0bc5a Improved GetClosestSpriteSectors() detection
Enables/disables new sector searching behavior for dude owned explosions
Added new CVAR cl_bloodvanillaexplosions
Swap ExplosBehavior menu settings
2021-08-18 15:52:15 +02:00
Christoph Oelckers
a5e3a85c98 - changed palette lookup to consider the remapping of color 0 to 255.
This is to ensure that black maps to the proper index, even if there's duplicates.
2021-08-14 10:26:04 +02:00
Christoph Oelckers
bad2c2e55f - backend update from GZDoom
* replacement of 'long' in string code.
* palette removal in V_GetColor.
* fixes to DShape2D buffer management.
2021-08-14 10:04:45 +02:00
Christoph Oelckers
5d3f7947bf - avoid calling the node builder to triangulate degenerate sectors.
This tends to crash.
2021-08-14 09:48:05 +02:00
Christoph Oelckers
5aa27bad3b - flag SW's cutscenes as 'boss death only'. 2021-08-13 22:25:13 +02:00
Mitchell Richters
4a70f6efd0 - Allow ticrate to be specified to timer code, while still defaulting to GameTicRate. Move out I_GetBuildTime() from common code to gamefuncs.h as part of this.
* Allow specification of floating point ticrates as it's possible Blood's QAVs could have a fractional ticrate.
2021-08-05 14:52:55 +10:00
Mitchell Richters
17b2154e9a - Blood: Expose legacy 1.0 weapon handling game option as a CVAR. 2021-08-03 00:47:05 +10:00
Mitchell Richters
a9b75e7e7d - Blood: Put QAV interpolation code behind a CVAR for now until some final minor issues are resolved.
* Thanks to Dzierzan for testing and the reports.
2021-07-31 10:15:51 +10:00
Mitchell Richters
f6c7ed3984 - Blood: Restore originally intended isRunning code that never worked behind two CVARs to offer an alternative playing experience.
* `cl_bloodvanillarun` enables/disables the `isRunning` code that affects AI, bobbing and swaying.
* `cl_bloodvanillabobbing` enables/disables the `isRunning` code that affects bobbing and swaying, allowing only the `isRunning` AI changes.
2021-07-31 10:14:56 +10:00
Mitchell Richters
a67c126129 - Blood: Extend 99508e6f15 to find picnum of previous frame in all previous frame's tile indices if the current frame's tile index doesn't match.
* Allows more interpolation magic.
* Revealed an issue with `interpolatedanglef()` that was undetected. Removed in place of a binangle version returned as floating point build.
2021-07-29 19:23:00 +10:00
Mitchell Richters
019922dcf1 - Fix constexpr issue with interpolatedanglef() since fmod() isn't available as constexpr. 2021-07-29 18:38:07 +10:00
Mitchell Richters
99508e6f15 - Blood: Perform interpolation between frames for each tile coordinate when there is more than one frame and the picnum between frames match. 2021-07-29 17:39:22 +10:00
Christoph Oelckers
bd23ea144c - validate 'nextsector' fields on walls.
Build utterly relied on the map having these right and put the entire responsibility on the mapper.
There's maps, however which have bad values here causing either render glitches or crashes so these bad indices need to be fixed.
Two good examples where this causes problems are RR's E3L1 and the second map of SW's Last Warrior mod where this even glitches in Polymost.
2021-07-27 22:12:29 +02:00
Christoph Oelckers
1fde9f2173 - workaround to allow playing SW's Last Warrior mod in one go.
This disables the boss's death in L4 ending the game and just advances to the next level.
This seems to be the intent with this mod as the second episode starting at L5 is not defined and the first episode's subtitle advertises the full game.
2021-07-26 00:58:00 +02:00
Christoph Oelckers
a12dfbe1d8 - fixed bad operator grouping in cheat code. 2021-07-25 17:17:29 +02:00
Christoph Oelckers
5c5799c21f - quote argument for sending cheats from the chat editor. 2021-07-25 12:48:27 +02:00
Christoph Oelckers
dfb18ef9a9 - Duke/RR: Call Bowling lane reset code only when playing RR.
This may alter some tile references which will cause problems with hires replacements in Duke .
2021-07-25 12:43:03 +02:00
Christoph Oelckers
3864dcfc17 - adapted cheat input handler to treat spaces as '0' when entering parts of numeric fields. 2021-07-25 11:59:12 +02:00
Mitchell Richters
ef05eec531 - Change a68d5aae70 to not do a leading zero, but add an extra space of frameDelay less than 10.
* Thanks, Graf. It's better :)
2021-07-24 17:51:14 +10:00
Christoph Oelckers
8e8b3a32fe - fixed initialization pf upscale state properly.
This avoids indirectly calling FlushAll during startup.
2021-07-24 09:10:21 +02:00
Mitchell Richters
a68d5aae70 - Add leading zero to statFPS() output (vid_fps) so that the text doesn't bounce continually when alternating between 10 ms and <10 ms. 2021-07-24 15:40:47 +10:00
Mitchell Richters
c5f63b95e5 - Capitalise CPART07.AR_ and CPART15.AR_ in ProcessOptions(). The original files are in capitals and this is important as POSIX systems are case-sensitive. We can't cater towards every use-case but this should cover most bases.
* Fixes #308.
2021-07-20 19:06:45 +10:00
Mitchell Richters
675356be1a - Ensure g_nextskill is used everywhere so that setting skill for next level works properly. 2021-07-20 18:51:34 +10:00
Mitchell Richters
33845c4a23 - Add skill CCMD to return player's current skill, while also being able to set skill for next game.
* Fixes #332.
2021-07-20 18:50:58 +10:00
Mitchell Richters
77630dcbc7 - Rename DeferedStartGame() to DeferredStartGame(). 2021-07-20 18:43:17 +10:00
Mitchell Richters
4ac1376b9f - Make naming of multiplayer episode exclusion stuff from d0e6a7ea29 more generic and exclude invalid episodes from "Duke It Out in DC", "Duke Nuclear Winter" and "Duke Caribbean". 2021-07-19 12:24:47 +10:00
Mitchell Richters
ca65c4c9da - Allow ticker to lock input to player's angle and horizon without having to force use of synchronised input. 2021-07-18 19:25:41 +10:00
Christoph Oelckers
4ee93de36c - added 'endofgame' CCMD.
Not really good yet, but it does what's needed, i.e. write out the statistics for the current session.
2021-07-17 09:42:59 +02:00
Mitchell Richters
d77e143ee8 - allow palette emulation for indexed hightiles. 2021-07-17 07:40:13 +10:00
Christoph Oelckers
3e76f71f02 - support for indexed hightiles. 2021-07-17 07:40:05 +10:00
Mitchell Richters
d0e6a7ea29 - Allow CON-based games to have multiplayer episodes filtered from menu.
* Fixes #461.
* Fixes #462.
2021-07-16 20:55:29 +02:00
Christoph Oelckers
e3737d3330 - fixed texture lookup for hightile lookup.
Not all commands had the proper flags to also look in the root folder.
2021-07-13 08:38:24 +02:00
alexey.lysiuk
577c6cb374 - fixed crash when parsing malformed .def file
This fixes #439
2021-07-11 10:16:26 +03:00
Mitchell Richters
3e30869aeb - Remove some remains of Redneck Deer Huntin'. 2021-07-11 12:44:31 +10:00
Mitchell Richters
32283037ed - Use isWW2GI() in more places. 2021-07-11 12:42:33 +10:00
Mitchell Richters
fe652c9348 - Use isNamWW2GI() in more places. 2021-07-11 12:41:08 +10:00
Mitchell Richters
aa13b50504 - Use isRR() in more places. 2021-07-11 12:40:46 +10:00
Mitchell Richters
6894be4ad1 - Use the new isSWALL() wrapper everywhere. 2021-07-11 12:40:01 +10:00
Mitchell Richters
ffba10a7c5 - SW: Set default skill level to match original release and what the manual says is default. 2021-07-11 12:08:12 +10:00
Mitchell Richters
b5b9452adb - Optimise fFindDistance2D() to multiply by inverse rather than divide by a constant. 2021-07-10 22:08:48 +10:00
Mitchell Richters
5d7938c24e - SW: Rename cl_smoothsway to cl_swsmoothsway and enable by default 2021-07-10 22:07:05 +10:00
Christoph Oelckers
62a5a720e8 - Check for maps with bad setup of their wall lists.
Lo Wang In Time's map 11 does not include wall 0 into its sector, which caused crashes when trying to triangulate this sector.
2021-07-06 10:29:24 +02:00
Christoph Oelckers
e5cb1976d3 - disable texture name truncation for textures/ directory.
Unlike Doom, a similar limit does not exist here and must not be enforced. Any texture from this folder needs to be usable by its full name without extension to be able to replace named tiles.
2021-07-05 22:39:24 +02:00
Christoph Oelckers
2af2d29084 - add hitscan only autoaim for SW. 2021-06-26 12:18:27 +02:00
Christoph Oelckers
e9b2bf9e4e - shortened the message for not found game data and restrict to non-Windows systems. 2021-06-26 12:10:46 +02:00
Hugo Locurcio
a10018bc36 Display game data path when no game data files are found
This helps users find the location where they should place
game data files.
2021-06-26 12:06:35 +02:00
Christoph Oelckers
0f7d3d0cbb - streamlined and fixed game startup with '-map' option.
* Blood: Initialize global pointers in app_init so that they are not NULL.
* consider Mapinfo data when checking for a given level name.
* removed redundant level name output.
2021-06-26 10:11:50 +02:00
Christoph Oelckers
63bc36e3c4 - renamed some constants.
Manually copied from NBlood because the underlying code has changed too much already.
2021-06-24 14:14:16 +02:00
Mitchell Richters
acadd716f8 - For Unix systems, ensure that the root of the player's .config directory is scanned for content, not just subdirectories.
* Fixes #430.
2021-06-24 20:47:14 +10:00
Mitchell Richters
39983f8144 - Fix maps loaded from the command line starting with corrupted sectors.
* Starting game same way `map` CCMD does it for now.
2021-06-24 18:50:10 +10:00
Mitchell Richters
9645009b28 - Fix -map command-line argument not working.
* Fixes #441.
2021-06-24 18:49:26 +10:00
Emile Belanger
b6e76337e0 Fix so small font is displayed correctly 2021-06-20 16:34:26 +02:00
Christoph Oelckers
0069af02e7 - use a slightly higher depth bias for translucent elements.
These can otherwise cause z-fighting when being used with non-translucent floor and wall sprites.
2021-06-13 09:39:07 +02:00
Christoph Oelckers
5556756d43 - map fix for Hickston Swamp (RR mod) E1L3:
Wall sprite is placed in the wrong sector which makes the new renderer's far stricter checks to reduce sprite flicker fail to position it correctly.
2021-06-13 09:32:30 +02:00
Christoph Oelckers
15635ec7c8 - fixed crash when trying to triangulate broken sectors.
In these cases it is possible that the wall index may go below 0.
2021-06-11 23:18:46 +02:00
Christoph Oelckers
1cea743536 - restrict lookup of engine/engine.def to the main game files.
Mods should not use this to load their data.
2021-06-09 08:38:40 +02:00
Christoph Oelckers
9d36e61d3f - depth bias fixes. 2021-06-09 00:47:13 +02:00
Christoph Oelckers
a32489be31 - wall sprite positioning tweaks.
Turns out that a distance of one Build unit from a wall alone is not enough to render them glitch-free, some depth bias is still needed.
2021-06-09 00:31:54 +02:00
Christoph Oelckers
207298aeb4 - fixed compilation (again.) 2021-06-02 21:00:39 +02:00
Christoph Oelckers
7fa690082e - fixed cherry picked commit.
# Conflicts:
#	source/core/gamecontrol.h
2021-06-02 20:52:47 +02:00
Christoph Oelckers
f96521a7f4 - fixed: Floor sprites must set their view orientation.
The translucent element sorter needs this to operate properly.
2021-06-02 20:32:35 +02:00
Christoph Oelckers
3c5ef9c8e6 - properly render geometry that's fully shrouded in fog. 2021-06-01 21:48:39 +02:00
Christoph Oelckers
f0d2aef9d9 - fixed hires replacements for colorized font characters. 2021-06-01 11:29:39 +02:00
Christoph Oelckers
454816299e - reorganized loading of textures.
Due to dependencies on initializing some data in app_init it was not possible to cleanly set up the fonts.
This adds a game-side function for loading the entire palettes before starting with the texture data and another one for loading game-side texture data.
This now allows fully setting up the palettes before starting with the textures and to fully set up the textures before reading the .def files.

All this is needed because to properly initialize, the fonts need to be able to access the fully initialized texture state, including replacements and hires substitutions from the .def files.
2021-06-01 11:05:26 +02:00
Christoph Oelckers
1636ddc00e - set the main resource file's index in the file system.
Some checks need this.
2021-05-31 21:20:32 +02:00
Christoph Oelckers
25e57763af - implemented substitution for incomplete fonts. 2021-05-31 21:20:32 +02:00
Christoph Oelckers
9c60ab791b - implemented all needed font overrides for localization. 2021-05-31 21:20:31 +02:00
Christoph Oelckers
d174b61c3c - allow switching between the two Duke BigFonts and fix Y in Duke's BigFont13. 2021-05-31 21:20:31 +02:00
Christoph Oelckers
90bcba302e - layout adjustments for localized texts.
In particular SW's main menu was far too tightly spaced, allowing no room for accents.
2021-05-31 21:20:31 +02:00
Christoph Oelckers
af781e0422 - moved all font setup out of the C++ code.
All internal fonts now get defined through FONTDEFS.
Also fixing a few offsets.
2021-05-31 21:20:31 +02:00
Christoph Oelckers
cd56fd66d2 - RR: fixed advanced notify display's font size.
At some point the scale multiplier must have gotten lost, which with the twice as large fonts in this game resulted in text being too large.
2021-05-31 21:20:28 +02:00
Christoph Oelckers
2b8a80c6ce - added the out-of-bounds vertex handler to the secondary triangulator as well.
If SW does this, triangulation must not be attempted as it will inevitably fail.
2021-05-29 13:19:44 +02:00
Christoph Oelckers
db21313c96 - add some hackery to deal with WT's bosses.
This was the result of some gross change to the spawning code which suddenly changed the rules about minibosses.
To reduce the impact, it is only enabled for the "Alien World Order" maps.
2021-05-29 13:12:50 +02:00
Christoph Oelckers
2e9732ce79 - fixed new renderer's use of fog on skies: The palette value from the wall was used instead of the one from the sky plane. 2021-05-29 12:09:16 +02:00
Christoph Oelckers
8fae793341 - defined a new constant, CR_NATIVEPAL, to use the font functions with a predefined palette.
This is mainly for code clarification, the value is the same as CR_UNDEFINED.
2021-05-29 11:47:05 +02:00
Christoph Oelckers
d44500863b - removed the multiplayer scoreboard screens.
Since there is no plan to keep them in case MP gets implemented there's no need to maintain them.
These should later be replaced by a generic screen using a better font and a layout that takes higher resolutions into account.
2021-05-27 13:33:54 +02:00
Rachael Alexanderson
fd97da05b7 - allow UNC search paths on Windows 2021-05-26 10:47:36 -04:00
Christoph Oelckers
4ff4fa643b - rewrote the default translation handling to be compatible with luminosity translations. 2021-05-25 12:59:09 +02:00
Christoph Oelckers
8b1757eee2 - got rid of most of the font system's baggage that's no longer needed.
Mainly this means that it's no longer necessary to reorder the palette to get working translated glyphs, so the FFontChar1 class and the TranslatedPic member and its invasive handling could all be cleaned out.
All font operations now take place on true color data, with the sole execption of FSpecialFont's 'notranslate' handling.
2021-05-25 12:59:09 +02:00
Christoph Oelckers
372d425e01 - use luminosity translations for single lump fonts and let them use their original palette. 2021-05-25 12:59:08 +02:00
Christoph Oelckers
377829d6a2 - let hex fonts use the luminosity translations. 2021-05-25 12:59:08 +02:00
Christoph Oelckers
0bab333f36 - redid font translation so that it doesn't need to crush the font characters' color set to the base palette.
Right now it creates a special type of luminance translation that can operate on a true color bitmap.
2021-05-25 12:59:08 +02:00
Christoph Oelckers
0b181c67b9 - don't skip lines when an empty one gets deleted. 2021-05-23 17:22:29 +02:00
Christoph Oelckers
f212421547 - don't let the triangulator choke on empty sectors. 2021-05-23 17:19:01 +02:00
Christoph Oelckers
8aed9063f8 - sector splitting hack for SW $bath.map. 2021-05-23 17:06:47 +02:00
Christoph Oelckers
572f45ca53 - delete lines in proper order when eliminating a pair.
Deleting the lower one first will delete the wrong second one.
2021-05-23 16:36:06 +02:00
Christoph Oelckers
b2545f8042 - PlayMusic script function. 2021-05-23 16:21:04 +02:00
Christoph Oelckers
d98a567597 - halt the game timer when setting up a cutscene and when starting movie playback.
These are both lengthy operations that can take several 100s of milliseconds, so when starting a streaming video they can throw off the timing quite significantly.
With this the intermissiondelay counter could be removed as it was only there to flush the accumulated time before starting video playback.
2021-05-23 14:36:54 +02:00
Christoph Oelckers
cc1def8d77 - fixed: When the node builder is used for triangulation, all zero-length lines must be eliminated first.
These can cause triangulation errors.
2021-05-23 09:16:30 +02:00
Brian Koropoff
bea0379830 Fix off-by-one error in group search
This could be hit when loading raze.pk3 from the build directory while
the file search path contains only one grp file
2021-05-23 08:51:32 +02:00
Brian Koropoff
9394ebe768 Resolve raze.pk3 via search paths
Linux installs typically don't have it next to the program binary
2021-05-23 08:51:32 +02:00
Christoph Oelckers
0c6e2f0c9e - silenced some warnings. 2021-05-22 15:34:04 +02:00
Christoph Oelckers
d7a47b2f3a - route all accesses to gameaction from the backend through the sysCallbacks.
gameactions are frontend specific so this needs to be decoupled.
2021-05-22 13:02:34 +02:00
Christoph Oelckers
5337513044 - ported GZDoom's subtitle drawer to the cutscene framework.
For later use, this isn't used yet.
2021-05-22 10:26:53 +02:00
Christoph Oelckers
f69fe334fc - removed duplicate variable. 2021-05-22 09:22:30 +02:00
Christoph Oelckers
0d793a59fd - moved the cutscene core to 'engine'.
More adjustments for making this code compatible with GZDoom.
2021-05-22 02:15:49 +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
264d42179e - optimized the wall drawer a bit to avoid repeated calls to the render API's deoth bias function.
The setters in FRenderState should check if the value actually changes and the wall drawer should only call it for non-translucent wall sprites.
2021-05-21 19:07:22 +02:00
Christoph Oelckers
4bb57cfab5 - fixed flickering floor sprites.
The SetDepthBias call was somehow gotten lost.
2021-05-21 19:03:39 +02:00
Christoph Oelckers
234f303348 - fixed typo in line segment culler. 2021-05-21 18:40:34 +02:00
Christoph Oelckers
f7a424cd06 - fixed precision issues with GetClosestPointOnWall for orthogonal lines.
The math failed for some large wall sprites (e.g. Blood E2M4, sprite #181), and in orthogonal cases it is better anyway to perform direct checks of the coordinates
2021-05-21 18:25:30 +02:00
Christoph Oelckers
b0cc5c14e2 - fixed bad argument count in ScreenJobRunner.Validate call. 2021-05-21 17:32:36 +02:00
Christoph Oelckers
24dbfc7827 - fixed BunchInFront to do a more thorough comparison in case it encounters colinear walls. 2021-05-21 14:32:01 +02:00
Christoph Oelckers
716b8840af - when using the node builder to triangulate sectors we must delete overlapping walls.
The node builder can create bad geometry from them because it does bad ordering when two lines facing in opposite directions overlap.
2021-05-21 14:32:01 +02:00
Christoph Oelckers
079a95a0a3 - use a higher depth bias for non-orthogonal wall sprites.
Due to minor angular inaccuracies they are more sensitive to z-ordering than orthogonal ones when things are closely stacked.
2021-05-21 14:32:01 +02:00
Christoph Oelckers
d572e56839 - removed the indirection for the global arrays.
No idea what part of EDuke32 needed this, but it is not necessary.
2021-05-21 14:32:01 +02:00
Cacodemon345
75ecd173b6 Destroy FStartupScreen before initializing video
Fixes terminal output cutoff on console tab completion on Unix systems.
2021-05-20 19:32:48 +02:00
Christoph Oelckers
be97ee04f9 - re-enable flat sprite rendering.
This was commented out for testing but forgotten afterward.
2021-05-20 19:21:14 +02:00
Christoph Oelckers
5cfd810311 - new renderer: take fog properties for walls and ceilings from the proper elements. 2021-05-20 19:17:21 +02:00
Christoph Oelckers
b5358bc03c - fixed typo in wall sprite offsetting code. 2021-05-20 18:25:19 +02:00
Christoph Oelckers
d4eb54d686 - render free standing wall sprites without depth bias.
Otherwise they can end up badly ordered with walls.
2021-05-20 12:36:35 +02:00
Christoph Oelckers
e99567cd70 - fixed bad array of arrays access in sector splitting code. 2021-05-20 00:30:54 +02:00
Christoph Oelckers
5fd41ab910 - new renderer: draw the fog layer for skies.
Code was active but alpha wasn't set.
2021-05-18 00:42:45 +02:00
Christoph Oelckers
24ce5d6130 - Exhumed: fix animation stopping for inventory torch item.
I have no idea how the old code could ever work...
2021-05-16 20:25:56 +02:00
Christoph Oelckers
5e94eaff8e - new renderer: handle light level underflows. 2021-05-16 18:50:54 +02:00
Christoph Oelckers
a348508779 - handle the wall sprite clipping properly. 2021-05-16 16:00:00 +02:00
Christoph Oelckers
5e57b738d5 - removed redundant menu initializsation in M_StartControlPanel.
This was a leftover of early development and is no longer needed.
2021-05-16 12:21:08 +02:00
Christoph Oelckers
5bb438b817 - new renderer: fixed bad positioning when a y-flipped wall sprite had to be clipped to floor or ceiling. 2021-05-16 12:17:26 +02:00
Christoph Oelckers
60fe1d32fb - Blood: unpositioned sounds must be limited to one per channel. 2021-05-16 11:51:51 +02:00
Christoph Oelckers
98ca5d5db4 - added 'load' and 'save' CCMDs. 2021-05-16 11:24:08 +02:00
Christoph Oelckers
7358f4344f - pause the game when app is not active. 2021-05-16 10:53:38 +02:00
Christoph Oelckers
f2d75d4146 - made status bar configurable through rmapinfo. 2021-05-16 10:43:47 +02:00
Christoph Oelckers
ee559b7ba9 - removed all leftover parts of the native status bars. 2021-05-16 10:35:33 +02:00
Christoph Oelckers
8d8b3cda46 - scriptified SW's status bar.
Not tested yet. This just compiles without errors.
2021-05-16 09:34:08 +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
781cb32dcf - fixed all issues with Duke's/RR's status bar. 2021-05-15 16:46:08 +02:00
Christoph Oelckers
f84f58e714 - ported Duke and RR status bars.
Compiles but not tested yet.
2021-05-15 14:27:32 +02:00
Christoph Oelckers
845ce63348 - make sure that all objects rendered as shadow reset the object color after the draw call. 2021-05-15 10:40:25 +02:00
Christoph Oelckers
b520d38bc0 - removed the native implementation od Exhumed's status bar. 2021-05-15 10:25:39 +02:00
Christoph Oelckers
b71c725e3e - ported Exhumed's status bar.
Not tested yet.
2021-05-15 10:25:38 +02:00
Christoph Oelckers
5a6121d424 - status bar interface work. 2021-05-15 10:25:38 +02:00
Christoph Oelckers
c9361aff76 - Exhumed: moved nPlayerItem into PlayerList 2021-05-15 10:25:37 +02:00
Christoph Oelckers
55abb261c6 - this was in the wrong place. :( 2021-05-15 10:25:37 +02:00
Christoph Oelckers
db8572dbcc - newrenderer: clip wall angles before doing any math with them.
In some cases these unclipped ranges ended up in other data structures, causing problems with bunch ordering.
2021-05-14 12:56:37 +02:00
Christoph Oelckers
3d6ae40bc0 - normalize all angles to the actual viewing range in the drawer.
This simplifies the debugging of this code a lot because we no longer have to deal with range overflows and can do direct comparisons everywhere.
2021-05-14 10:50:22 +02:00
Christoph Oelckers
d14d539144 - fixed issues with MAPINFO parser.
These cause problems with map progression, particularly with Exhumed.
2021-05-13 22:49:19 +02:00
Christoph Oelckers
e5dd4a8638 - made the scripted version of Blood's status bar functional. 2021-05-12 21:50:02 +02:00
Christoph Oelckers
778378fd5c - scriptified version of Blood's status bar compiles.
Not tested yet.
2021-05-12 21:50:02 +02:00
Christoph Oelckers
acb4830eb5 - ported the BaseStatusBar class to ZScript.
Not hooked up yet, but it compiles.
2021-05-12 21:50:01 +02:00
Christoph Oelckers
cb2bc7967a - fixed the remaining warnings. 2021-05-12 21:50:01 +02:00
Christoph Oelckers
d097c8e635 - removed the non-functional and long abandoned level music alias feature.
With RMAPINFO such a hack is no longer needed for anything.
2021-05-12 21:48:40 +02:00
Christoph Oelckers
783b94f922 - more warning fixes in 'core'. 2021-05-12 21:48:14 +02:00
Christoph Oelckers
1168341d5a - fixed more warnings in 'core'. 2021-05-12 21:47:32 +02:00
Christoph Oelckers
7283de0084 - fixed some very noisy warnings in two headers. 2021-05-12 21:47:32 +02:00
Christoph Oelckers
03289f5097 - silenced some warnings. 2021-05-12 21:47:32 +02:00
Christoph Oelckers
fd6dd7f467 - Skip the load screen if the level is started from the console.
In this case the load screen is not helpful as it blocks the actual level start, requiring closing and reopening the console first before entering any commands that need the level.
2021-05-12 00:36:04 +02:00
Christoph Oelckers
9dd9dc8efd - handle savegame loads like GZDoom.
They are synchronized with the game loop and should not be initiated directly from the menu.
2021-05-12 00:31:49 +02:00
Christoph Oelckers
499ed52972 - route savegame requests through the newwork, just like GZDoom does.
Although a bit overkill for single player saves only, this will ensure consistent behavior between both engines regarding the menu.
2021-05-12 00:21:26 +02:00
Christoph Oelckers
5d5af0cb09 - fixed error message spam when trying to load a non-existent voxel using .def. 2021-05-11 00:48:35 +02:00
Christoph Oelckers
d90b23ba9a - take down the savegame loader's resources in proper order. 2021-05-10 20:14:38 +02:00
Christoph Oelckers
e74aca291c - position tweaking for Nam's skies.
Why is this such an utter mess to get skies placed correctly? :(
2021-05-10 20:13:28 +02:00
Christoph Oelckers
d466ec081a - fixed incorrect order of resource deallocation in savegame reader. 2021-05-08 09:22:08 +02:00
Christoph Oelckers
325af156e7 - fixed loop in ProcessBunch to account for array reallocation. 2021-05-08 09:16:06 +02:00
Christoph Oelckers
79823b430c - reinstate the old code for rendering the first portal without stencil
The previous commit fixes the true issue causing the problems - with this back the restriction is not needed anymore.
2021-05-07 00:26:22 +02:00
Christoph Oelckers
b644000b02 - fixed texture y-flipping on bottom tiers of walls.
The flip flag was taken from the wrong side of the wall.
2021-05-07 00:18:13 +02:00
Christoph Oelckers
29b0106a96 - fixed yet another problem with the local 'sprite' variables in HWWall causing problems.
This variable and its companions in HWFlat and HWSprite have now been renamed to avoid these issues.
2021-05-07 00:09:30 +02:00
Christoph Oelckers
3fce8ab693 - added support for the 3 missing Duke Vacation SSIs. 2021-05-06 17:14:18 +02:00
Christoph Oelckers
2f9e32f748 Merge branch 'newrenderer' 2021-05-06 17:04:35 +02:00
Christoph Oelckers
72e4220929 - added an option to dump the list of discovered games to a JSON file. 2021-05-06 12:03:33 +02:00
Christoph Oelckers
c679f83f75 - make all games return to the main menu when the game is ended with F10.
Duke still went to the intro movies which was a bit problematic.
2021-05-04 11:32:09 +02:00
Christoph Oelckers
a7adef360b - fixed compilation with Clang. 2021-05-04 00:11:43 +02:00
Christoph Oelckers
a303da37a9 - added a mapinfo dumper and used it to verify correctness of the data generated from game-native definitions.
Also simplified the levelnumber setup a bit.
2021-05-03 23:00:24 +02:00
Christoph Oelckers
7d77b2315f - merged the few remaining contents of mmulti.h into d_net.h 2021-05-03 19:01:00 +02:00
Christoph Oelckers
6589222da6 Merge branch 'scriptable_cutscenes' into newrenderer 2021-05-03 18:50:41 +02:00
Christoph Oelckers
d206a767b2 - added render workaround for CP07. 2021-05-03 17:48:35 +02:00
Christoph Oelckers
d8b808576f - restrict the sky portal shortcut to skies in scenes where there are no other portals.
This entire setup does not work with sector portals, causing various render glitches in Shadow Warrior's portals. This also applies to skies within portals so it is now restricted to single sky setups.
2021-05-03 14:52:23 +02:00
Christoph Oelckers
56fcf904b5 - Backend update from GZDoom. 2021-05-03 14:48:55 +02:00
Christoph Oelckers
389340f97c - use sections for rendering. 2021-05-03 00:15:09 +02:00
Christoph Oelckers
30b1b046e4 - added an intermediate data structure to decouple the rendering from the immediate map data.
This will be needed for sectors consisting of disjoint parts and for providing some help with addressing rendering anomalies
2021-05-03 00:04:36 +02:00
Christoph Oelckers
f40e52ab34 - fixed issues with validation of command line specified main game GRP file name. 2021-05-02 22:56:53 +02:00
Christoph Oelckers
8003ab6fa3 Merge branch 'scriptable_cutscenes' into newrenderer 2021-05-02 22:37:46 +02:00
Christoph Oelckers
a1381c0ff2 - fixed Blood cutscene setup to avoid dependency on the sound code initialization.
It now only stores the sound name or ID but not the internal index which is only looked up when needed.
2021-05-02 18:10:59 +02:00
Christoph Oelckers
575a38d835 - added RMAPINFO handler for Blood's message array. 2021-05-02 18:00:11 +02:00
Christoph Oelckers
c1b4fdff83 - added a "clearall" instruction to RMAPINFO.
Since, unlike GZDoom, this format is additive and uses defaults for map progression it would otherwise a bit tricky to compile new episodes without accidentally pulling in some original special features.
2021-05-02 17:42:19 +02:00
Christoph Oelckers
dfd47ea33a - migrated SW to RMAPINFO as well.
Also removed the 'definecutscene' code from the .def parser as this was never meant to be more than a temporary solution.
2021-05-02 17:35:25 +02:00
Christoph Oelckers
4b064b9f34 - migrated Exhumed's level setup to RMAPINFO.
This game never had a proper setup so this also fixes the crashes with visiting the multiplayer maps.
2021-05-02 15:54:19 +02:00
Christoph Oelckers
bb9d492db6 - migrated RRRA as well. 2021-05-02 14:01:10 +02:00
Christoph Oelckers
a28b4ea06a - migrated Route66 and fixed some issues pointed out by this mod. 2021-05-02 13:29:41 +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
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
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
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
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
Christoph Oelckers
4069a5096a - scriptified Exhumed's 2D content (minus the programmatic textures.) 2021-04-30 20:08:36 +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
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
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
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
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
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
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