Commit graph

1517 commits

Author SHA1 Message Date
Christoph Oelckers
972df67d92 - sound system update from GZDoom. 2022-10-14 19:58:39 +02:00
Mitchell Richters
03bb820944 - Removed unused variable CamRoll from TRotator<> class.
* Residual value left behind in be9b25e760.
2022-10-14 18:19:04 +02:00
Mitchell Richters
d63fb33dd0 - Pass DVector2 objects directly through to F2DDrawer::AddLine() and F2DDrawer::AddThickLine().
* Since all the external code calling through to these methods are built on vectors, makes sense to pass them around by reference.
2022-10-14 18:19:04 +02:00
Mitchell Richters
d9f8ac4d2a - Convert automap's follow_x/follow_y variables into a proper vector.
* Should have done this from the start, but anyhow...
2022-10-14 18:13:49 +02:00
Mitchell Richters
059f15c786 - Refactor floatified vector math to use inline wrapped around TVector2's Rotated() method.
* This will be used extensively in Duke and the other game as we finalise this conversion.
2022-10-14 18:13:49 +02:00
Christoph Oelckers
f7d2ab20d8 - handle more move_missile calls 2022-10-14 17:17:36 +02:00
Christoph Oelckers
81c7e7671f - fixed Clang warnings 2022-10-13 22:54:43 +02:00
Mitchell Richters
60f5d9b67c - Rework some automap functions in prep for floatification. 2022-10-13 00:59:04 +02:00
Mitchell Richters
7286585998 - Add missing header to vectors.h that GCC and Clang were complaining about. 2022-10-13 00:59:04 +02:00
Mitchell Richters
1e36aa0e7f - Move TAngle<> interpolation function to common and add ones for TVector<> classes. 2022-10-13 00:59:03 +02:00
Mitchell Richters
19d21555a6 - Duke: Change int_ang() usage in camera().
* This commit also restores the original method of incrementing the camera's angle that was replaced due to a hiccup/stutter where the angle suddenly skipped forward by 16 instead of 8, but with a fix from EDuke32. This avoids using 3x extra `temp_data[]` slots.
2022-10-13 00:59:03 +02:00
Mitchell Richters
a22300fe01 - Blood: Replace some set_int_ang() usage.
* A lot of this repeated code should be factored out into repeated blocks when all of this floatification is done.
2022-10-13 00:59:02 +02:00
Christoph Oelckers
2f896b859b - made the code mostly signed-char safe.
This eliminates all char function parameters that are not really ASCII characters and casts all char argument to the ctype is... functions.
2022-10-12 22:12:30 +02:00
Christoph Oelckers
9275c14c9c - floatify SE18 handler.
To store floars in temp_data without relying on map format conventions, the FixedTo functions were extended to allow custom precision.
2022-10-12 22:10:35 +02:00
Christoph Oelckers
45f37525e0 - minor angle stuff in Blood 2022-10-10 17:31:30 +02:00
Christoph Oelckers
b2d0d7f9e5 - normalize the timer with the app start, not the epoch.
This ensures smaller values and less wraparounds with integer values in scripts.
2022-10-09 14:50:45 +02:00
Christoph Oelckers
00b812a5ff - un-deprecated the integer MSTime variant.
Due to undefined downconversion rules from double to int, there is no way to safely downcast the return from MSTimef, meaning the function is completely useless for retrieving integral time stamps.
The old version is essential for these cases and must be kept around.
2022-10-09 13:47:55 +02:00
Christoph Oelckers
416be99967 - fixed: SW's intro video must not stop playing music. 2022-10-08 10:04:31 +02:00
Mitchell Richters
ca521f8a1e - Test whether texture filtering is allowed before unconditionally allowing anisotrophy in the GLES backend. 2022-10-08 10:04:31 +02:00
Christoph Oelckers
be2f61bce2 - optimized TVector3::XY() to return a writable reference. 2022-10-06 20:50:44 +02:00
Christoph Oelckers
661655fb67 - SW: use a DVector3 in SpawnVis 2022-10-06 20:50:43 +02:00
Mitchell Richters
d28d6cd4cf - Utilise actor sprite's full precision in instances where angle was converted to Build and back again. 2022-10-05 00:36:30 +02:00
Mitchell Richters
bd6b0eaac5 - Fix some constexpr issues with the latest DAngle works.
* We can't make `BAMs()` constexpr as we can't update to a C++20 compatible version of xs_Float where we use legal std::bit_cast instead of a union.
2022-10-05 00:36:29 +02:00
Mitchell Richters
13ea55b4cb - Replace player's rotscrnang and look_ang angles with DAngle objects.
* Went the el cheapo route and added some floating point Build angle methods. As these and the integer build methods are really just refactoring aids, we'll come back to this in due course.
2022-10-05 00:36:26 +02:00
Mitchell Richters
36d76a71ea - Change walltype::clipangle from binangle to angle_t. 2022-10-05 00:36:25 +02:00
Christoph Oelckers
41ba829665 - fixed compile 2022-10-02 20:45:53 +02:00
Christoph Oelckers
c1d603e1e9 - backend update from GZDoom. 2022-10-02 20:33:18 +02:00
Christoph Oelckers
fa53fcd085 - undid the fix that allocated one byte too many for loading a complete file into an FString.
Without this padding byte the voxel loader does not work.
2022-08-27 00:02:57 +02:00
Christoph Oelckers
111dbd7a7d - backend update from GZDoom.
mainly TAngle overhaul and needed code adjustments.
2022-08-26 18:28:22 +02:00
Christoph Oelckers
b196e67f40 ported SHA-1: 82e3f6af9367200853fe2af1b9665dd0c53b4f05 from NBlood
* - Change gBusyCount limit to a higher value since xsector limit raised.

