Commit graph

10324 commits

Author SHA1 Message Date
Christoph Oelckers
d50e52ea59 - use DrawChar to draw font characters instead of calling DrawTexture directly.
Mostly done to remove uses of DTA_Translation.
2017-02-04 22:50:23 +01:00
Christoph Oelckers
6dea3eef8e - exported DrawTexture to scripting.
This uses templates to avoid source duplication of ParseDrawTextureTags. Not tested yet.
2017-02-04 22:09:49 +01:00
Christoph Oelckers
a102807737 - atags for null pointers have no meaning so do not assert on them. 2017-02-04 19:37:19 +01:00
alexey.lysiuk
e8c2444ddd Fixed compilation with GCC/Clang
error: use of undeclared identifier 'op'
error: no matching function for call to 'ListEnd'
error: no matching function for call to 'ListGetInt'
error: no matching function for call to 'ListGetDouble'
...
2017-02-04 18:10:30 +02:00
Christoph Oelckers
d662cece15 - fixed calculations in AdjusrPlayerAngle. 2017-02-04 16:44:43 +01:00
Christoph Oelckers
ec15c7f4c3 - removed the fatal errors for invalid actor->movedir.
These can be silently mapped to DI_NODIR to let the engine get the actor back on track.
2017-02-04 16:29:01 +01:00
Christoph Oelckers
43d759782d - fixed: Stack based local VM object pointers should not be subjected to a read barrier.
This isn't done for register based variables so for consistency it should not be done for stack based variables, too.
This difference in handling made it impossible to check the target of a hitscan attack if it was destroyed by getting damaged.
2017-02-04 16:23:14 +01:00
Christoph Oelckers
d3ed83942f - did some preparations to ParseDrawTextureTags to allow using the same code for parsing tag lists generated by the VM.
- removed the fixed point alpha tag from DrawTexture and replaced all uses with the floating point version.
2017-02-04 13:11:12 +01:00
Christoph Oelckers
abac756289 - exported some stuff for fonts and screen size that will be needed for the menus. 2017-02-04 00:46:22 +01:00
Christoph Oelckers
d5b908186c - some work on the base classes for menus. None of this is being used yet. 2017-02-04 00:19:25 +01:00
Christoph Oelckers
8578a5a12e - added a 'new' intrinsic to create new objects from inside scripts.
This is not tested yet and likely to not working correctly yet. Will be fixed once I get far enough to use it later.
2017-02-03 22:56:03 +01:00
Christoph Oelckers
d5962b290c - turned all menu items into actual objects.
This is needed for script export.
2017-02-03 21:35:42 +01:00
alexey.lysiuk
c6e42d6fa0 Added handling of modifier keys for mouse events in Cocoa backend 2017-02-03 22:01:34 +02:00
alexey.lysiuk
f04b0d129d Removed useless assignment in Cocoa backend 2017-02-03 21:56:14 +02:00
Christoph Oelckers
82eae78f7e - fixed a small memory leak in the texture manager. 2017-02-03 13:11:55 +01:00
Christoph Oelckers
075cce98c4 - fixed: PlayerPawn.GetEffectTicsForItem read the duration from the wrong actor. 2017-02-03 10:41:38 +01:00
Christoph Oelckers
a5f417b1e5 - removed all uses of BYTE as function return value or functio parameter from the dynamic light code.
These were truncating the actual light values.
2017-02-03 10:13:41 +01:00
Christoph Oelckers
1515ab8f4a - removed the long broken and obsolete PlayMovie code. 2017-02-02 23:21:21 +01:00
Christoph Oelckers
becc00a8be - added a check to P_VerifyBlockmap to discard all blockmap with blocks whose first entry is not 0.
Seems someone has written a node builder which violates this long-standing assumption (https://www.doomworld.com/vb/source-ports/92468-introducing-zokumbsp/)
However, rather than second-guessing the format's correctness it's more advisable to just discard such blockmaps to avoid some less obvious issues that may creep up.
2017-02-01 21:40:47 +01:00
Christoph Oelckers
d663f31e77 - removed the annoying assert in the dynamic light code.
I don't think that any of the remaining situations are a genuine problem, so let's just set the radius to the larger value.
2017-02-01 19:24:05 +01:00
Christoph Oelckers
a59a9e7420 - missed one. 2017-02-01 19:17:56 +01:00
Christoph Oelckers
6bfbff2a69 - renamed RF_INTERPOLATE to RF_INTERPOLATEANGLES to avoid confusion about its meaning. 2017-02-01 19:11:14 +01:00
Major Cooke
d55f1d3f6f - Adopted Nash's code for handling models with INTERPOLATE. 2017-02-01 19:09:18 +01:00
Major Cooke
39fcea9176 Added INTERPOLATE actor flag, allowing the previously reverted interpolation code to be toggleable. 2017-02-01 19:09:18 +01:00
Christoph Oelckers
04988a331b - fixed warning. 2017-02-01 19:07:41 +01:00
Christoph Oelckers
b77a0eb7cf - let D_PageDrawer always clear the background.
The math in DCanvas::FillBorder does not always work out so better clean the entire screen before drawing a fullscreen image to ensure that the menu blend is always drawn over something valid.
2017-02-01 11:44:13 +01:00
Christoph Oelckers
bc29f61bfd - set the default for menu mouse input to 'touchscreen-like' because there's too much hardware out there which doesn't play nice with mouse input events. 2017-02-01 11:25:28 +01:00
Christoph Oelckers
6d28aa3541 - do not use strtol for parsing critical values that can get large.
This function will truncate everything that is larger than LONG_MAX or smaller than LONG_MIN to fit into a long variable, but longs are 32 bit on Windows and 64 bit elsewhere, so to ensure consistency and the ability to parse larger values better use strtoll which does not truncate 32 bit values.
2017-02-01 11:19:55 +01:00
alexey.lysiuk
1fd37ff2ff Removed unused input from fog boundary fragment program
This should fix https://mantis.zdoom.org/view.php?id=151
2017-02-01 10:05:38 +02:00
Christoph Oelckers
90ee22b760 - don't let monsters without a See state disappear if they try to enter it. 2017-02-01 01:13:26 +01:00
Christoph Oelckers
ccacc23905 - fixed division by 0 in ActorMover code. 2017-02-01 00:21:30 +01:00
alexey.lysiuk
3d147a032c Proper RDTSC implementation for x86_64 targets
Higher 32 bits of Time Stamp Counter were ignored in non-MSVC Windows and macOS builds
2017-01-31 17:51:12 +02:00
alexey.lysiuk
47faaa87fc Fixed deprecation warning reported by Clang
warning: 'register' storage class specifier is deprecated and incompatible with C++1z [-Wdeprecated-register]
2017-01-31 17:41:44 +02:00
alexey.lysiuk
b12c8a8f79 RDTSC-based glcycle_t for macOS
Time profiler implementation is now closer to Windows version
2017-01-31 16:00:14 +02:00
alexey.lysiuk
1cdfcb4935 RDTSC-based cycle_t for macOS
Windows and macOS now share most of related code
Old implementation using mach_absolute_time() was more precise (at least in theory) but too costly
2017-01-31 15:57:47 +02:00
alexey.lysiuk
6225f60eb2 Added cheat flag for console variables
CVAR with this flag can be set in console or from command line when sv_cheats is enabled
There is no such restriction for changing its value from ACS, via SetCVar() and related functions
'cheat' modifier can be used in CVARINFO lump to create variable of this kind
2017-01-31 14:08:09 +01:00
Christoph Oelckers
94d5d6848e - moved all code that deletes some data from P_SetupLevel to P_FreeLevelData so that P_Shutdown can also call it.
This is particularly important for camera textures which otherwise would not be taken down before a restart.
2017-01-31 13:46:35 +01:00
Christoph Oelckers
3131c08640 - fixed: the restart CCMD must clear out all statically stored pointers to VM functions because they do not survive the shutdown that is needed before loading new data. 2017-01-31 13:41:23 +01:00
Christoph Oelckers
f0a325a904 - fixed: The restart CCMD needs to clear the global FraggleScript before taking down the class system.
This is a soft root and would never be deleted otherwise.
2017-01-31 13:22:05 +01:00
Christoph Oelckers
a188a8839a - fixed a typo in Hexen's light definitions. 2017-01-31 10:09:44 +01:00
Christoph Oelckers
0e5aee48aa - clamp MAPINFO provided fog density values to a valid range because negative values can trigger undefined shader behavior. 2017-01-30 22:23:36 +01:00
Christoph Oelckers
7c5e3fb677 - disabled angular interpolation again.
This can only be used if the entirety of the game code is aware and dealing with this properly. However, that isn't the case so the amount of glitches this causes far exceeds the number of desired interpolations.
2017-01-30 14:19:50 +01:00
Christoph Oelckers
ba629379ca - fixed: for levels with 0-length lines the allocation size of the lines array was too large because it didn't subtract those deleted lines. 2017-01-30 00:25:40 +01:00
Christoph Oelckers
b93c3619e9 - fixed: The implementation for Doom64 colors did not handle particles. 2017-01-29 18:57:47 +01:00
Christoph Oelckers
729eade8f5 - enable terrain splashes for non-solid non-swimmable 3D floors. 2017-01-29 18:46:35 +01:00
Christoph Oelckers
2883b113f3 - fixed bad scale setting for SBarInfo. 2017-01-29 18:33:19 +01:00
Christoph Oelckers
eef91463ab - fixed: Non-actor classes never called InitializeDefaults to set up their special variables.
- fixed: DThinkerIterator and DBlockThingsIterator did not have a default constructor that was safe to call from an out-of-game context.
2017-01-29 18:23:39 +01:00
Christoph Oelckers
c0ef052d07 - added interpolation for actor angles which for models is needed. 2017-01-29 13:13:00 +01:00
Christoph Oelckers
1884c8a98d - ensure that the radius of a dynamic light remains positive to avoid problems with the assumption that a light has an actual size.
- extended the maximum settable light size in GLDEFS to 1024 throughout.
- fixed: A fullbright flat should not be subjected to a sector's material color.
2017-01-29 12:00:05 +01:00
Christoph Oelckers
a2a1d214c0 - extended give and take cheat's arguments to full integers. 2017-01-29 11:45:28 +01:00