gModernMap:
- The return of the event causer (kChannelEventCauser, TXID 50).
- Fix flags for kModernPropertiesChanger type.
- Add new modern type kModernVelocityChanger.
- New features for kMarkerWarpDest type.
- New features for kModernSectorFXChanger type.
- Fix sector condition 58.
- Fix sprite hitscan conditions (35 - 38).
- Add new command (kCmdEventKillFull).
- Misc changes.

# Conflicts:
#	source/games/blood/src/actor.cpp
#	source/games/blood/src/nnexts.cpp
2022-08-17 20:45:51 +02:00
Christoph Oelckers
77bc5999ce - Backend update from GZDoom.
* ZScript compiler fixes for type promotion
* FileSystem.FindLumpFullName
* Statusbar text scaling fixes.
* removed scalar addition operators from vectors.
2022-08-17 20:38:46 +02:00
Christoph Oelckers
864c0b71e0 -removed some xs_float casts that are not really necessary. 2022-08-07 10:54:52 +02:00
Christoph Oelckers
8aa96777b0 - allow FModel::FindFrame to not pick a default. 2022-08-07 10:42:07 +02:00
Christoph Oelckers
4260d334e2 - do not overwrite a textures sky cap color. 2022-08-06 09:26:08 +02:00
Christoph Oelckers
c2fc7577db - cleanup of 3D viewport code.
Removes all the hackery that Polymost needed and now uses a sane struct to store the info.
2022-08-05 17:04:45 +02:00
Christoph Oelckers
7e36e57639 - fix dangerous pointer arithmetic in ParseCommandLine
Should be rewritten entirely to sanitize, though.
2022-08-05 09:40:37 +02:00
Christoph Oelckers
7debab7ff4 - refined wall sprite check so that orthogonally aligned sprites are only aligned to orthogonal walls.
Here even the slightest deviation can create problems.
2022-08-03 14:13:42 +02:00
Christoph Oelckers
89e8d7ad58 - removed all remnants of the softpoly renderer which was never used in Raze. 2022-08-03 13:27:48 +02:00
Christoph Oelckers
6591b3b090 - Backend update from GZDoom.
Mainly new features for 2D drawer and model renderer.
2022-07-23 12:05:27 +02:00
Christoph Oelckers
abb7f87de3 - Backend update from GZDoom. 2022-07-23 12:10:08 +10:00
Dale Whinham
7856d30957 Improve KDE/kdialog detection
If KDE is running but kdialog is not present on the system (e.g. as is
the case on SteamOS), allow falling back on the GTK dialogs instead.
2022-07-23 10:36:15 +10:00
Dale Whinham
ed4e23f1ec Fix crash when exiting with no game data
When shutting down with no game data, GameConfig is saved and the
pointer is nulled. If a joystick was present, a null dereference occurs
when the engine tries to save the joystick config later in the shutdown
sequence.

Add a check to avoid a crash in this scenario.
2022-07-10 22:30:18 +02:00
Christoph Oelckers
2c3fcbaf51 - glslang compiler and Vulkan backend update. 2022-07-02 10:20:11 +02:00
Christoph Oelckers
3ec8a96ddf - partial backend update from GZDoom. 2022-07-02 09:30:37 +02:00
Christoph Oelckers
eb8fae761e - backend update from GZDoom. 2022-06-26 09:35:21 +02:00
Christoph Oelckers
998def2487 - another backend update from GZDoom. 2022-06-06 15:28:41 +02:00
Christoph Oelckers
f599040212 - GCC needs this commented out but really shouldn't. 2022-06-06 13:08:23 +02:00
Christoph Oelckers
e5c7c4f680 - don't use longs. 2022-06-06 12:05:50 +02:00
Christoph Oelckers
84173ee09b - backend update from GZDoom.
The main bulk of this is the new start screen code. To make this work in Raze some more work on the startup procedure is needed.
What this does provide is support for the DOS end-of-game text screens in Duke and SW on non-Windows systems.
2022-06-06 11:45:34 +02:00
Mitchell Richters
47aa110441 - Remove the ability to set a custom ticrate in calls to I_GetInputFrac(). There's no real world need for this. 2022-06-06 18:41:48 +10:00
Christoph Oelckers
e86899ed31 - fixed sky panning.
This picked the wrong overload - to make things robust one of the functions was renamed.
2022-06-06 10:12:26 +02:00
Mitchell Richters
3d8bc3294f - Slight cleanup to I_GetInputFrac(). 2022-05-30 20:46:09 +10:00
Christoph Oelckers
6b720f5f6c - fixed: FSkyVertexBuffer::RenderBox did not reset the object color after finishing. 2022-05-29 23:58:52 +02:00
Christoph Oelckers
0dc670da8e - added wipe transitions to screen job
Mainly to have the crossfade, the other styles are mostly bonus.
This also adds proper scoping to the cutscene code, which needs to run in UI scope.
2022-04-25 17:26:17 +02:00
Christoph Oelckers
21b4862460 - Backend update from GZDoom
* music system improvements
* Zip64 support
* fixes for menu scaling on ultrawide screens
* Mac default paths fixed
* lightmap code (not active yet)
2022-04-25 11:13:55 +02:00
Christoph Oelckers
380864d6fb - pass shade values to sky renderer 2022-04-19 14:44:10 +02:00
Christoph Oelckers
6354c1889d - fixed bad search path setup on macOS
This cannot include „Raze“ in the app_support path strings because some of these parts point to elsewhere. The two places where it is needed must be explicit.
2022-04-19 14:02:51 +02:00
Rachael Alexanderson
16c81f0b1f Pull commit eeb67bcec3 from GZDoom: Use RDTSC equivalent on AARCH64. 2022-03-25 14:58:51 -04:00
Rachael Alexanderson
4be214e33d - pull RDTSC for Linux from GZDoom 2022-03-18 04:35:20 -04:00
Rachael Alexanderson
da5d9fcde2 - implement discord rich presence, expand window title code. (still wip) 2022-03-18 04:17:46 -04:00
Rachael Alexanderson
9325f1d536 - replicate commit 28d9fe68ae 2022-02-17 01:15:18 -05:00
Christoph Oelckers
a12093af04 - use full precision math for rotating sectors in Blood. 2022-02-15 22:18:24 +01:00
Rachael Alexanderson
b7cb878ad8 - fix compiling on Linux/et-al 2022-02-01 12:36:26 -05:00
Rachael Alexanderson
cc57914bbf - fully implement uniform cvars 2022-02-01 11:03:39 -05:00
Christoph Oelckers
c27976b2e5 - added script exports for Duke's iterators 2022-01-26 00:16:21 +01:00
Christoph Oelckers
e035ce00b6 - hooked up the compiler extension and the static actor data setup. 2022-01-23 13:03:39 +01:00
Rachael Alexanderson
7b560a3d79 - add debug ccmds for custom shaders 2022-01-20 22:31:31 -05: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
Christoph Oelckers
19d8d65fd0 - split names into common and Raze-specific 2022-01-20 01:11:23 +01: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
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
98c919fbe4 - g_visibility stuff 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
a3162f6ccf - renamed testnewrenderer CVAR. 2022-01-07 12:49:41 +01:00
Christoph Oelckers
2ac83b733c - SW: clear some pointers before killing actors in TerminateLevel.
KillActor is an in-game function which may produce undefined behavior if being run on a partially deinitialized level.
All actor pointers it may operate upon should be cleared before taking down the actors.cpp
2022-01-02 15:06:57 +01:00
Christoph Oelckers
d0ab13f95a - use GPLv2 in all files dual-licensed with the Doom Source license.
None of this was ever GPLv3, the original id source was released under the GPLv2 so this should be, too.
2022-01-02 12:42:54 +01:00
Christoph Oelckers
46078323ff - backend update from GZDoom, mainly license updates. 2022-01-02 12:24:53 +01:00
Mitchell Richters
9bbb54fe2e - Replace every line that just contains spaces or tabs with an empty line feed in all files except 3rd party libraries. 2021-12-30 20:30:21 +11:00
Christoph Oelckers
69283bfb0c - tabified several Blood source files. 2021-12-30 09:58:47 +01:00
Christoph Oelckers
4f8f85c634 - backend update from GZDoom. 2021-12-30 09:58:46 +01:00
Christoph Oelckers
3be2128b3a - added utilities to read all usermaps into a directory tree 2021-12-30 09:58:08 +01:00
Christoph Oelckers
87a32d9095 Revert "- fixed music lookup for user maps."
This reverts commit 9558e7d518c1d5f7a898fcb2564078bd9ec956ac.
2021-12-30 09:58:08 +01:00
Christoph Oelckers
7204b7c616 - fixed music lookup for user maps.
This was only looking for real files, but instead needs to check the file system. The game directory's content will always be part of that so other checks are counterproductive.
2021-12-30 09:58:07 +01:00
Christoph Oelckers
7bbd4343a8 - renamed all shadowing variables in Duke. 2021-12-30 09:57:33 +01:00
Christoph Oelckers
9e14b168bb - addressed more shadowed variables in common code. 2021-12-30 09:57:32 +01:00
Christoph Oelckers
ca9d73ffee - renamed some shadowing variables in common code. 2021-12-30 09:57:32 +01:00
Christoph Oelckers
e41db411e4 - made TFlags mostly constexpr 2021-12-30 09:56:46 +01:00
Christoph Oelckers
b3873be514 - added some utilities to the Plane class that will be needed soon. 2021-12-30 09:53:07 +01:00
Christoph Oelckers
411e3e6f9c - make SectionGeometry create some data. 2021-12-30 09:53:07 +01:00
Christoph Oelckers
b1bf12df9d - section fixes. 2021-12-30 09:53:06 +01:00
Christoph Oelckers
ad018db80a - new section builder. 2021-12-30 09:53:06 +01:00
Christoph Oelckers
6db1ba47c2 - SW: fixed some savegame issues:
* the saveable tables were initialized too late when reading in the actors.
* the abort messages for the saveables did not show. We need to use I_FatalError here, plus some actor list modifications to make this work.
2021-12-26 23:10:07 +01:00
Mitchell Richters
a4d165a84e - Tidy some specified bound equals destination size warnings from GCC. 2021-12-26 23:10:05 +01:00
Christoph Oelckers
74da3e5fa7 - added savegame support for the new actor management. 2021-12-26 23:10:03 +01:00
Mitchell Richters
38842994e0 - Remove the constructors from TObjPtr class.
They're not used in Raze and were preventing build issues under POSIX environment as you can't use constructor objects in anonymous aggregate types (unnamed structs, etc).
2021-12-26 23:10:02 +01:00
Christoph Oelckers
2d913982da - changed map loader to work without relying on spritetype::sectnum.
All access to this field is done through access functions now.
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
0dd756fa32 - added GC handling for all backend pointers in the map data.
GC is not active yet!
2021-12-26 23:10:00 +01:00
Christoph Oelckers
138690d34e - do not use auto to make local copies of TObjPtr's.
This will just copy the object without performing the read barrier on the source data which is not what we want here.
For these assignments the type must be explicit.
2021-12-26 23:09:59 +01:00
Christoph Oelckers
fa62b20d76 - GC setup for Duke. 2021-12-26 23:09:58 +01:00
Christoph Oelckers
97b19a5cb1 - adapted Blood's sound engine to using actors.
Note: Savegames won't work on this commit for the other games!
2021-12-26 23:09:45 +01:00
Christoph Oelckers
96b9572905 - moved parts of the HitInfo subclasses into the backend.
All the game code now needs to do is a single 'using' statement.
2021-12-26 23:08:57 +01:00
Christoph Oelckers
1665e340be - serialization support for BitArray. 2021-12-25 21:28:50 +01:00
Christoph Oelckers
7d2404ce76 - made sector a TArray. 2021-12-25 21:28:49 +01:00
Christoph Oelckers
94a37dfcdc - extended walltype to directly manage Blood's XWALL.
Unfortunately this had to be done in the base class so that we can still maintain the walls in a global array.
The tradeoffs of better abstractions would be far too costly here than the added 16 bytes to the wall struct.
2021-12-25 21:28:47 +01:00
Christoph Oelckers
e21f899989 - added all #includes needed to compile on Windows without using precompiled headers. 2021-12-14 12:24:09 +01:00
Christoph Oelckers
7e2431ebd8 - replaced the remaining content from compat.h 2021-12-14 10:15:58 +01:00
Emile Belanger
9e9bb66e9a GLES: Fix bias state 2021-12-11 13:44:23 +01:00
Emile Belanger
9e1e824f5e GLES: Fixed palette mode and interpolation 2021-12-11 13:23:39 +01:00
Emile Belanger
5a8c57040f GLES: Palette mode now GLES2 compliant. Interpolation not yet working. 2021-12-11 13:23:39 +01:00
Christoph Oelckers
a8c4d61fab - default-enable GL_DEPTH_CLAMP for the GLES renderer.
This brings it in line with the other backends.
2021-12-08 00:19:49 +01:00
Mitch Richters
7f1b8402d1 - Slight optimisation to I_GetInputFrac() by multiplying by inverse instead of dividing on a constant. 2021-12-07 20:02:11 +11:00
Mitch Richters
b6b0887611 - Fix missed flags pass-through in bool StartCutscene(const char* s, int flags, const CompletionFunc& completion) overload. 2021-12-07 19:59:19 +11:00
Christoph Oelckers
c2baa68160 - fixed camera textures breaking in SW when restarting a level.
This was caused by attempting to delete the camera textures when cleaning up the mirror array.
The Build tile manager was not prepared for such a use case and left a broken texture behind.

To allow this to function it now resets the texture replacement type when deleting a tile and to avoid creating new camera textures these will now be stored in a cache and recycled later.
2021-12-02 21:40:43 +01:00
Christoph Oelckers
f765783437 - various small bits of cleanup. 2021-11-29 00:57:11 +01:00
Christoph Oelckers
b54e52330c - Blood: don't play the same looped sound multiple times on the same actor.
This caused some strong echoing on E4M6.
2021-11-29 00:57:11 +01:00
Christoph Oelckers
1de9c63d45 - fixed center aligned rendering of 2D content.
This calculates the centered pivot point in integer texel coordinate space so for odd numbers it must round down instead of using a fractional position.
2021-11-29 00:57:10 +01:00
Christoph Oelckers
793aaf242c - make upscaling of sky textures depend on the single tile size, not the entire composite texture. 2021-11-29 00:57:10 +01:00
Christoph Oelckers
448db9c93d - enable texture upscaling in Polymost, disable it for the movie player's textures. 2021-11-29 00:57:10 +01:00
Christoph Oelckers
5bd53cbe8c - do not use clamp for calculation scale factors in Get...Scale.
These operations are not actual clamps and can assert on some implementations.
2021-11-29 00:57:09 +01:00
Christoph Oelckers
1bbbeb8f4c - Blood: reworked GetClosestSpriteSectors to use dynamic arrays, deleted unused GetClosestSectors.
# Conflicts:
#	source/games/blood/src/aibeast.cpp

# Conflicts:
#	source/games/blood/src/aibeast.cpp
#	source/games/blood/src/gameutil.h
2021-11-29 00:55:43 +01:00
Christoph Oelckers
01abe7b2ac - addressed most unused/uninitialized variable warnings from MSVC. 2021-11-29 00:55:30 +01:00
Christoph Oelckers
f7fdc5af41 - address several warnings reported by GCC 11. 2021-11-29 00:55:29 +01:00
Mitch Richters
e491d15ff9 - Move InputScale() out of inputstate.cpp and into i_time.cpp as I_GetInputFrac() to make it available to GZDoom for potential future requirements.
* As part of this, feed the output of `I_GetInputFrac()` to `gi->GetInput()` instead of having each game's virtual override calling it locally.
2021-11-29 00:55:01 +01:00
Christoph Oelckers
b7c7328cdd - backend update fromGZDoom.
most importantly this addresses issues with key down/key up events being sent in the same tic not having an effect on game actions that require a key being held down.
2021-11-21 10:19:52 +01:00
Christoph Oelckers
75e2d801a7 - SW: only check valid sectors for SecUser entries. 2021-11-11 21:58:14 +01:00
Christoph Oelckers
cc16c02baa - fixed BitArray constructor. 2021-11-11 21:55:46 +01:00
Christoph Oelckers
2840b5f25d - added reverse iterators to tarray.h 2021-11-08 18:55:46 +01:00
Christoph Oelckers
94f40d11ae - SparseArrayView class
We need this to merge the game specific sector/wall extensions with the base but still allow the engine to access such arrays. For that they need a runtime settable stride.
2021-11-08 18:55:35 +01:00
Christoph Oelckers
13306e900d - silence some warnings. 2021-11-06 18:26:47 +01:00
Christoph Oelckers
9a1bcdbc84 - let's hope this works better.
CI complained about the iterator but the messages were very unclear about the problem.
2021-11-06 17:18:07 +01:00
Christoph Oelckers
19363ac23e - project contortions to make MSVC print our own deprecations but silence the ones from the compiler.
Since everything uses the same warning number, the old setup resulted in [[deprecated]] being silenced.
So this explicitly adds the needed #defines to silence the very noisy warning from the MSVC headers but leaves warning 4996 active otherwise.

In particlular this does:

* silence all warnings in the subprojects
* do not derive TIterator from std::iterator anymore as C++17 deprecates this.
* silence the above for RapidJSON because altering that code is not desirable.
* explicitly disable warning 4996 in some Windows files that call the deprecated (but still needed) GetVersionEx function.
* define _CRT_SECURE_NO_DEPRECATE, _CRT_SECURE_NO_WARNINGS and _CRT_NONSTDC_NO_WARNINGS through CMake to disable the CRT's deprecation and security warnings.

Currently this will print several (intended) deprecation warnings about 'updatesector' that point to code that needs to be changed but cannot yet without other refactorings being done first.
2021-11-06 16:48:31 +01: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
d9bbe1fa61 - xs_Float.h: Make all inlines return an unsigned value, and change previous unsigned inlines to signed.
* Removes situations where calling `xs_CRoundToUInt()` and other unsigned inlines would go through extra casts (`uint32_t` > `int32_t` > `uint32_t`).
* Because the native data in the `_xs_doubleints` struct is a union of a double and `uint32_t`, it makes sense to do everything unsigned and convert to `int32_t` if needed instead.
2021-11-01 23:57:40 +11:00
Mitch Richters
d1274e76dc - xs_Float.h: Add getint() getter to _xs_doubleints struct. 2021-11-01 23:42:49 +11:00
Mitch Richters
306c0a3ebb - m_fixed.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
a84aa84838 - xs_Float.h: Convert header to constexpr.
* Allow use of this library in static initialisers.
* Required re-arranging a little bit to order everything so inlines could be used without prototypes.
2021-11-01 23:37:31 +11:00
Christoph Oelckers
c7da8ca9d4 - fixed compilation on non-Windows.
In this header we must explicitly use the std:: namespace for min/max.
2021-10-30 11:38:55 +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
Christoph Oelckers
9071949a46 - backend upate from GZDoom
* Vulkan SDK and dependencies updated.
* better interface for buffers in the render backend.
2021-10-30 09:34:38 +02:00
Emile Belanger
14ebe23f0d Fix compilation with USE_GLES2 = 1 2021-10-25 17:50:48 +02:00
Emile Belanger
ff009cbf7a Re-enable depth clamping 2021-10-24 12:06:54 +02:00
Christoph Oelckers
d101a2b51f - removed pointless address check.
This array was once a pointer but the check was forgotten.
2021-10-24 08:26:10 +02:00
Emile Belanger
2a905e8026 Fix palette mode for GLES 2021-10-16 18:42:02 +02:00
Christoph Oelckers
46d2c52b19 - use correct math to access a texel's center for rendering voxels.
No idea if this was causing problem, but it surely wasn't 100% correct.
2021-10-13 00:12:58 +02:00
Christoph Oelckers
39319a9582 - fixed warnings in common code. 2021-10-08 19:07:56 +02:00
Christoph Oelckers
2348dd8848 - backend update from GZDoom
* GLES backend fixes.
* font colorization fixes.
* option menu spacing fix
2021-10-07 22:46:45 +02:00
Christoph Oelckers
49e0c461c2 - Backend update from GZDoom.
This is mainly bringing the GLES backend up to date.
2021-10-07 22:46:45 +02:00
Christoph Oelckers
a3d9cd9a68 - Backend update from GZDoom - mainly for GLES2 support. 2021-09-18 12:20:28 +02:00
Christoph Oelckers
585f841f96 - core shader override block, backported from GZDoom. 2021-09-12 18:18:26 +02:00
Christoph Oelckers
bad57f6a5f - clear pspAsArray at the beginning of a save/load operation, not at the end.
If done at the end it may leave behind some stale data if saving or loading fails for some reason.
2021-09-12 18:17:50 +02:00
Christoph Oelckers
6d958135e0 - give TMap a proper move constructor and assignment operator. 2021-08-23 19:05:31 +02:00
Mitchell Richters
1d0924e45a - Fix invocation name in FileSystem::GetLongName() error output.
* Thanks to @Gaerzi for spotting this.
2021-08-23 18:55:42 +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
907e0974e9 - Add GetLongName() method to FileSystem class. 2021-08-22 15:03:28 +10:00
Mitchell Richters
20ea0acbec - Add Contains() method to TArray class, returning a true/false bool as appropriate. 2021-08-21 13:34:58 +10: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
c4c9f4acbe - call ColorMatcher.Pick instead of BestColor when remapping a voxel.
This was the only place in the engine using BestColor directly with the game palette.
2021-08-14 09:49:03 +02:00
Christoph Oelckers
5aa27bad3b - flag SW's cutscenes as 'boss death only'. 2021-08-13 22:25:13 +02:00
Christoph Oelckers
23b8707fc2 - added means to define resource IDs in all container formats allowing long file names.
To define these, construct a file name like "basename.{resourceid}.extension", e.g. blaster.{65}.qav will define 'blaster.qav' with a resource ID of 65.
2021-08-11 12:04:53 +02:00
Christoph Oelckers
b2f7eb5b4f - fixed: Raze did not have gl_lights yet, but recent additions need this CVAR.
Put it in v_video.cpp so that it is in a common backend file.
2021-08-11 12:02:56 +02:00
Christoph Oelckers
8106d788f6 - backend update from GZDoom.
Fixes:
* do not strip 'filter' as a directory prefix.
* proper spacing for scaled sheet fonts.
* fix of transparent color in BMF fonts.
* fix restart button on error pane in Windows.
* do not skip over empty 'if's with a condition that would error out.
2021-08-11 10:28:21 +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
0d9afc1aaf - Extend menu's ImageScroller ZScript class with mAnimated and use with Blood for the help and credits menu. 2021-08-05 14:52:51 +10:00
Mitchell Richters
1ed1222e10 - Extend menu's ListMenu ZScript class with mAnimated already natively available, and use with Blood where BloodDripDrawer is defined.
* Finalises the interpolated blood dripping code changes from 9884d5f396.
2021-08-04 10:31:45 +10:00
Christoph Oelckers
888f8888bb - backported some fixes in the common backend from GZDoom 2021-08-03 13:00:09 +02:00
Christoph Oelckers
c69efe5817 - fix crash issue with empty VOCs.
Pointer to empty data causes undefined behavior if length is 0.
2021-07-25 12:43:42 +02:00
Christoph Oelckers
c51c6fa524 - adapted the Zip root folder eliminator to deal with archives that do not add proper folder records to their central directory. 2021-07-25 12:18:53 +02:00
Christoph Oelckers
ccce75667e Revert "- Remove CVAR_NOINITCALL bit from gl_texture_hqresize* CVARs."
This reverts commit e03d532670.
2021-07-24 09:08:29 +02:00
Mitchell Richters
e03d532670 - Remove CVAR_NOINITCALL bit from gl_texture_hqresize* CVARs.
* Fixes https://forum.zdoom.org/viewtopic.php?f=340&t=72466.
2021-07-24 15:58:05 +10:00
alexey.lysiuk
56d313f08d - use SDL Vulkan window flag directly 2021-07-21 17:37:52 +03:00
Vanfanel
2aea69b48a Pass the missing fullscreen flag when creating a Vukan window. 2021-07-21 14:41:28 +03:00
Christoph Oelckers
a614f741fd - relaxed consistency checks for VOC files.
Rampage Warrior contains a few sounds that failed validation so this check does not exist in the original 3D Realms sound code.
2021-07-14 23:22:41 +02:00
Christoph Oelckers
8a8379f5fc - Backend update from GZDoom. 2021-07-11 09:50:36 +02:00
Christoph Oelckers
a98507f737 - fixed endless loop in replay gain analyzer when getting passed music with an unhandled sample rate. 2021-07-11 09:11:59 +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
5d67987fe1 - don't attempt to decode animation frames at offsets beyond the end of the current page.
Copied from EDuke32.
2021-07-02 20:33:53 +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
25e57763af - implemented substitution for incomplete fonts. 2021-05-31 21:20:32 +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
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
42b70a7d93 - added internationalized fonts.
This still needs a bit of fixing and tweaking but most is working.
2021-05-31 21:20:30 +02:00
Christoph Oelckers
d7e1707b37 - removed the Doom specific font init code.
This has no use in Raze and only got in the way by enforcing unwanted defaults.
2021-05-31 21:20:28 +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
22be26bd2d - font system fixes. 2021-05-28 12:16:07 +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
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
9769f346ec - refactored the special fonts away from BuildTranslation so that this function and the entire large heap of ugly baggage it drags in can finally be deleted.
Function is gone, baggage will come next.
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
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
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
6ae09f8ec9 - ported Doom's type-on text screens as a screen job overlay. 2021-05-22 12:08:08 +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
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
1dff0502b0 - moved libvpx and libsmackerdec to more fitting places, plus some project cleanup. 2021-05-22 01:06:51 +02:00
Christoph Oelckers
16c6e2db05 - silence float truncation warnings for explicit casts. 2021-05-21 21:06:48 +02:00
Christoph Oelckers
4739c71b39 - PNG 16 bit support from GZDoom. 2021-05-21 21:06:11 +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
eae97ded1b - backend update from GZDoom. 2021-05-17 20:33:40 +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
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
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
bdfe40af7c - properly terminate base64 data. 2021-05-13 22:28:36 +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
783b94f922 - more warning fixes in 'core'. 2021-05-12 21:48:14 +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
Cacodemon345
36b910a253 Fix compilation on OpenBSD 2021-05-10 08:25:14 +02:00
Christoph Oelckers
2f9e32f748 Merge branch 'newrenderer' 2021-05-06 17:04:35 +02:00
Rachael Alexanderson
7b45144023 - these changes were missing from the last Vulkan update 2021-05-06 04:27:58 -04:00
Christoph Oelckers
56fcf904b5 - Backend update from GZDoom. 2021-05-03 14:48:55 +02:00
Christoph Oelckers
8003ab6fa3 Merge branch 'scriptable_cutscenes' into newrenderer 2021-05-02 22:37:46 +02:00
Christoph Oelckers
4c2266ee88 - fixed incomplete SW ending cutscene. 2021-05-01 20:31:51 +02:00
Christoph Oelckers
4069a5096a - scriptified Exhumed's 2D content (minus the programmatic textures.) 2021-04-30 20:08:36 +02:00
Christoph Oelckers
3c27ec8cbd - tested all of Duke's and RR's cutscenes. 2021-04-30 20:08:33 +02:00
Christoph Oelckers
af8d06994a - implemented the scripting interface layer. 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
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
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
1022564cab - initial framework for scriptification of screen jobs. 2021-04-30 20:08:23 +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
14971f9569 Merge branch 'master' into newrenderer 2021-04-22 00:10:37 +02:00
Christoph Oelckers
97d8aee2e8 - savegame code cleanup. 2021-04-22 00:03:17 +02:00
Christoph Oelckers
8fee2b3ed7 - save SW's User array as JSON. 2021-04-22 00:03:15 +02:00
Christoph Oelckers
cd45a1f035 - made more parts of USER serialization friendly. 2021-04-22 00:03:14 +02:00
Christoph Oelckers
dcb393bc44 - started reorganizing SW's memory management.
Need to get rid of all those unmanaged allocations and present game data in an easily serializable form.
This adds a managed TPointer class that replicates the useful parts of std::unique_pointer but steers clear of its properties that often render it useless.
2021-04-22 00:03:14 +02:00
Christoph Oelckers
b8f9bdb7c1 - made savepic work with new renderer. 2021-04-21 22:32:27 +02:00
Christoph Oelckers
f51872db25 Merge branch 'master' into newrenderer 2021-04-20 20:46:06 +02:00
Christoph Oelckers
8c5a9c23c3 - tileimportfromtexture and copytile. 2021-04-20 20:04:44 +02:00
Christoph Oelckers
afb2cd3b82 - fixed NoFullbrightRange.
Ever since the texture system switchover this only set a dead bit, it has to explicitly mark the texture as not having a brightmap.
2021-04-20 20:02:08 +02:00