Commit graph

15590 commits

Author SHA1 Message Date
Christopher Bruns
0fb940632a Reduce number of blits required in stereo 3D by tracking current eye. 2019-03-04 13:14:41 +01:00
alexey.lysiuk
802d37f377 - fixed compilation of Linux target
Base and OpenGL framebuffer classes still require proper splitting
2019-03-04 12:47:00 +02:00
alexey.lysiuk
7efa231e4e - fixed compilation of macOS target
Base and OpenGL framebuffer classes still require proper splitting
2019-03-04 12:46:37 +02:00
alexey.lysiuk
6144f02f67 - initialized all members of VkWin32SurfaceCreateInfoKHR
Without such initialization vkCreateWin32SurfaceKHR() crashed inside AMD Vulkan driver
2019-03-04 11:36:38 +02:00
alexey.lysiuk
30c6ae5078 - fixed compilation of 32-bit Windows targets and MSVC 2015 2019-03-04 11:35:12 +02:00
Magnus Norddahl
0e43979c28 - fix colormask alpha typo 2019-03-04 01:54:57 +01:00
Magnus Norddahl
f04522c397 - fix depthstencil attachment not being attached when only stencil tests were enabled 2019-03-04 01:49:27 +01:00
Magnus Norddahl
99c3d72aa0 - fix typos 2019-03-04 01:23:13 +01:00
Magnus Norddahl
ddf21ffd72 - create a descriptor for each texture+sampler configuration in use 2019-03-04 00:28:37 +01:00
Magnus Norddahl
eaf367e876 - add depth bias 2019-03-04 00:14:28 +01:00
Magnus Norddahl
cf49e1ec21 - add depth clamp support 2019-03-03 23:54:13 +01:00
Magnus Norddahl
56afcd210b - fix: gl_PointSize is required in Vulkan when drawing points
- fix: add depthstencil attachment when stencil is active while depth is not
2019-03-03 23:30:36 +01:00
Magnus Norddahl
923fb5c127 - implement the depth and stencil states 2019-03-03 22:25:38 +01:00
Rachael Alexanderson
068522f9c8 - fix building on FreeBSD 2019-03-03 17:08:45 +01:00
Christopher Bruns
73c7afe409 Fix typo and add clarifying comment. 2019-03-03 16:15:38 +01:00
Christopher Bruns
52ab4b968f Remove Quad-buffered from list of VR-modes if we know it won't work. 2019-03-03 16:15:38 +01:00
Rachael Alexanderson
8fab907885 - set language cvar to global config, it should not be game-specific 2019-03-03 16:14:58 +01:00
Magnus Norddahl
d516b2ff7b - fix typo and add color 2019-03-03 14:40:56 +01:00
Magnus Norddahl
9d792f79f1 - add vulkan info to startup log 2019-03-03 14:32:03 +01:00
Magnus Norddahl
7d56aa4b0b Merge remote-tracking branch 'origin/master' into vulkan2 2019-03-03 13:45:22 +01:00
Christoph Oelckers
213dfd2aaa - fixed: when resizing the viewpoint buffer, the 2D entry must be reset so that for the next frame it gets recalculated. 2019-03-03 13:26:10 +01:00
Christoph Oelckers
3698a5edc1 - replaced the assignment operator in player_t with a named function.
This didn't behave like an assignment operator so it shouldn't be one, especially since the two places where it got called need different functionality.
2019-03-03 12:12:17 +01:00
Christoph Oelckers
b3cff43be3 - fixed: SBARInfo's Tick function was using actor references from its last Draw operation.
Between these two calls these can change so these need to be retrieved each time either Draw or Tick are called.
2019-03-03 09:59:08 +01:00
Rachael Alexanderson
13d07e7912 - fix what appears to have been an accidental debug commit, this broke portals and skies 2019-03-03 03:24:55 -05:00
Christoph Oelckers
f3813c036f - filter out the BIGFONT lump in Chex Quest, now that we have a more complete font internally. 2019-03-03 07:50:10 +01:00
Magnus Norddahl
fd752dec54 - don't search for a renderpass if the current one matches 2019-03-03 00:16:00 +01:00
Magnus Norddahl
1d003ca3fc Merge branch 'vulkan2' of https://github.com/coelckers/gzdoom into vulkan2 2019-03-03 00:06:33 +01:00
Magnus Norddahl
cab441591f - add some of the same checks that glrenderstate uses 2019-03-03 00:06:17 +01:00
Christoph Oelckers
6ba8fee5c2 Merge branch 'master' into vulkan2 2019-03-03 00:04:19 +01:00
Magnus Norddahl
c657d8fd1e - only bind vertex and index buffers if they change 2019-03-02 23:56:06 +01:00
Magnus Norddahl
c30edaa21a - only update matrices if they change 2019-03-02 23:47:56 +01:00
Magnus Norddahl
2a6d37dd73 - clean up Apply function 2019-03-02 23:39:44 +01:00
Magnus Norddahl
0c9d27d078 - create an array for the stream data 2019-03-02 23:20:29 +01:00
Christoph Oelckers
eacc6c8e08 - fixed: ACS's LocalAmbientSound did not check the activator before calling its methods. 2019-03-02 23:01:42 +01:00
Magnus Norddahl
656a3b8fba - allocate more descriptors in the pool 2019-03-02 22:41:36 +01:00
Christoph Oelckers
0dc3485990 - fixed: in CollectWithinRadius, make pos a value variable instead of a reference.
The underlying data here can be reallocated and invalidate what it points to.
2019-03-02 22:10:44 +01:00
Magnus Norddahl
ef30ddbd40 - fix typo 2019-03-02 21:34:34 +01:00
Magnus Norddahl
763e33badb - fix typo 2019-03-02 21:12:50 +01:00
Christoph Oelckers
0f184a0f28 - reject all DMX sounds shorter than or equal 8 bytes.
8 bytes is the minimum header size for DMX, so for one byte of sample data it has to be 9 bytes.
This was causing access to invalid memory when trying to read the header of something too short.
For other file formats this is of no concern because none has a header this short.
2019-03-02 21:10:24 +01:00
Magnus Norddahl
b0b4028e0b - align by 256 instead of 128 2019-03-02 17:51:57 +01:00
Magnus Norddahl
327b9a91f1 - fix one more validation error 2019-03-02 17:27:19 +01:00
Magnus Norddahl
47ce44e5f0 - add missing image usage flag 2019-03-02 17:20:14 +01:00
Magnus Norddahl
1bdaf24fa8 - add features reported by validation layer 2019-03-02 17:17:33 +01:00
Magnus Norddahl
09ea775b40 - make the vulkan logging a bit more readable 2019-03-02 17:11:23 +01:00
Magnus Norddahl
28f83fc9db - found the stupid bug that caused validation layer not to work.. 2019-03-02 16:52:33 +01:00
Magnus Norddahl
8854fad165 - fix some additional image transition errors reported by RenderDoc during the first frame 2019-03-02 16:36:29 +01:00
Magnus Norddahl
718f9e36fa Merge branch 'vulkan2' of https://github.com/coelckers/gzdoom into vulkan2 2019-03-02 16:02:43 +01:00
Magnus Norddahl
b1f161040d - transition image layouts and setup pipeline barriers (fixes some errors reported by RenderDoc) 2019-03-02 16:02:27 +01:00
Christoph Oelckers
dc9a995695 - output the error code when submitting a command buffer fails. 2019-03-02 15:57:43 +01:00
Christoph Oelckers
d893299185 - fixed: static event handlers must also receive WorldLoaded events on loading a savegame. 2019-03-02 13:50:58 +01:00
Christoph Oelckers
9ab57e242b - fixed: PlayerStartStomp must check for NOTELEFRAG. 2019-03-02 13:35:35 +01:00
Christoph Oelckers
00febf0498 - fixed: FLevelLocals did not set the owner for its event manager. 2019-03-02 13:24:52 +01:00
Christoph Oelckers
0febe20a08 - fixed: Unmorphing a monster did not clear its UNMORPHED flag. 2019-03-02 13:15:38 +01:00
Christoph Oelckers
4cf90d70ae - fixed: cl_maxdecals did not reset the decal counter when deleting decals. 2019-03-02 12:58:28 +01:00
Christoph Oelckers
5f6198f4e4 - let IWAD and PWAD BigFonts override BigUpper for consistency. 2019-03-02 12:54:46 +01:00
Christoph Oelckers
ce1ecd0d4b - implemented string table macros. 2019-03-02 12:06:24 +01:00
Magnus Norddahl
05a6896d4f - Pass vertex color and normal via uniform buffer when the attribute isn't available 2019-03-02 01:56:08 +01:00
Magnus Norddahl
1430d9012e - fix shutdown crash and some minor adjustments 2019-03-02 00:46:25 +01:00
Christoph Oelckers
fa123f37c7 - adjustment for renamed spreadsheet. 2019-03-01 22:04:39 +01:00
Magnus Norddahl
d86a56086c Merge remote-tracking branch 'origin/master' into vulkan2 2019-03-01 21:50:06 +01:00
Magnus Norddahl
7871ec06ae - add depth/stencil attachment to the render pass 2019-03-01 21:34:08 +01:00
Christoph Oelckers
a5d9d334d2 - fixed: The lump renaming was not performed for Doom, even for those pieces where needed. 2019-03-01 20:21:15 +01:00
Magnus Norddahl
d73b0b3146 - create helper function for copying 2019-03-01 20:15:56 +01:00
Magnus Norddahl
ee8349d168 - add support for specifying the topology 2019-03-01 20:06:20 +01:00
Magnus Norddahl
01c78d7238 - add a bit of bounds checking just to be safe 2019-03-01 19:15:52 +01:00
Magnus Norddahl
195e91adc9 - hook up the hardware renderer 2019-03-01 19:01:06 +01:00
Magnus Norddahl
308c884d02 - use a linked list to keep track of all allocated VkHardwareTexture objects 2019-03-01 18:31:33 +01:00
Magnus Norddahl
c691a8fe64 - bind the vertex inputs as specified by its vertex buffer format 2019-03-01 15:37:13 +01:00
alexey.lysiuk
2939bc701e - fixed compilation error with GCC and Clang
src/intermission/intermission_parse.cpp:941:2: error: no matching function for call to 'F_StartFinale'
2019-03-01 10:06:34 +02:00
Magnus Norddahl
b0fd5db616 - remove misplaced todo 2019-03-01 02:42:24 +01:00
Magnus Norddahl
d4118a755c - load all the shaders and use the right one for each renderpass 2019-03-01 02:40:02 +01:00
Magnus Norddahl
f1f8797d3c - bind the layer textures 2019-03-01 01:30:10 +01:00
Magnus Norddahl
7f3e473f56 - create a render pass for each blend setup 2019-03-01 00:42:51 +01:00
Marisa Kirisame
bc5baae827 Folder casing changes for Linux compatibility. 2019-02-28 23:56:29 +01:00
Christoph Oelckers
23a62cbe12 - added a 'testfinale' CCMD, so that the layout of finale texts can be tested more easily 2019-02-28 23:52:47 +01:00
Christoph Oelckers
86620aaba5 - allow reading xlsx spreadsheets directly for language definitions. 2019-02-28 22:21:55 +01:00
Christoph Oelckers
cad2f49ceb - use BigUpper font for option menu captions. 2019-02-28 22:19:53 +01:00
Major Cooke
b48f7da43e Renamed to musplaying. 2019-02-28 18:47:28 +01:00
Major Cooke
210af0d414 Exported MusPlayingInfo to ZScript.
- Allows grabbing the currently playing song, base order, and loop properties.
2019-02-28 18:47:28 +01:00
Magnus Norddahl
e472050f36 - use dynamic state for viewport and scissor 2019-02-28 15:45:59 +01:00
Magnus Norddahl
45061e8b44 - no need to debug with a red clear anymore 2019-02-28 01:22:38 +01:00
Magnus Norddahl
9a5112c1c9 - tell the memory allocator when we are going to persistently map something 2019-02-28 01:18:29 +01:00
Magnus Norddahl
2e0b34ca72 - hook up enough of renderstate to enable all of main.vp and main.fp 2019-02-28 00:26:49 +01:00
Christoph Oelckers
fab8fed8df - reformat the intermission screen if the text is very long.
This will ensure better visibility on widescreen displays, at least.
2019-02-27 22:52:08 +01:00
Magnus Norddahl
c2e0eba270 - hook up vid_vsync and vk_debug 2019-02-27 22:20:18 +01:00
nashmuhandes
407983749a Added a master volume setting. 2019-02-27 14:17:45 -05:00
Magnus Norddahl
b4154f1772 - fix palette color problem 2019-02-27 16:28:29 +01:00
Magnus Norddahl
96547713d9 - hook up the software renderer 2019-02-27 15:37:37 +01:00
Christopher Bruns
8becc0e78d Enable menu blur in stereo 3d.
Use more blitting to avoid confusing framebuffer state management in stereo 3D.
2019-02-27 09:51:02 +01:00
Magnus Norddahl
a3c21e0b01 - upload some real texture contents 2019-02-26 22:45:18 +01:00
Magnus Norddahl
fe67a2c24f - fix enough bugs to finally get some visuals 2019-02-26 20:19:54 +01:00
Magnus Norddahl
e1d1358249 - add missing field 2019-02-26 20:18:30 +01:00
Christoph Oelckers
90ab830ff9 - added a workaround for mods using the name CONFONT directly.
In the old system it just loaded the font a second time, but with the folder based setup there is no file named CONFONT anymore so it needs to be dealt with explicitly.
2019-02-26 19:19:03 +01:00
Magnus Norddahl
19f4133768 - move most push constants to dynamic uniform buffers 2019-02-26 16:50:54 +01:00
Magnus Norddahl
d958c4fec5 - upload and bind some textures 2019-02-26 15:29:08 +01:00
Magnus Norddahl
347339b254 - add a very basic present shader using a blit
- avoid dealing with image layout transitions for the blit by using VK_IMAGE_LAYOUT_GENERAL for now
2019-02-26 12:25:17 +01:00
Magnus Norddahl
854526dee4 - submit the upload commands 2019-02-26 11:58:03 +01:00
Magnus Norddahl
e875198b37 - create raii objects for semaphore and fence 2019-02-26 11:44:29 +01:00
Magnus Norddahl
27e78e7d8d - remove unused code 2019-02-26 11:31:09 +01:00
Magnus Norddahl
9ed1c7f40b - add render pass manager and setup a pipeline for VkRenderState 2019-02-26 11:27:29 +01:00
Magnus Norddahl
fbfcc30d00 Merge branch 'vulkan2' of https://github.com/coelckers/gzdoom into vulkan2 2019-02-26 11:21:42 +01:00
Magnus Norddahl
69229d7719 - add missing forward declarations 2019-02-26 11:20:24 +01:00
Christoph Oelckers
e8f690116b - removed unused gl_spritebrightfog CVAR. 2019-02-26 00:07:30 +01:00
Christoph Oelckers
4a427694ac - changed calculation of the scaling value for the option menu.
This was already far too generous and caused space problems, but with localization these became a lot worse, so now it will try to allocate at least 640 virtual pixels for the menu width and only go below that for small resolution ranges where the smaller value would result in too small text.
2019-02-26 00:07:09 +01:00
Christopher Bruns
051145b2c8 Use flag to avoid second eye stereo color problem 2019-02-25 00:14:41 +01:00
Christopher Bruns
e83092a7eb Fix stereo-3D 2D quad color problem. 2019-02-25 00:14:41 +01:00
Christoph Oelckers
b670d5f372 - fixed utf8_decode.
This function was written for already validated UTF-8 but not for text that can be mixed with ISO-8859-1.
To handle that properly it needs to do a bit more validation to avoid mangling its output and instead reject invalid input.
2019-02-24 13:55:08 +01:00
Christoph Oelckers
0676a98efc - fixed: ACS must use COPY_AAPTREX for all pointer transfers.
It was already correct for most, but two cases have slipped through.
2019-02-24 12:10:56 +01:00
Christoph Oelckers
6129f9a9cc - fixed a warning and set NOINITCALL for a few CVARs accessing the current level.
These inits are done at a time when the data isn't even initialized so they will get overwritten anyway.
2019-02-24 10:05:01 +01:00
Christoph Oelckers
d5f138f14d - made the text comparison for Dehacked case insensitive so that the contents of the string table can be properly capitalized without breaking old-style string replacements. 2019-02-23 20:23:04 +01:00
Christoph Oelckers
413412f603 Merge branch 'master' into vulkan2 2019-02-23 19:53:38 +01:00
Rachael Alexanderson
7098748e9e - fix building on case sensitive systems 2019-02-23 13:51:24 -05:00
Christoph Oelckers
bae0094039 - fixed the status bar string drawers which weren't UTF-8 capable yet. 2019-02-23 19:44:00 +01:00
Christoph Oelckers
c5156d4598 - moved around a few more files. 2019-02-23 18:57:49 +01:00
Christoph Oelckers
c3890342e6 - moved the 2D drawing code to its own directory under 'rendering'. 2019-02-23 18:08:57 +01:00
Christoph Oelckers
ef3e5ef01e - moved a few parts from g_level.cpp to better fitting places. 2019-02-23 15:21:54 +01:00
Christoph Oelckers
2874a36fbe - added the final missing piece of localization support, i.e. forcing text based menus.
Now a localization mod can disable the graphics patches containing text entirely so that it can properly localize the text based menu variant.
If this flag gets set in MAPINFO, it will override all user settings.
2019-02-23 10:40:07 +01:00
Christoph Oelckers
add10029b9 - fixed chat input. 2019-02-23 09:54:18 +01:00
Christoph Oelckers
a50a0c5b0d - fixed: empty strings cannot be substituted. 2019-02-23 09:20:30 +01:00
Christoph Oelckers
e091369a38 - removed FCriticalSection and replaced all of its uses with std::mutex.
There's really no need for a non-standard solution here anymore with C++11.
This also fixes an unreleased lock in the WildMidi code.
2019-02-22 20:24:24 +01:00
Christoph Oelckers
3d9dce0156 - fixed DHUDMessageTypeOnFadeOut with empty messages. 2019-02-22 19:58:52 +01:00
Christoph Oelckers
f907bb0484 - moved a few more things and deleted the unused v_pfx implementation.
These were pixel format conversion routines used in the D3D backend. Nothing in here is needed anymore - the FBitmap class offers much of the functionality covered here in a far more concise and approachable manner.
2019-02-22 19:48:18 +01:00
Christoph Oelckers
b386603044 - deleted the unused lumpconfigfile.
The chance that this will ever see some use is precisely zero so there's no need keeping this code around.
2019-02-22 19:13:40 +01:00
Christoph Oelckers
8c06a00ee6 - moved all dialogue loading code into the map loader. 2019-02-22 19:07:58 +01:00
Christoph Oelckers
e06aa28620 - fixed the usedcolor array's base type.
The usedcolors array which counts the number of pixels in a given color in a font used bytes as storage, so any color that just happened to have a count that is a multiple of 256 the color was considered not present.
2019-02-22 18:19:26 +01:00
Magnus Norddahl
52460d53d9 - compile main.vp and main.fp for vulkan 2019-02-22 11:30:48 +01:00
Magnus Norddahl
a97d736bd9 - add vulkan renderstate and shadermanager classes 2019-02-21 22:49:00 +01:00
Magnus Norddahl
c606346ae3 - remove dead code 2019-02-21 21:23:44 +01:00
Magnus Norddahl
478ef05a0a - create vulkan buffer objects implementation 2019-02-21 12:31:14 +01:00
Magnus Norddahl
fc79cd1280 - present an empty back buffer while keeping vsync 2019-02-21 10:19:59 +01:00
Christoph Oelckers
2eb312e041 - added a kerning option to FONTDEFS 2019-02-21 01:02:42 +01:00
Christoph Oelckers
2907ba69a0 - implemented OkForLocalization 2019-02-21 00:56:03 +01:00
Christoph Oelckers
48fcdacf06 - more work on graphics substitutiion
* added a CVAR that sets how localizable graphics need to be dealt with.
* pass the substitution string to OkForLocalization so that proper checks can be performed.
* increased item spacing on Doom's list menus to 18 from 16 pixels, because otherwise the diacritic letters would not fit. 20 would have been more ideal but 18 was the limit without compromising its visual style
* added a second text-only main menu because here the spacing cannot be changed. Doing so would render any single-patch main menu non-functional. So here the rules are that if substitution takes place, it will swap out the entire menu class.
* fixed some issues with the summary screen's "entering" and "finished" graphics.
2019-02-21 00:35:27 +01:00
Magnus Norddahl
75403ec744 - hook up the glsl compiler 2019-02-21 00:25:51 +01:00
Christoph Oelckers
8bdbd2e915 - fixed layout of summary screen. 2019-02-21 00:16:48 +01:00
Magnus Norddahl
c6b29846d0 - add 3rd party vulkan dependencies
- add stubs for a vulkan hw renderer backend
- add RAII wrappers for vulkan object types
- add builder classes to isolate vulkan boilerplate code
- add a swap chain class
2019-02-20 21:21:57 +01:00
Christoph Oelckers
6a742f8d34 - changed all places which used a localized string as a format template for printf, String.Format et.al.
Passing something non-constant at compile time here is extremely dangerous, especially when users can replace those strings if they like.
It now uses FString::Substitute in all cases where something needs to be inserted into a template string.
2019-02-20 20:20:06 +01:00
Christoph Oelckers
15eb57e00d - finalized graphics substitution feature. 2019-02-20 19:40:17 +01:00
Christoph Oelckers
ecb1c2ee4a - initialize the language right after reading the strings. 2019-02-20 19:30:39 +01:00
Christoph Oelckers
0e449405a4 - fixed string checks in dialogue loader. 2019-02-20 19:12:32 +01:00
Christoph Oelckers
d2ac77e721 - fixed reading of exit text replacements and display of intermission text screens for Unicode. 2019-02-20 19:04:34 +01:00
Christoph Oelckers
64dc582fbe - reworked texture lookup for localized textures 2019-02-20 00:52:31 +01:00
Christoph Oelckers
8587f253a8 - fixed a typo 2019-02-20 00:43:06 +01:00
Christoph Oelckers
4eb8b53d95 - enforce that localized graphics need to be the same size as the one they replace.
This is one of those things where the work needed to make it robust stands in no relation to the gain.
This simply isn't worth the hassle of going through the entire code and fixing every single use of the 2D texture drawing functions.

Unfortunately this means that the graphics items for the menu cannot be replaced this way because their size will most likely differ, but considering that the only candidates for this are the contents of Doom's main menu, the episode menu, the skill menu and the single player summary screen, it's simply not worth it.

In all these cases the IWAD contents can just as easily be replaced with text and user mods which want to offer localized menus will have to work within the confines of the system, e.g. making sure that all menu items are designed to have proper size for substitution to work or by requesting text based menus, which will be added as a modding feature later.
2019-02-20 00:42:02 +01:00
Christoph Oelckers
5f25fbb2e3 - added support for localized texture replacements
This reads the textures and builds the data tables, but doesn´t use the textures yet.
A bit more work is needed first.
2019-02-20 00:22:00 +01:00
Christoph Oelckers
5e7fb16d05 - preparation work for substituting the menu and intermission screen text graphics for localization 2019-02-19 01:22:12 +01:00
Christoph Oelckers
10a017e104 - fixed: The language ID was set before reading the config.
This essentially rendered saving the language CVAR useless.
2019-02-19 00:29:22 +01:00
Christoph Oelckers
91206f12be - changed zstrformat to allow %c to emit non-ASCII characters as UTF-8. 2019-02-19 00:27:47 +01:00
Christoph Oelckers
c5a6c72719 - fixed uninitialized variable and a few warnings. 2019-02-18 23:36:56 +01:00
Christoph Oelckers
b98c3b766c - added a function that creates a texture for a text in a given font.
Not tested yet, this is for synthesizing localized variant of Doom's textures with text content.
2019-02-18 20:53:56 +01:00
Christoph Oelckers
5970040672 - fixed: The wbstartstruct that gets passed to the level summary screen needs to be static
This variable is needed long after the function which sets it up will be exited. So this either needs to be dynamically allocated or static, and in this case using a static variable is simpler.  However, unlike before, it is only being accessed in the one function that needs to initialize it and pass to the summary screen and nowhere else.
2019-02-18 00:43:40 +01:00
Major Cooke
32e65ff11d Pass the target as the source for active damage modifiers (i.e. PowerDamage) instead of the actual source.
- Getting the victim would be impossible otherwise, and passing in the original source is redundant when there's already the owner.
2019-02-16 17:26:21 +01:00
alexey.lysiuk
3864ed78e0 - fixed: offsets got lost in font's translated textures
https://forum.zdoom.org/viewtopic.php?t=63667
2019-02-16 17:26:02 +01:00
Rachael Alexanderson
35e2d40641 Squashed commit of the following:
- Implement page string names for dialog lumps
    - Create special new GZDoom name space for ZSDF
    - add usdf_gzdoom spec document
    - fixed: restored original behavior with negative conversation id's for the original strife dialog lumps
    - reposition the binary strife fix in a more appropriate location
    - add compatibility fix for negative numbers in responses in USDF/ZSDF (don't know if it's actually necessary)
2019-02-16 17:25:23 +01:00
Robert Cochran
07e0323771 Add handling of left and right mousewheel events to the SDL2 input path 2019-02-16 17:23:14 +01:00
Major Cooke
823eb90af8 - Fixed monsters waking up even if all the damage was absorbed without pain causing flags
- Fixed FORCEPAIN not overriding PainThreshold property
2019-02-15 18:57:34 +01:00
alexey.lysiuk
769be00483 - fixed automap marks placement with custom fonts
Automap rotation wasn't taken into account when drawing marks

https://forum.zdoom.org/viewtopic.php?t=63693
2019-02-15 17:21:59 +02:00
Christoph Oelckers
aa550310f6 - allow the language table to supersede the title patches, if appropriate
For the Doom IWADs the provided font looks almost identical to the characters used on the title patches. So, for any level name that got replaced in some language, it will now check if the retrieved name comes from the default table, and if not, ignore the title patch and print the name with the specified font.

This also required removing the 'en' label from the default table,  because with this present, the text would always be picked from 'en' instead of 'default'. Since 'en' and 'default' had the same contents, in any English locale the 'default' table was never hit, so this won't make any difference for the texts being chosen.

Last but not least, wminfo has been made a local variable in G_DoCompleted. There were two places where this was accessed from outside the summary screen or its setup code, and both were incorrect.
2019-02-15 00:29:24 +01:00
Christoph Oelckers
44c8c2a79c - added German Umlauts for the BigFont and fixed the character substitution logic.
For pure uppercase fonts it makes no sense to try a lowercase substitution as a first step.
2019-02-17 23:18:28 +01:00
Christoph Oelckers
45d75745f0 - reworked console font loading to use the glyph sheets directly and allowing to load more than one per font. 2019-02-17 19:15:57 +01:00
Christoph Oelckers
95e62e91bb - split the FFont base class into its own file. 2019-02-17 13:50:57 +01:00
Christoph Oelckers
0963156c0a - did a bit of fine tuning to the character replacement mappings:
* prefer accent-less lower case over uppercase letters if an accented lower case letter cannot be found.
* added accent-less mappings for Latin Extended 1 (0x100-0x17f) and some easy to handle characters between 0x200 and 0x220. This should allow to display all Eastern European text without empty gaps for missing letters.
2019-02-17 13:41:04 +01:00
Christoph Oelckers
9102fb86a5 - moved FSpecialFont to its own file. 2019-02-17 12:53:12 +01:00
Christoph Oelckers
1f0c01459a - split FSinglePicFont into its own file. 2019-02-17 12:29:08 +01:00
Christoph Oelckers
7f1f25d998 - split the FSingleLumpFont class into its own file. 2019-02-17 12:00:04 +01:00
Christoph Oelckers
9dfffb6697 - moved font code into a subdirectory. 2019-02-17 11:43:04 +01:00
Christoph Oelckers
78d0fa9269 - fixed Windows startup.
* the window class name was still ASCII, thanks to some totally pointless and ultimately dangerous type cast to LPCTSTR which rendered all type checks ineffective.
* use wWinMain instead of WinMain so that a Unicode argv gets created. For whatever reason, the ANSI startup leaves this variable empty.
* added a 'disablecrashlog' CCMD for Windows. It is a lot more useful with a debugger present to get the standard crash notification from the system which allows opening a debugger than the crash log and no option to open a debugger.
2019-02-17 10:10:41 +01:00
Christoph Oelckers
f512f29270 - fixed crash log display.
This still contained pieces where a multibyte string was passed through SendMessage and WM_SETTEXT. All these have been replaced with SetWindowTextW.
This commit also removes the never used crash log upload code and all associated assets because it is extremely unlikely that such a feature will ever be implemented.
2019-02-17 08:50:49 +01:00
Christoph Oelckers
d39a624942 - fixed the player name display.
This was broken by several small unicode-incompatible code fragments.
This commit also removes the input limit for the player name and the savegame description. With multibyte encoding, limiting them to a fixed length did not work right.
Currently these will just overflow the fields if the text becomes too long, this needs some additional work.
2019-02-16 22:57:02 +01:00
Christoph Oelckers
deb233677e - made the menu's text input handler Unicode capable.
Also make sure that the savegame description remains readable. Unlike in-game text this can be done without double-encoding existing UTF-8.
2019-02-16 21:29:46 +01:00
Christoph Oelckers
54cb16ad8e - made the chat input Unicode-capable.
Also changed this to use the console font because it is far better equipped with special characters than the small font.
2019-02-16 18:49:38 +01:00
Christoph Oelckers
d15e3391a0 Merge remote-tracking branch 'remotes/origin/master' into localization
# Conflicts:
#	src/v_font.cpp
2019-02-16 17:35:15 +01:00
Rachael Alexanderson
0fc4640cc9 - fix building in 32 bit windows 2019-02-16 11:12:10 -05:00
Rachael Alexanderson
9f62289507 Merge branch 'master' of https://github.com/coelckers/gzdoom into localization 2019-02-16 10:50:49 -05:00
Christoph Oelckers
64685705d0 - made the console Unicode-capable.
This also necessitated some character remapping in the console font to move the Windows-1252 extra characters to their proper Unicode code points.
2019-02-16 13:05:19 +01:00
Christoph Oelckers
8018ebfab5 - use the Unicode version of Windows's clipboard functions. 2019-02-16 09:50:00 +01:00
Christoph Oelckers
b4d96aaef9 - made Windows backend parts of the console Unicode capable. 2019-02-15 22:05:26 +01:00
Christoph Oelckers
9fba9eee18 Merge branch 'localization' of https://github.com/coelckers/gzdoom into localization 2019-02-15 10:20:14 +01:00
Christoph Oelckers
c49665684b - fixed DHudMessageTypeOnFadeOut's character counter to be UTF-8 compatible.
This was reading the string by byte and not by character and could end up printing incomplete UTF-8 data.
2019-02-15 08:52:56 +01:00
Christoph Oelckers
340d7bce8d - added some character counting utilities to FString. 2019-02-15 08:51:41 +01:00
Christoph Oelckers
868ac5adf8 - switched the Windows backend to use the Windows Unicode API.
With localization for non-Latin languages on the support list the multibyte API doesn't cut it anymore. It neither can handle system text output outside the local code page nor can an ANSI window receive text input outside its own code page.
Similar problems exist for file names. With the multibyte API it is impossible to handle any file containing characters outside the active local code page.

So as of now, everything that may pass along some Unicode text will use the Unicode API with some text conversion functions. The only places where calls to the multibyte API were left are those where known string literals are passed or where the information is not used for anything but comparing it to other return values from the same API.
2019-02-14 22:23:33 +01:00
Christoph Oelckers
5f574033b5 pass full Unicode characters to EV_GUI_Char for Linux and macOS.
The Linux backend looked like it didn't handle anything non-ASCII at all, but this all needs to be tested.
Windows will be a bit more work because it requires using the Unicode API for creating the main window.
2019-02-14 14:29:49 +01:00
Rachael Alexanderson
0d2a24876b - Remove "gitversion.h" from "version.h" - should result in faster compiles after a commit in Windows
- Fix zdoom.rc to show the actual git commit tag and id for the Product Version
- Made zdoom.rc "codepage 1252" compliant as dictated by the #pragma (if this needs changed the pragma should be updated, this was messing up the version strings in the final compile)
2019-02-13 21:34:44 -05:00
alexey.lysiuk
be6ce43045 - added ability to customize font of automap marks
Set am_markfont CVAR to a desired font name
Use am_markcolor to select a text color, has no effect with the default font, AMMNUMx
2019-02-13 21:47:53 +01:00
Christoph Oelckers
8efc3188b9 - fixed map name setup
This was broken when localization for Hexen was added.
2019-02-13 00:47:03 +01:00
Christoph Oelckers
ef050d700c - Fixed loading of folder based fonts and added a config lump per font.
This is done by putting a font.inf file into the folder.
Current options are "Kerning", "Scale", "FontHeight" and "SpaceWidth"
2019-02-13 00:02:39 +01:00
Christoph Oelckers
e526cebc8e Merge remote-tracking branch 'origin/master' into localization 2019-02-12 00:20:00 +01:00
Christoph Oelckers
0b8fb3ac1a - cleanup of font init to have less special cases
To make things easier, DBIGFONT, SBIGFONT and HBIGFONT will now be renamed in the lump directory to make things a bit easier to handle.

Another change is to make font folders atomic units to prevent cross-pollution between incompatible fonts. The only exception to this are the def* folders because they need to piece together their fonts from both zd_extra.pk3 and the IWADs.
2019-02-12 00:19:44 +01:00
alexey.lysiuk
d4d010ac32 - added compatibility flag for buggy CheckSwitchRange behavior
https://forum.zdoom.org/viewtopic.php?t=63008
https://forum.zdoom.org/viewtopic.php?t=63650
2019-02-11 17:57:03 +01:00
Christoph Oelckers
fe981c68d3 - changed font loader to detect fonts in folders and to find all default fonts in folders. 2019-02-11 01:58:51 +01:00
Christoph Oelckers
e4690b4cd8 - exported all Hexen map names and intermission texts to the language table.
As IWAD content this is in zd_extra.pk3.
2019-02-11 01:33:09 +01:00
Christoph Oelckers
6d19374ae8 Only replace Strife dialogue content if the default strings from zd_extra.pk3 are present.
If not, use the dialogue file's content directly.
2019-02-11 00:46:13 +01:00
Christoph Oelckers
af5a2fe522 - removed the ActiveSequences counter.
It was only used to avoid traversing the list if all sequences were paused which is an exceptional situation.
On the other hand, the way it counted was not correct so rather than fixing it it seemed more appropriate to remove it entirely.
2019-02-10 20:30:40 +01:00
Christoph Oelckers
5e6a96d021 - fixed path of texture directory. 2019-02-10 14:08:27 +01:00
Christoph Oelckers
993a16787c - removed the special exception for those weird "No..." messages and moved the only one that isn't garbage to the language lump. 2019-02-10 09:59:05 +01:00
Christoph Oelckers
e57b16b9e7 - exported the character names of Strife's dialogues. 2019-02-09 13:15:30 +01:00
Christoph Oelckers
b1820039d7 - exported Strife's log texts to the string table.
This is dpne as a two-stage approach. TXT_LOGTEXTxxx will always take precedence over the log lumps, and TXT_ILOGxxx will only replace the original IWAD content.
This is so that PWADs replacing these lumps don't get overridden by the default texts.
2019-02-09 12:52:50 +01:00
Christoph Oelckers
88e227f1f3 Merge branch 'new_level_refactor' into localization 2019-02-09 12:22:15 +01:00
Christoph Oelckers
59954fa4f9 - fixed accidentally duplicated variable name in ChangeLevel function. 2019-02-09 12:07:30 +01:00
Christoph Oelckers
4642df3052 - fixed dropoff checks for portals and 3D floors in the same sector. 2019-02-09 10:39:08 +01:00
Christoph Oelckers
3d3f260137 - exported LevelLocals's compatibility flags to scripting and fixed all places where access to combined compatibility flags is needed. 2019-02-09 09:17:57 +01:00
Christoph Oelckers
8a28134254 Merge remote-tracking branch 'remotes/origin/master' into new_level_refactor 2019-02-09 08:47:07 +01:00
Christoph Oelckers
a5feff7aa0 - fixed: The level's local event manager wasn't fully taken down when freeing the level's data. 2019-02-09 08:46:48 +01:00
Major Cooke
acc510dfb3 Added inflictor, source and flag parameters to GetModifiedDamage on actors and ModifyDamage on inventory.
- The flags are used by DamageMobj so modders can determine radius damage, for example, by checking for DMG_EXPLOSION.
2019-02-08 20:07:49 +01:00
Major Cooke
1b97bae307 Added Z + camera roll relativity for A_QuakeEx's QF_RELATIVE flag. 2019-02-08 20:07:27 +01:00
Christoph Oelckers
449610496f - fixed: 'level.frozen' still needs to be writable and have an effect. 2019-02-08 20:04:45 +01:00
Christoph Oelckers
584dae85f4 - fixed: LEVEL_USEPLAYERSTARTZ was checked on the wrong variable. 2019-02-08 19:58:15 +01:00
Christoph Oelckers
0b2494f9ca - fixed: The global viewpoint's Level member was accessed before it was set.
All affected code needs to get a Level parameter passed in through its arguments.
2019-02-08 13:12:46 +01:00
Christoph Oelckers
bd1f5d9750 - start the HUD message ticker at -1 to compensate for the additional tick they now receive due to the change at which time the status bar gets ticked. 2019-02-08 08:58:16 +01:00
Christoph Oelckers
bcc1aa95b2 - fixed: ACS calls need to explicitly pass the level into COPY_AAPTR.
Unlike from an action function, this can be called with a null actor, which for the player constants still needs to return something valid.
2019-02-07 15:41:35 +01:00
Christoph Oelckers
c0bbb4fd0d - fixed lowercase handling of non-basic-latin characters and added Undead's Russian translation.
The added table may be overkill but this way the font engine is prepared for things to come.
Currently the text placement in the menu seems a bit broken, that's a task for later.
2019-02-07 13:49:54 +01:00
Christoph Oelckers
4d2bb11317 - reworked font loader to make adding multi-lump fonts easier.
A multi-lump font can be created by putting all characters into a subdirectory of fonts/ with the intended name. Each character needs to be named by its character index as hex number.
So far this is only active for the predefined small fonts
2019-02-07 13:12:39 +01:00
Christoph Oelckers
eec53a6670 - print more meaningful info in countdecals CCMD. 2019-02-07 09:39:37 +01:00
Christoph Oelckers
4cdbc99877 - fixed creation of phased light sequences. 2019-02-07 09:39:36 +01:00
Christoph Oelckers
9dec214c15 - properly un-count faded out decals without involving the Destroy method. 2019-02-07 09:39:36 +01:00
Christoph Oelckers
97e3e858a1 - re-count impact decals each time a savegame is loaded.
This counter is not always reliable, especially when running for longer periods, so putting it in a savegame is not a good idea.
2019-02-07 09:39:36 +01:00
Rachael Alexanderson
4f0850b098 Merge remote-tracking branch 'origin/new_level_refactor' into HEAD 2019-02-06 10:30:27 -05:00
Christoph Oelckers
74d34f6171 - fixed typo in ExitPic display.
It read the EnterPic instead.
2019-02-06 15:40:49 +01:00
Christoph Oelckers
f38060d01b - fixed: The static event manager never got a link to the primary level. 2019-02-06 15:40:49 +01:00
Rachael Alexanderson
0590de3be2 Merge remote-tracking branch 'origin/new_level_refactor' into HEAD 2019-02-06 08:05:45 -05:00
Rachael Alexanderson
20a9587bb7 Merge remote-tracking branch 'origin/master' into HEAD 2019-02-06 08:05:38 -05:00
Christoph Oelckers
495298079b - rewrote the language table so that it doesn't have to reload everything on a language change.
It now reads everything into a two-dimensional TMap and creates a list of mappings that apply to the current setting.
The constant need for reloading was the main blocker in redesigning how Dehacked strings get inserted. Currently they override everything, but IWAD-based Dehacked text shouldn't block PWAD overrides from PWADs' LANGUAGE lumps and instead be treated as coming from an [en default] block.

This also renames the main block from [enu default] to [en default], because it should be treated as the English default for all English locales and not just make it fall through to the base default as it did before.
2019-02-06 13:59:41 +01:00
alexey.lysiuk
37a79470de - fixed compilation on POSIX targets
src/p_acs.cpp:3250:75: error: cannot pass object of non-trivial type 'FString' through variadic constructor; call will abort at runtime [-Wnon-pod-varargs]
src/p_conversation.cpp:354:56: error: cannot pass object of non-trivial type 'FString' through variadic constructor; call will abort at runtime [-Wnon-pod-varargs]
src/p_conversation.cpp:438:51: error: cannot pass object of non-trivial type 'FString' through variadic constructor; call will abort at runtime [-Wnon-pod-varargs]
src/p_conversation.cpp:548:58: error: cannot pass object of non-trivial type 'FString' through variadic constructor; call will abort at runtime [-Wnon-pod-varargs]
src/p_conversation.cpp:572:59: error: cannot pass object of non-trivial type 'FString' through variadic constructor; call will abort at runtime [-Wnon-pod-varargs]
src/p_conversation.cpp:584:58: error: cannot pass object of non-trivial type 'FString' through variadic constructor; call will abort at runtime [-Wnon-pod-varargs]
2019-02-06 12:22:05 +02:00
alexey.lysiuk
78c0b7f230 - changed type of Nop expression to void
Control flow statements with constant condition no longer cause misleading fatal errors in ZScript

https://forum.zdoom.org/viewtopic.php?t=63566
2019-02-06 12:09:14 +02:00
Christoph Oelckers
7fa3081581 - fixed some remaining issues with the interpolator.
Thanks to the lazy counter it used in its stat display I never noticed that the serializer was incomplete and that UnlinkFromMap did not call its super method.
After changing the counter to be actively counting on each call, all the other issues became immediately apparent.
2019-02-06 10:44:30 +01:00
Christoph Oelckers
6ae9df6a23 - removed an old comment that no longer applied to the code in question.
The interpolator had been changed long ago to use proper GC tracking, so interpolations only can get collected if they had been fully orphaned.
This comment was the main reason why the design flaw in this code never got fixed until recently.
2019-02-06 09:38:17 +01:00
Christoph Oelckers
c25e7897a7 - fixed bad default initialization of BoundingRect's coordinates. 2019-02-06 09:25:45 +01:00
Christoph Oelckers
5a2d6de296 - split up the OnDestroy method of interpolations.
It seems there can be rare conditions where an interpolation is 'lost' and later garbage collected. If that happens after the owning map is gone, all pointers in the interpolation object will be invalid and Destroy would crash while trying to unlink it. So anything that explicitly deletes an interpolation now has to manually unlink it from the map first so that OnDestroy can be kept clean of map references.
2019-02-05 18:34:02 +01:00
Christoph Oelckers
979f1df281 Merge remote-tracking branch 'remotes/origin/master' into new_level_refactor
# Conflicts:
#	src/g_level.cpp
#	src/p_user.cpp
2019-02-05 13:49:07 +01:00
Christoph Oelckers
0936a2fa19 - exported all texts from Strife's dialogues to the string table.
Now all this content can be localized. However, since this is actual game content it was placed in a secondary file in zd_extra.pk3, so that it won't affect the GPL-compatible status of the main one.
2019-02-05 13:39:38 +01:00
Christoph Oelckers
c0e4ef159b - fixed display of "Find help" text in Strife. Also moved this piece of code to a place where a real player exists. This was set at a point where the map wasn't loaded yet which caused a few problems. 2019-02-05 13:34:49 +01:00
alexey.lysiuk
69492b1e27 - fixed ambient sounds "leaking" into reverb environment
Set speed of sound to 343.3 and init scale to 1 according to @kcat suggestion

https://forum.zdoom.org/viewtopic.php?t=63185
https://forum.zdoom.org/viewtopic.php?t=63524
2019-02-05 13:13:52 +02:00
Christoph Oelckers
ce22f1db51 - fixed: SendPitchLimits is not playsim code so it cannot use the PlayerPawn for anything.
This really needs to operate solely on the static players array.
2019-02-05 11:54:29 +01:00
Christoph Oelckers
546d3d1bf5 - allow localization of Hexen's original ACS strings.
This way of looking up strings is intentionally limited to content from Hexen.wad and Hexdd.wad.
2019-02-05 11:51:19 +01:00
alexey.lysiuk
c026b991ae - do not print initial player's log text on loading of saved game 2019-02-05 12:00:16 +02:00
alexey.lysiuk
7a46d6e9cd - fixed output of localized player's log text to console 2019-02-05 11:56:20 +02:00
Christoph Oelckers
26acd564fb - restored order of destruction of interpolations and thinkers, which got accidentally reversed. 2019-02-04 16:27:57 +01:00
alexey.lysiuk
8892cb619d - disabled usage of intrinsics on non-Intel platforms 2019-02-04 15:53:41 +02:00
alexey.lysiuk
2765159fc6 - disabled VM JIT completely on unsuported platforms 2019-02-04 15:53:35 +02:00
Christoph Oelckers
e41c898817 Merge branch 'master' into new_level_refactor 2019-02-04 13:11:01 +01:00
Christoph Oelckers
496eba3acb - fix polyobject init 2019-02-04 13:10:53 +01:00
Christoph Oelckers
af9636b7c3 - fixed glitches with some poorly set up sector stack portals. 2019-02-04 13:08:30 +01:00
alexey.lysiuk
20f29ab808 - fixed erroneous removal of property flag members
https://forum.zdoom.org/viewtopic.php?t=63520
2019-02-03 12:33:06 +02:00
alexey.lysiuk
8137162ca0 - fixes compilation of POSIX targets
src/posix/cocoa/i_input.mm:95:22: error: use of undeclared identifier 'E_CheckUiProcessors'
src/posix/cocoa/i_input.mm:200:21: error: use of undeclared identifier 'E_CheckRequireMouse'
src/posix/sdl/i_input.cpp:183:19: error: use of undeclared identifier 'E_CheckUiProcessors'
src/events.cpp:540:1: error: pasting formed '::RenderFrame', an invalid preprocessing token
src/events.cpp:541:1: error: pasting formed '::WorldLightning', an invalid preprocessing token
src/events.cpp:542:1: error: pasting formed '::WorldTick', an invalid preprocessing token
src/events.cpp:543:1: error: pasting formed '::UiTick', an invalid preprocessing token
src/events.cpp:544:1: error: pasting formed '::PostUiTick', an invalid preprocessing token
2019-02-03 11:19:17 +02:00
Christoph Oelckers
53162a8a5c Merge branch 'master' into new_level_refactor
# Conflicts:
#	src/am_map.cpp
2019-02-03 09:20:13 +01:00
Christoph Oelckers
2fd1276d28 - fixed: Instead of mapping Hexen's BLANK texture to the null texture, make its actual use type that of a null texture.
The software renderer does not have any safeguards against such a mapping and crashes on it.
This code was a quick hack from ancient times from when ZDoom did not have robust texture management and some recent changes ran afoul of this very special exception.
2019-02-03 08:59:37 +01:00
Christoph Oelckers
2cff43ba90 - fixed: The HUD model code did not account for placeholder sprites. 2019-02-03 08:23:18 +01:00
Alexander
03a2b9dc2e added am_showkeys_always 2019-02-02 17:54:00 +01:00
Christoph Oelckers
9f7fe203fc - had to fix a few things. 2019-02-02 17:29:13 +01:00
Christoph Oelckers
1dbbb56a1b Merge branch 'master' into new_level_refactor
# Conflicts:
#	src/p_user.cpp
2019-02-02 16:58:30 +01:00
Christoph Oelckers
235c4c0499 - allow localization of Strife's log text. 2019-02-02 16:56:58 +01:00
Christoph Oelckers
64476cde7e - fixed: Retriving a key's color did not work. 2019-02-02 16:52:28 +01:00
Christoph Oelckers
66eb4e5048 - separation of static and map-local event handlers into separate lists.
Having everything lumped together made this a maintenance hassle because it affected how the level has to be stored.
This hasn't been tested yet, so it may not work as intended!
2019-02-02 16:43:11 +01:00
Christoph Oelckers
d005e0b483 - changed the place where the CheckRequireMouse event gets called.
The original place in I_CheckNativeMouse is unsafe because that function can get called from the system message queue which can result in a bad global state of the VM for such a call because it can be recursively invoked from code that may temporarily alter some settings.
2019-02-02 11:00:26 +01:00
Nemrtvi
fa53ae21e6 Localized “FIND HELP” in Strife
The very first quest log that appears in Strife, “FIND HELP”, is located in a source file. This moves it to the language files.
2019-02-02 10:57:14 +01:00
Christoph Oelckers
484485f3cf - made the event manager an object so it can be instantiated multiple times. 2019-02-02 10:46:34 +01:00
Christoph Oelckers
8d83f03138 - changed the linedef translator into a struct and reorganized its storage to allow having different ones at the same time.
This was the last piece of data that couldn't be distinct for more than one level.
2019-02-02 01:22:12 +01:00
Christoph Oelckers
45dc9a7b47 - renamed the level variables.
currentUILevel is now primaryLevel.
For ZScript, currentVMLevel was added. This is also exported as 'level' and will change as needed.
This also means that no breaking deprecations will be needed in the future, because in order to sandbox a level only 4 variables need to be handled: level, players, playeringame and consoleplayer.
The remaining global variables are not relevant for the level state.

The static 'level' has been mostly removed from the code except some places that still need work.
2019-02-02 00:25:51 +01:00
Christoph Oelckers
6c006a5fbd - added the missing Level parameters to AActor::StaticSpawn and P_ExecuteSpecial.
I think these were the last two still missing it, all remaining uses of the global level variable are in code that doesn't get run through a level tick and are supposed to access the primary level.
2019-02-01 22:02:16 +01:00
Christoph Oelckers
bf665961cc - moved KEYCONF_only CCMDs out of play files. 2019-02-01 21:19:16 +01:00
Christoph Oelckers
32e5be83ea - moved a few more files and copied the data related parts of p_things.cpp to g_doomedmap.cpp 2019-02-01 19:48:17 +01:00
Christoph Oelckers
a1cc548af4 - moved some more code into the gamedata folder.
Two files were split:

g_level.h contained both the game data definitions and some prototypes belonging to the game logic. These were split up.
decallib.cpp contained both the data and the animation thinkers. The thinkers are now in their own file.
2019-02-01 19:20:58 +01:00
Christoph Oelckers
db77ed79cd - moved the resourcefiles and textures folders into gamedata. 2019-02-01 18:31:57 +01:00
Christoph Oelckers
c1e1284b52 - moved the CCMDs out of a_pickups.cpp. 2019-02-01 18:15:49 +01:00
Christoph Oelckers
3f90764faa - moved the contents of g_inventory to g_shared and gamedata subfolders.
a_pickups only contains a few native remains of the inventory code and the other two only the static data maintenance for their items.
2019-02-01 18:13:12 +01:00
Christoph Oelckers
edb34b9f7f Merge remote-tracking branch 'remotes/origin/master' into new_level_refactor 2019-02-01 17:59:25 +01:00
alexey.lysiuk
5e9001e7bc - fixed potentially incomplete list of argument flags for virtual function
https://forum.zdoom.org/viewtopic.php?t=63450
2019-02-01 17:58:06 +01:00
Christoph Oelckers
202f3d7d80 - changed most places where a player index is calculated by subtracting the player array's base access. 2019-02-01 17:31:11 +01:00
Christoph Oelckers
d358e401ee - removed all access to the consoleplayer variable from the play code
There is one exception in ACS for a net arbitrator check.
Aside from this the bot_observer CVAR was also removed. This was never implemented properly and could stomp upon custom player settings.
2019-02-01 17:02:10 +01:00
Christoph Oelckers
2903025268 - a few minor fixes. 2019-02-01 12:31:08 +01:00
Christoph Oelckers
de24fc2c88 - do not call renderer code directly to reset the view interpolation
The playsim really has no idea what the renderer is supposed to do here and the current system has some serious issues that eventually need addressing. So it is better to just set a flag that an actor needs to have its view interpolation reset if being used as a camera and let the render code deal with it.

This will keep the playsim clean of future changes to this feature.
2019-02-01 12:03:36 +01:00
alexey.lysiuk
5278274acf - fixed compilation errors with POSIX targets
src/posix/cocoa/i_video.mm:559:2: error: use of undeclared identifier 'atterm'
src/posix/sdl/hardware.cpp:85:28: error: ‘atterm’ was not declared in this scope
src/posix/sdl/i_input.cpp:261:10: error: ‘gamestate’ was not declared in this scope
src/posix/sdl/i_input.cpp:261:23: error: ‘GS_LEVEL’ was not declared in this scope
src/posix/sdl/i_input.cpp:263:48: error: ‘GS_INTERMISSION’ was not declared in this scope
src/posix/sdl/i_input.cpp:263:80: error: ‘GS_FINALE’ was not declared in this scope
src/posix/sdl/i_system.cpp:115:25: error: ‘atterm’ was not declared in this scope
src/posix/sdl/i_system.cpp:372:30: error: invalid use of incomplete type ‘const struct dirent’
src/posix/sdl/i_system.cpp:375:42: error: ‘findstate_t’ has not been declared
src/posix/sdl/i_system.cpp:391:12: error: request for member ‘current’ in ‘* fileinfo’, which is of non-class type ‘int’
src/posix/sdl/i_system.cpp:392:12: error: request for member ‘count’ in ‘* fileinfo’, which is of non-class type ‘int’
src/posix/sdl/i_system.cpp:392:56: error: request for member ‘namelist’ in ‘* fileinfo’, which is of non-class type ‘int’
src/posix/sdl/i_system.cpp:393:22: error: ‘alphasort’ was not declared in this scope
src/posix/sdl/i_system.cpp:393:31: error: ‘scandir’ was not declared in this scope
src/posix/sdl/i_system.cpp:394:16: error: request for member ‘count’ in ‘* fileinfo’, which is of non-class type ‘int’
src/posix/sdl/i_system.cpp:401:31: error: ‘findstate_t’ has not been declared
src/posix/sdl/i_system.cpp:403:2: error: ‘findstate_t’ was not declared in this scope
src/posix/sdl/i_system.cpp:403:15: error: ‘state’ was not declared in this scope
src/posix/sdl/i_system.cpp:403:37: error: expected primary-expression before ‘)’ token
src/posix/sdl/i_system.cpp:404:33: error: request for member ‘count’ in ‘* fileinfo’, which is of non-class type ‘int’
src/posix/sdl/i_system.cpp:406:39: error: request for member ‘count’ in ‘* fileinfo’, which is of non-class type ‘int’
src/posix/sdl/i_system.cpp:413:2: error: ‘findstate_t’ was not declared in this scope
src/posix/sdl/i_system.cpp:413:15: error: ‘state’ was not declared in this scope
src/posix/sdl/i_system.cpp:413:37: error: expected primary-expression before ‘)’ token
src/posix/sdl/i_system.cpp:425:16: error: ‘findstate_t’ was not declared in this scope
src/posix/sdl/i_system.cpp:425:29: error: expected primary-expression before ‘const’
src/posix/sdl/i_system.cpp:426:1: error: expected ‘,’ or ‘;’ before ‘{’ token
src/posix/sdl/i_main.cpp:160:6: error: ‘gamestate’ was not declared in this scope
src/posix/sdl/i_main.cpp:160:19: error: ‘GS_LEVEL’ was not declared in this scope
src/posix/sdl/i_main.cpp:160:44: error: ‘GS_TITLELEVEL’ was not declared in this scope
src/posix/sdl/i_main.cpp:217:18: error: ‘atterm’ was not declared in this scope
src/posix/sdl/i_main.cpp:242:11: error: ‘I_Quit’ was not declared in this scope
src/gameconfigfile.cpp:126:27: error: ‘SHARE_DIR’ was not declared in this scope
src/scripting/decorate/thingdef_parse.cpp:929:2: error: use of undeclared identifier 'strlwr'; did you mean 'strlen'?
src/scripting/decorate/thingdef_parse.cpp:937:3: error: use of undeclared identifier 'strlwr'; did you mean 'strlen'?
src/scripting/decorate/thingdef_states.cpp:564:2: error: use of undeclared identifier 'strlwr'; did you mean 'strlen'?
src/scripting/vm/jit_runtime.cpp:957:2: error: ‘unique_ptr’ is not a member of ‘std’
src/scripting/vm/jit_runtime.cpp:957:38: error: expected primary-expression before ‘>’ token
src/scripting/vm/jit_runtime.cpp:957:40: error: ‘nativeSymbols’ was not declared in this scope
src/utility/cmdlib.cpp:962:2: error: ‘DIR’ was not declared in this scope
src/utility/cmdlib.cpp:962:7: error: ‘directory’ was not declared in this scope
src/utility/cmdlib.cpp:962:34: error: ‘opendir’ was not declared in this scope
src/utility/cmdlib.cpp:967:33: error: ‘readdir’ was not declared in this scope
src/utility/cmdlib.cpp:969:10: error: invalid use of incomplete type ‘struct ScanDirectory(TArray<FFileList>&, const char*)::dirent’
src/utility/cmdlib.cpp:973:34: error: invalid use of incomplete type ‘struct ScanDirectory(TArray<FFileList>&, const char*)::dirent’
src/utility/cmdlib.cpp:985:20: error: ‘closedir’ was not declared in this scope
2019-02-01 11:08:58 +02:00
alexey.lysiuk
e400137ffe - fixed compilation of Windows Debug targets
src\sound\mididevices\music_opl_mididevice.cpp(112): error C3861: 'I_DebugPrint': identifier not found
src\sound\mididevices\music_opl_mididevice.cpp(206): error C3861: 'I_DebugPrint': identifier not found
src\sound\mididevices\music_opl_mididevice.cpp(234): error C3861: 'I_DebugPrint': identifier not found
src\sound\mididevices\music_opl_mididevice.cpp(244): error C3861: 'I_DebugPrint': identifier not found
2019-02-01 10:09:36 +02:00
Christoph Oelckers
ba451b46c8 - moved a bunch of files to the utility folder. 2019-02-01 01:18:32 +01:00
Christoph Oelckers
b77e83e0b9 - moved 15 more files to g_shared. 2019-02-01 00:48:21 +01:00
Christoph Oelckers
e3eaa5964d - removed v_video.h include from portals.h
This has no business in a play related file which also made no use of it.
2019-02-01 00:30:21 +01:00
Christoph Oelckers
18fb7fdd81 - moved some diagnostic CCMDs to g_dumpinfo.cpp. 2019-02-01 00:14:31 +01:00
Christoph Oelckers
5010e61309 - moved a few more play files free of global state references to g_shared. 2019-01-31 22:31:41 +01:00
Christoph Oelckers
65c2c318fb - prettification of p_teleport.cpp and some include cleanup. 2019-01-31 22:22:39 +01:00
Christoph Oelckers
ff903da19a Merge remote-tracking branch 'remotes/origin/master' into new_level_refactor 2019-01-31 20:43:24 +01:00
Christoph Oelckers
b40c709b66 - minor corrections. 2019-01-31 20:42:36 +01:00
Christoph Oelckers
7241072b16 - moved most utility code to a subdirectory.
Again no code changes.
2019-01-31 20:33:52 +01:00
Christoph Oelckers
89d607c9a6 - moved all rendering code into a common subdirectory.
No changes to the files themselves was made.
2019-01-31 19:58:17 +01:00
Christoph Oelckers
c77487dab8 - moved the menu.h include from oalsound.h to oalsound.cpp.
The menu is a very 'dirty' header, and forcing it to be pulled in with something entirely unrelated is not good - even though only two files include oalsound.h.
2019-01-31 19:44:04 +01:00
Christoph Oelckers
f6a91e1722 - moved the I_Error prototypes to doomerrors.h to avoid having to include the low level system header for this. 2019-01-31 19:38:04 +01:00
Major Cooke
b1c508fa6c Added CheckReplacee.
- Allows defining of what actor is replacing another for information.
- If multiple arachnotrons, a modder can attribute them as being a replacer of Arachnotron itself, allowing A_BossDeath and GetReplacee to work with it.
2019-01-31 19:05:44 +01:00
Christoph Oelckers
1dcdfec733 - Unload behavior with the map, not outside. 2019-01-31 17:58:18 +01:00
Christoph Oelckers
7b7334e245 - only activate lights if the light actor isn't dormant, and only create a new one if it doesn't already have one.
-
2019-01-31 09:01:02 +01:00
Christoph Oelckers
ddab2c3e78 - removed the playernum parameter from CheckLocalView
This was always used with 'consoleplayer' which really is the only thing making sense here. But this is a part of the global state which should be avoided in play code.

In particular, this makes no real sense in case of secondary maps where it should always return false.
2019-01-31 03:29:25 +01:00
Christoph Oelckers
7149d1d312 - added missing includes 2019-01-31 03:25:49 +01:00
Christoph Oelckers
0a781b9bbb - fixed: DInterpolation was unlinking itself from the wrong interpolator
The global one was just a leftover, the real one is on the current level.
2019-01-31 03:25:26 +01:00
Christoph Oelckers
65f3fec283 - copied a few more map information CCMDs to g_ccmd. 2019-01-31 03:03:56 +01:00
Christoph Oelckers
aa340145ac - moved the remaining thinker code to g_shared 2019-01-31 02:51:07 +01:00
Christoph Oelckers
4984bc8c5f - prettification of a few files 2019-01-31 02:50:12 +01:00
Christoph Oelckers
65a812e316 - moved the door thinkers into g_shared. 2019-01-31 02:38:39 +01:00
Christoph Oelckers
77f8dfeabf - fixed g_dumpinfo.cpp's includes 2019-01-31 02:38:23 +01:00
Christoph Oelckers
51581d018a - moved the hud message and alt hud code from g_shared to g_statusbar
This is where it really belongs, this was simply overlooked when the folder was split.
2019-01-31 02:31:57 +01:00
Christoph Oelckers
25d5b788f5 - reviewed and sorted out the remaining parts of g_shared 2019-01-31 02:27:54 +01:00
Christoph Oelckers
0b4862480e - fixed macOS compilation. 2019-01-31 02:05:33 +01:00
Christoph Oelckers
0f2938089d - started cleaning up the contents of the g_shared directory, starting with a_dynlight.cpp
This is supposed to be come the place where all pure play code should be placed, but for that all CVARs and CCMDs and other things that do not directly handle play data should be taken out to make code reviewing easier. These now get collected in two separate files, g_cvars.cpp and g_dumpinfo.cpp respectively.
The sole ZScript property in here has also been moved - to thingdef_properties.cpp.
2019-01-31 02:05:16 +01:00
Christoph Oelckers
18b8a03f05 - cleaned up the header list in maploader.cpp. 2019-01-31 01:23:06 +01:00
Christoph Oelckers
fa3312e2a9 - moved gamestate_t to g_game.h.
This made reviewing the code for accessing the global state hard, because the doomdef.h contains mainly constants, this particular item was the only thing in there that represents actual engine state.
2019-01-31 00:28:43 +01:00
Christoph Oelckers
c18a0e7736 - replaced DWORD_MAX with UINT_MAX globally.
This was the last remnant of ZDoom's old integer types.
2019-01-30 22:34:11 +01:00
Christoph Oelckers
0eb3b2abca Merge branch 'master' into new_level_refactor 2019-01-30 22:03:21 +01:00
Christoph Oelckers
a2065cae4b - fixed: RecreateAllAttachedLights must activate the lights it creates.
This also removes the gl_attachedlights CVAR because with the new management this doesn't really work anymore.
2019-01-30 20:21:00 +01:00
Christoph Oelckers
64ac6dbc6e - moved thinker storage into FLevelLocals. 2019-01-30 19:09:21 +01:00
Christoph Oelckers
99d63faea9 - fixed bad merge of dobjgc.cpp 2019-01-30 18:22:37 +01:00
Christoph Oelckers
3b4ded5694 - refactored the thinker list.
This was an unorganized set of static members in DThinker but has now been regrouped into something more structured.
2019-01-30 02:15:48 +01:00
Christoph Oelckers
e30f116faf - moved bglobal into FLevelLocals
This is still all static data, only the location has changed, but none of the access.
2019-01-30 01:38:18 +01:00
Christoph Oelckers
8bbdee5c28 - redirect most references to the global players array through FLevelLocals.
The Map loader may not access any global state at all - everything it can touch must be exchangable.
Furthermore, if we want to sandbox each level, there may be no direct access to any kind of global state whatsoever from the play code.
2019-01-30 01:15:32 +01:00
Christoph Oelckers
c15212ca82 -fixed: The HUD model info was taken from the wrong player
It used the current console player's camera, not the actual camera being used for rendering. Although this is the same most of the time, let's better do it right.

This also removes a few leftover references to the player array elsewhwere in the hardware renderer
2019-01-30 01:04:30 +01:00
Christoph Oelckers
b12de04258 - fixed the remaining deprecation warnings in the base script.
All these required access to the sector's Level reference.
The remaining references to the global 'level' variable are all in deprecated functions which is ok.
2019-01-30 00:58:44 +01:00
Christoph Oelckers
3c0200de19 - run disconnect scripts on the level the disconnected player is on
This is nearly always the primary one but let's keep the option of using bots on secondary levels.
2019-01-30 00:47:34 +01:00
Christoph Oelckers
ebdb2643c4 - moved UDMF custom properties into FLevelLocals. 2019-01-30 00:47:20 +01:00
Christoph Oelckers
f410762695 - missed two lines. 2019-01-30 00:29:42 +01:00
Christoph Oelckers
78b7b64237 - replaced all TThinkerIterators except one that probably won't be relevant anymore as things progress. 2019-01-30 00:27:05 +01:00
Christoph Oelckers
4ad327d7e0 - moved G_ChangeLevel and other exit functions into FLevelLocals. 2019-01-29 23:45:14 +01:00
Christoph Oelckers
68fe5534a4 - moved the SectorMarker handling into the level itself. 2019-01-29 21:29:44 +01:00
Christoph Oelckers
ea849e5aca - split G_DoLoadLevel into a level specific and a global part. 2019-01-29 21:19:16 +01:00
Christoph Oelckers
12351ae9bb - made dumpportals CCMD multi-level aware. 2019-01-29 20:23:18 +01:00
Christoph Oelckers
1b37d85ac3 - removed a few missed references in FLevelLocals's member functions. 2019-01-29 20:15:06 +01:00
Christoph Oelckers
4af5ea25c1 - change per-level attenuation of dynamic lights for each viewpoint.
To avoid unnecessary work, the current state is tracked.
2019-01-29 20:09:06 +01:00
Christoph Oelckers
6451b7d592 - moved the combined compatibility flags into FLevelLocals. 2019-01-29 19:28:22 +01:00
Christoph Oelckers
d716a17b96 - compatibility variable handling 2019-01-29 17:41:50 +01:00
Christoph Oelckers
4cb3ce8196 - StartTravel and EndTravel 2019-01-29 16:11:23 +01:00
Christoph Oelckers
14101fa447 - health groups and software rendering textures freed of 'level'
Edited cherry-pick of an older commit.
2019-01-29 16:06:17 +01:00
Christoph Oelckers
eb5a39960e - missed a few references 2019-01-29 15:22:26 +01:00
Christoph Oelckers
3c565c9e86 - moved the static sky variables into FLevelLocals and removed the redundant ones for the texture ID. 2019-01-29 04:44:44 +01:00
Christoph Oelckers
06e5dd1d86 - Handle level in bot code 2019-01-29 04:27:21 +01:00
Christoph Oelckers
14971c8c3a - missed references in p_effect.cpp 2019-01-29 04:20:36 +01:00
Christoph Oelckers
d4ee52f606 - handle G_StartSlideshow 2019-01-29 04:17:58 +01:00
Christoph Oelckers
de1b89707d Handle level in block iterators.
The scripted interface isn't done yet.
2019-01-29 03:26:22 +01:00
Christoph Oelckers
7d3cd53c7e - handle the software renderer's GetColorTable function
The real question here should be: Why does this need to get called in over 40 differenrt locations…?
2019-01-29 03:15:42 +01:00
Christoph Oelckers
f823e57446 Handle level check in texture coordinate calculation 2019-01-29 02:51:06 +01:00
Christoph Oelckers
473892dede - changed all model related references to level. 2019-01-29 02:18:19 +01:00
Christoph Oelckers
8652f140f2 - fixed missing declaration 2019-01-29 02:17:25 +01:00
Christoph Oelckers
932bbee928 - fixed some warnings 2019-01-29 02:16:36 +01:00
Christoph Oelckers
1d748b72a8 Split G_DoCompleted into a global part and a level specific part. 2019-01-29 02:39:14 +01:00
Christoph Oelckers
87859b2950 - add Level parameter to G_LeavingHub 2019-01-29 02:08:53 +01:00
Christoph Oelckers
f9239f6e0f - added a compiler-side workaround for the formerly static methods of FLevelLocals.
LevelLocals on the left side of.a function call will now always be remapped to 'Level', which will either remap to the same-named instance variable or the global deprecated one.

In a few degenerate cases where there is a conflicting local variable named 'level' it may error out but that is unavoidable here but this is very unlikely.
2019-01-29 02:04:31 +01:00
Christoph Oelckers
60873bc5d6 Moved the PointInSector functions into FLevelLocals 2019-01-29 01:30:41 +01:00
Christoph Oelckers
68667e5eaa - moved particle storage into FLevelLocals.
- moved parts of the render setup out of the separate render functions.

Things like particle and polyobject linking were duplicated several times for rendering different things in different renderers.
These things only need to be set up once before the renderer is started so it makes a lot more sense to consolidate them into one place outside the actual rendering code.
2019-01-29 01:09:02 +01:00
Christoph Oelckers
50d59e99cb - moved sound sequence head of list into FLevelLocals. 2019-01-28 23:53:40 +01:00
Christoph Oelckers
623330f938 - initial adjustments for P_Ticker. 2019-01-28 22:33:50 +01:00
Christoph Oelckers
befacddab4 - removed level references in p_trace.cpp. Also added a null check to the sector pointer of the LineTracer Trace function because a null pointer here would crash. 2019-01-28 22:19:09 +01:00
Christoph Oelckers
6312c44234 - removed the remaining level references from p_acs.cpp. 2019-01-28 22:04:33 +01:00
Christoph Oelckers
259ae41774 - sanitized the 'frozen level' code.
This had two different flags that were checked totally inconsistently, and one was not even saved.
Moved everything into a few subfunctions so that these checks do not have to be scattered all over the code.
2019-01-28 20:15:48 +01:00
Christoph Oelckers
3c14a7db76 - use map time, not hub time for map actions. 2019-01-28 18:42:56 +01:00
Christoph Oelckers
3364988680 - moved the interpolator into FLevelLocals and refactored its use to happen outside the renderers.
There is no need to do this deep inside the renderer where it required code duplication and made it problematic to execute on multiple levels.
This is now being done before and after the top level call into the renderer in d_main.cpp.
This also serializes the interpolator itself to avoid problems with the Serialize functions adding the interpolations into the list which can only work with a single global instance.
2019-01-28 18:26:14 +01:00
Christoph Oelckers
6a43d6c7ff Merge remote-tracking branch 'origin/master' into new_level_refactor 2019-01-28 15:50:42 +01:00
Christoph Oelckers
44f622c644 - more XCode warnings fixed. 2019-01-28 15:41:52 +01:00
Christoph Oelckers
d1ca3ef994 - added braces as per XCode's suggestion. 2019-01-28 15:20:02 +01:00
Christoph Oelckers
1dc11c5032 - changed infighting check so that the static skill checker does not access the level
Instead the level needs to be queried now.
2019-01-28 14:31:23 +01:00
Christoph Oelckers
d0942bcb97 - moved FirstThinker function to FLevelLocals
Currently it is meaningless but that's where it should be later.
2019-01-28 14:06:19 +01:00
Christoph Oelckers
41e576bbb5 - removed the intermediate P_SpawnPlayer inline 2019-01-28 03:02:25 +01:00
Christoph Oelckers
66695ac6a0 - made most of the player spawn spot handliing functions members of FLevelLocals. 2019-01-28 02:44:05 +01:00
Christoph Oelckers
0ef0698d24 - use the proper level for setting up a hardware rendered scene.
The shader timer may be taken from the primary level for the entire scene, because it will always be the same for all levels in a set.
The camera textures need to be prepared for all levels.
2019-01-28 02:43:39 +01:00
Christoph Oelckers
d941dea005 - added a level iterator for operations that need to make changes to all open levels.
Since currently there is only one level, this will obvciously only run once on that level for the time being.

This is mainly used for CCMDs and CVARs which either print some diagnostics or change some user-settable configuration.
2019-01-28 02:41:29 +01:00
Christoph Oelckers
64e9f7e43b - changemap must use the current UI level if the user wants to go to "*". 2019-01-28 02:08:49 +01:00
Christoph Oelckers
aee8851643 - fixed all the missed level references in the decal thinkers. 2019-01-28 02:07:46 +01:00
Christoph Oelckers
472a1118dd - had to move the tag manager. This somehow got skipped by the last commit. 2019-01-28 01:37:21 +01:00
Christoph Oelckers
7211c1db0f - give the tag manager a reference to the level.
This is needed for the compatibility search of the sector tag iterator which linearly searches the sector array.
2019-01-28 01:33:52 +01:00
Christoph Oelckers
a7746278a8 - a few remaining simple ones
This also removes a few pointless comments that popped up and consolidates setting a level's music into a subfuntion.
2019-01-28 01:25:52 +01:00
Christoph Oelckers
648e472744 - handled approx. half of all cases where the address of level is taken. 2019-01-28 00:55:21 +01:00
Christoph Oelckers
b4acb857ad - the final batch of easy level replacements.
What's left will require a bit more work...
2019-01-27 21:59:19 +01:00
Christoph Oelckers
11c453a71f - fix handling of the global script in FraggleScript.
Depending on serialization order is not a good idea here, so now it's no longer stored as a parent in the main level script but explicitly checked for when looking for a variable.
2019-01-27 21:03:25 +01:00
Christoph Oelckers
4d98c10ea3 - let the sound code use the current UI level.
This is what should be audible. To prevent other levels from playing sound, all entry points check whether the sound playing entity belongs to the current UI level.
2019-01-27 19:32:38 +01:00
Christoph Oelckers
b4a95ccaa9 - roughly 50 more, mostly search and replace. 2019-01-27 19:16:14 +01:00
Christoph Oelckers
06ba8c4c00 - 50 more simple replacements of 'level' 2019-01-27 17:35:50 +01:00
Christoph Oelckers
8c542e9be8 - removed level references in the software renderers. 2019-01-27 17:21:36 +01:00
Christoph Oelckers
4f540c1703 - give the sector a level reference. 2019-01-27 17:12:03 +01:00
Christoph Oelckers
522cc855ad - a few more. 2019-01-27 16:59:50 +01:00
alexey.lysiuk
95679c36b2 - added virtual destructor to FDelayedCommand
src/c_dispatch.cpp:143:5: warning: delete called on 'FDelayedCommand' that is abstract but has non-virtual destructor [-Wdelete-non-virtual-dtor]
src/tarray.h:582:5: warning: delete called on 'FDelayedCommand' that is abstract but has non-virtual destructor [-Wdelete-non-virtual-dtor]
src/tarray.h:574:5: warning: delete called on 'FDelayedCommand' that is abstract but has non-virtual destructor [-Wdelete-non-virtual-dtor]
2019-01-27 17:38:10 +02:00
Christoph Oelckers
ae544fa21f - removed a few direct uses of TThinkerIterator. 2019-01-27 16:15:32 +01:00
Christoph Oelckers
c8cd11422a - translate UMAPINFO specials at execution time, not load time.
At load time the context for translation does not exist.
2019-01-27 16:09:05 +01:00
Christoph Oelckers
73696e2781 - handled most level references in actorinlines.h and p_mobj.cpp. 2019-01-27 16:08:22 +01:00
Christoph Oelckers
c94f0f47a2 - removed all remaining references to level and TThinkerIterator from p_floor.cpp, p_lights.cpp, p_pusher.cpp and p_scroll.cpp. 2019-01-27 15:02:37 +01:00
Christoph Oelckers
5aa379e50e - removed all remaining references to level and TThinkerIterator from p_enemy.cpp. 2019-01-27 14:53:08 +01:00
Christoph Oelckers
2ed2202caa - removed all remaining references to level and TThinkerIterator from p_enemy.cpp. 2019-01-27 14:49:51 +01:00
Christoph Oelckers
84baa5bb4d - deprecated the global 'level' variable.
This will currently output 9 warnings for the UDMF property getters. To silence these a bit more work is needed.
2019-01-27 14:33:02 +01:00
Christoph Oelckers
e9954ee018 Merge branch 'master' into new_level_refactor 2019-01-27 14:08:23 +01:00
Christoph Oelckers
9bb4ea34e7 - fixed: When A_SpawnProjectile got fixed, this fix broke the old A_CustomMissile function because the added workaround was overlooked.
This now separates the code more clearly into the twp paths to make the differences easier to see and compare.
2019-01-27 14:00:23 +01:00
Christoph Oelckers
e7aa10b5c8 - changed thinker initialization to occur in a Construct function instead of the constructor itself.
This was done to ensure that this code only runs when the thinker itself is fully set up.
With a constructor there is no control about such things, if some common initialization needs to be done it has to be in the base constructor, but that makes the entire approach chosen here to ensure proper linking into the thinker chains impossible.
ZDoom originally did it that way, which resulted in a very inflexible system and required some awful hacks to let the serializer work with it - the corresponding bSerialOverride flag is now gone.

The only thinker class still having a constructor is DFraggleThinker, because it contains non-serializable data that needs to be initialized in a piece of code that always runs, regardless of whether the object is created explicitly or from a savegame.
2019-01-27 13:08:54 +01:00
Christoph Oelckers
22939aade7 Merge branch 'master' into new_level_refactor
# Conflicts:
#	src/c_dispatch.cpp
2019-01-27 10:26:23 +01:00
Christoph Oelckers
39f53a4de0 - took the delayed console command execution out of the thinker management.
Doing this intermingled with the thinkers is highly unsafe because there are absolutely no guarantees about order of execution.
Effectively it ran these commands right in the middle of the playsim which could cause all sorts of synchronization issues, because CCMDs are part of the UI, not the playsim.

- pass a const string to AddCommandString.

This function manipulated the input buffer, leading to all sorts of code contortions to make sure that the passed parameter is clean for that.
This function will now create a copy of the passed parameter which it can manipulate without complicating its calling code.

# Conflicts:
#	src/c_dispatch.cpp
2019-01-27 10:24:49 +01:00
Christoph Oelckers
8323524014 - give thinkers a 'level' member and change linking to the chain to happen outside the constructor. 2019-01-27 01:49:20 +01:00
Christoph Oelckers
df4c7d8f56 - initialize the impact decal counter for each level. 2019-01-26 23:36:22 +01:00
Christoph Oelckers
9b1b6db85d - added a pseudo-serializer for FLevelLocals pointers.
This doesn't really write out any info for the pointer, if the level does not match it just errors out.
This is both for quick detection of badly used level data and for automatic restoring of the pointer from the serializer's working level.

This also removed the temporary workarounds in DAutomap and DLevelScript to restore these pointers when a savegame is loaded.
2019-01-26 21:23:19 +01:00
Christoph Oelckers
e5139cc325 - moved all EV_Light* functions and G_SerializeLevel into FLevelLocals 2019-01-26 17:55:15 +01:00
Christoph Oelckers
fe06c49e34 - fixed: DAutomap::Serialize needs to call its super method. 2019-01-26 17:54:58 +01:00
alexey.lysiuk
0e5320cb3a - fixed linking of optimized targets
Undefined symbols for architecture x86_64:
  "AActor::Vec3Angle(double, TAngle<double>, double, bool)", referenced from:
      Net_DoCommand(int, unsigned char**, int) in d_net.cpp.o
2019-01-26 17:22:35 +02:00
Christoph Oelckers
05830455e7 - made the automap an object.
This simplifies handling a lot because it allows to make the level the owner of its map.
2019-01-26 15:21:20 +01:00
Christoph Oelckers
625e9f2525 - the sector variables are still needed. 2019-01-26 12:22:02 +01:00
Christoph Oelckers
fb86f397a0 - Level as member variable in the sight checker. 2019-01-26 09:01:40 +01:00
Christoph Oelckers
10feb446fa - made most of the EV_* functions part of FLevelLocals. 2019-01-26 08:28:45 +01:00
Christoph Oelckers
28761b4c33 - made G_InitLevelLocals a member function of FLevelLocals.
This was another cheap one with a good number of removed references.
2019-01-25 19:46:03 +01:00
Christoph Oelckers
20989a0b41 - use a local variable to access the level in DLevelScript.
This was a relatively cheap change but removes a significant batch of references to the global variable, only making the entry points to the ACS interpreter relevant.
2019-01-25 19:36:09 +01:00
Rachael Alexanderson
2f84de9c37 - fixed indentations caused by conflict resolution in cherry-picked commit d911fa99a1 2019-01-25 13:02:30 -05:00
Christoph Oelckers
4e052f2857 - use a separate variable pointing to the current level for the UI code.
UI always runs on the primary level, so this does not need the ability to operate on multiple levels. Additionally, this can later be set to null when running play code so that scope violations result in an abort.
2019-01-25 18:31:40 +01:00
nashmuhandes
06e7ca4170 Missed "Abnt_C2" in the keybind name array. 2019-01-25 03:51:39 -05:00
Rachael Alexanderson
1407d0a7c5 - add 'cl_blockcheats' - useful for people who use debugging keys, allows a user to consciously turn off cheats without affecting the server 2019-01-24 22:09:09 -05:00
Christoph Oelckers
ba114f6f23 - give the hardware renderer's drawinfo its own level pointer 2019-01-25 01:26:16 +01:00
Christoph Oelckers
0124cecc15 - added missing #include. 2019-01-25 01:19:35 +01:00
Christoph Oelckers
bf3dc2f99b Merge branch 'rolling_back' into new_level_refactor 2019-01-25 00:57:01 +01:00
Christoph Oelckers
b2ee99c7cc - call level compatibility handlers for all levels and pass the map name as a second parameter.
This is for user-made handlers for which the checksum is rather useless both for deciding whether to call the handler and for identifying the map.
2019-01-25 00:56:15 +01:00
Christoph Oelckers
f4081c33a6 - give line_t a GetLevel function.
The portal getters need this, even though currently it only gets the global level.
2019-01-25 00:42:55 +01:00
Christoph Oelckers
3cef56249d - moved most functions of portals.cpp into FLevelLocals.
Much of this is used during level init and needs to be independent of the current level.
2019-01-25 00:30:55 +01:00
Christoph Oelckers
2623fbb54b - deleted unused mus2midi.cpp file. 2019-01-24 20:40:31 +01:00
Christoph Oelckers
7418ebef56 - use default constructors for the thinkers to avoid empty non-inlined functions. 2019-01-24 20:33:25 +01:00
Christoph Oelckers
4d55c28b60 - moved a large batch of code from p_spec.cpp and a few other files into the maploader folder. 2019-01-24 20:27:34 +01:00
Christoph Oelckers
0a6b6173de - Moved Strife conversation data into FLevelLocals. 2019-01-24 19:53:11 +01:00
Christoph Oelckers
0e5986769e - moved the tid hash into FLevelLocals and adjusted the interface to the iterators. 2019-01-24 19:28:40 +01:00
Christoph Oelckers
4c250a58ca - reroute all uses of FActorIterator and NActorIterator through FLevelLocals. 2019-01-24 18:50:22 +01:00
nashmuhandes
68f0cf111d Punctuated the input strings in UpperCamelCase format. 2019-01-24 04:07:34 -05:00
Christoph Oelckers
1f2162fea8 - moved the scripted creation functions for tag iterators to LevelLocals
The old static methods are now deprecated, this was done to clarify the relationships at play here.
2019-01-24 02:17:10 +01:00
Christoph Oelckers
97495e1857 - moved the tag manager into FLevelLocals 2019-01-24 01:53:05 +01:00
Christoph Oelckers
7e9340f3b7 - removed most global references to the tag manager by routing most access to FLevelocals. 2019-01-24 01:40:09 +01:00
Christoph Oelckers
9f8dd66189 - changed Polyobject thinkers to operate on the actual polyobjects instead of indices
This also changes the action special interface to pass a Level parameter to the separate functions and makes a few other minor adjustments to the polyobject code.
2019-01-24 01:05:07 +01:00
Christoph Oelckers
65750bd7bf Wrap all iterator calls in the map loader into FLevelLocals methods.
This should later be done for everything else as well, but the map loader should really be free of global dependencies ASAP.

Also replace TThinkerIterator<AActor> with FThinkerIterator globally because this only adds pointless type checks - with all actor subclasses being scripted this class has become redundant.
2019-01-24 00:43:43 +01:00
Christoph Oelckers
85b5f8d0a0 - moved several setup methods into the map loader
Code hasn't been moved yet, this only changes the declarations.
2019-01-24 00:22:18 +01:00
Christoph Oelckers
ac7a9183aa - re-applied the changes for p_spec.cpp
This is mostly map loader code which really should not operate on the global level.
2019-01-24 00:02:51 +01:00
Christoph Oelckers
83d464d1be - fixed code emission for constant ZScript function arguments 2019-01-23 22:37:16 +01:00
Christoph Oelckers
77cbd0c238 - copied the changes to DFlashFader in master. 2019-01-23 22:35:48 +01:00
Christoph Oelckers
a78daa8937 - fixed flicker light selection of light radius. 2019-01-23 22:31:22 +01:00
Christoph Oelckers
d60707c71e - added the fix for BuiltinNew which I missed when cherry-picking. 2019-01-23 22:02:13 +01:00
Christoph Oelckers
ceb38751f0 - fixed some merging issues. 2019-01-23 22:01:37 +01:00
Christoph Oelckers
3f835cd124 - removed now unused BuildGammaTable function 2019-01-23 21:50:11 +01:00
Rachael Alexanderson
dc27011370 - remove vid_hwgamma, force always use shader gamma
*** note to drfrag: Please don't cherry-pick this commit. Systems that do not use renderbuffers will still need this feature!
2019-01-23 21:50:11 +01:00
Christoph Oelckers
12c10b5156 - fixed Identifier resolving for static functions
This entered the code path which warned about ambiguous use of variables in action functions and as a result ran afoul of subsequent error checks.

Since ZScript has no global scope resolution operator, this needs to ignore all non-static class symbols and try to look up any of these as global identifiers.
2019-01-23 21:50:10 +01:00
Christoph Oelckers
5a054da4d9 - removed incorrect assert.
This assert disallowed pointers to non GC'd objects, which on some occasions can happen and must be allowed.
2019-01-23 21:48:59 +01:00
nashmuhandes
d911fa99a1 Move the "time" string in saved game comment into the LANGUAGE lump.
# Conflicts:
#	src/g_game.cpp
2019-01-23 21:48:30 +01:00
alexey.lysiuk
0dbd591812 - fixed 'overriding core lump' error
Wrong container was reported for overriding lump
2019-01-23 21:47:19 +01:00
Rachael Alexanderson
45d94ee993 - set resolution selector to auto detected resolution at startup, remove the entries from the config file
- committing a change for fullscreen sets scaling to 1.0 to guarantee the selected number of pixels are actually used
2019-01-23 21:45:09 +01:00
Christoph Oelckers
057b746e58 - fixed: The rail attack only considered the puff's decal if it had ALWAYSPUFF set. 2019-01-23 21:44:39 +01:00
alexey.lysiuk
4c3192fb28 - applied proper use type to font textures
Font upscaling no longer depends on texture resizing setting

https://forum.zdoom.org/viewtopic.php?t=63184
2019-01-23 21:43:06 +01:00
Christoph Oelckers
33f8b697ce - fixed: application of fake contrast should never result in a light level of 0 unless the sector's own light level is 0. 2019-01-23 21:42:26 +01:00
Christoph Oelckers
f61150a75e - fixed: TVector3::Pitch() got the sign inverted.
This caused bad calculations with CMF_OFFSETPITCH. Note that to compensate for the fix, the SphericalCoords function had to have its own inversion of the value removed so that it calculates the same result as before.
2019-01-23 21:42:09 +01:00
Christoph Oelckers
7d3c577c2c - normalize the pitch in ACS's SetActorPitch.
Apparently some people have to pass positive numbers in here to get a negative pitch, e.g. 350.0 instead of -10.0...
This prevents clamping of such out-of-range values that would otherwise constitute valid pitches with the wraparound in place.
2019-01-23 21:41:52 +01:00
alexey.lysiuk
e8f45fad40 - workaround MSVC 2015 code generation issue, x64 only
With optimization turned on illegal instructions were generated for turbo CVAR handler function

https://forum.zdoom.org/viewtopic.php?t=63157
2019-01-23 21:41:20 +01:00
Christoph Oelckers
5e4ef04a4d - allow assignment of line IDs through LevelCompatbility. 2019-01-23 21:40:19 +01:00
Christoph Oelckers
dd2ea206f9 - fixed default alpha for sector colors
It has to be 0, not 255.

# Conflicts:
#	src/p_lnspec.cpp
2019-01-23 21:39:55 +01:00
Christoph Oelckers
f22121a9df - recalculate the line deltas if a nodebuild is needed
One potential cause is moving around vertices in which case these do not match anymore
2019-01-23 21:38:48 +01:00
Christoph Oelckers
8872125f96 - fixed some merging issues. 2019-01-23 21:37:51 +01:00
Christoph Oelckers
7966282c1c - Fixed error reporting for the BSP loader
Using global variables for this is bad, and it didn't even catch all cases. Now a node build is only considered successful if everything is set up successfully.

# Conflicts:
#	src/maploader/maploader.cpp
2019-01-23 21:34:57 +01:00
alexey.lysiuk
cd9fa75ede - fixed potentially missing event handlers
Event handlers linked list might skip an entry if its order was in a middle of existing handlers

https://forum.zdoom.org/viewtopic.php?t=63258
2019-01-23 21:34:11 +01:00
alexey.lysiuk
84db7f783d - fixed wrong self type in Array.Resize()
https://forum.zdoom.org/viewtopic.php?t=63275
2019-01-23 21:33:41 +01:00
Christoph Oelckers
9b2c11a612 - fixed crash in the precaching code.
This didn't detect software canvas textures and crashed on the missing image.
2019-01-23 21:32:46 +01:00
alexey.lysiuk
141d5bdf3e - fixed compilation errors
src/scripting/decorate/thingdef_parse.cpp:80:11: error: no viable conversion from 'const FName' to 'FString'
src/scripting/zscript/zcc_compile.cpp:1359:26: error: use of undeclared identifier 'Name_globalfreeze'; did you mean 'NAME_globalfreeze'?

# Conflicts:
#	src/scripting/zscript/zcc_compile.cpp
2019-01-23 21:28:24 +01:00
Christoph Oelckers
7c3ec662e1 - ensure proper emission of deprecations.
For global variables this wasn't implemented.

# Conflicts:
#	src/namedef.h
#	src/scripting/backend/codegen.cpp
#	wadsrc/static/zscript/base.txt
2019-01-23 21:27:20 +01:00
alexey.lysiuk
21eb23ad15 - relaxed caller type check for states modified by Dehacked
https://forum.zdoom.org/viewtopic.php?t=63178
2019-01-23 21:23:17 +01:00
Magnus Norddahl
c8ba84dc33 - fix black cam texture on HUD
# Conflicts:
#	src/gl/renderer/gl_scene.cpp
2019-01-23 21:20:52 +01:00
Magnus Norddahl
d3205f46a8 - fix null pointer crash 2019-01-23 21:19:43 +01:00
alexey.lysiuk
7c0633a3e9 - fixed script line numbers after multi-line raw string literal
https://forum.zdoom.org/viewtopic.php?t=63210
2019-01-23 21:19:08 +01:00
Christoph Oelckers
f7489976ec - the sound compatibility flags do not need level support.
They are intentionally omitted from both MAPINFO and compatibility settings.
This removes the last place where it still went through the map-modified versions of the compatflags.

# Conflicts:
#	src/s_sound.cpp
2019-01-23 21:18:36 +01:00
Marrub
ad5c62da95 Make LevelLocals::ExecuteSpecial return int 2019-01-23 21:15:25 +01:00
alexey.lysiuk
21531c5ddb - unary minus operator propagates boolean operand to integer
https://forum.zdoom.org/viewtopic.php?t=63214
2019-01-23 21:14:29 +01:00
Christoph Oelckers
4126f8ce72 - made OP_NEW a builtin function instead of an opcode.
The code was present 3 times due to the JIt, and this is not something that benefits from being a real opcode, even in the interpreted case.
2019-01-23 21:12:23 +01:00
Marrub
cc73449d29 Fix return value of native BuiltinCallLineSpecial 2019-01-23 21:09:34 +01:00
Christoph Oelckers
e90ef4e886 - moved the impact decal counter into FLevelLocals and do the counting in a less problematic fashion.
This was yet another piece of code that lived or died with the assumption that there can only be one level, stored in global variables.

# Conflicts:
#	src/p_saveg.cpp
2019-01-23 21:05:27 +01:00
Chronos Ouroboros
c64ce0fdfd Fixed multidimensional array definitions. 2019-01-23 21:02:33 +01:00
alexey.lysiuk
5132119812 - increased range of valid sound positions and velocities
https://forum.zdoom.org/viewtopic.php?t=61420
2019-01-23 20:59:38 +01:00
Christoph Oelckers
0fa92d59e2 - same for the ambient sound
# Conflicts:
#	src/s_advsound.cpp
2019-01-23 20:57:39 +01:00
Christoph Oelckers
36f0ab2ea1 - removed dependency on global time in sound sequence code.
This can better use a countdown timer that doesn't depend on external behavior.
2019-01-23 20:56:49 +01:00
Christoph Oelckers
ed3bb2fd09 Moved access to ACS instance data out of ScriptUtil worker class
This is better done at a higher level.
2019-01-23 20:55:59 +01:00
Christoph Oelckers
848d9c3750 - Moved high level parts of view border drawing to status bar. 2019-01-23 20:55:38 +01:00
alexey.lysiuk
86acb876f1 - fixed key number assignment during parsing of locks
https://forum.zdoom.org/viewtopic.php?t=63171
2019-01-23 20:45:36 +01:00
alexey.lysiuk
59d84296bf - fixed crash on creation of scroll texture
Example: Hadephobia MAP19 crashes on loading
2019-01-23 20:45:21 +01:00
alexey.lysiuk
11958b713e - fixed many compilation errors with GCC and Clang 2019-01-23 20:45:01 +01:00
Chronos Ouroboros
4fdcc47edc Added support for implicitly-sized initialized arrays.
Also fixed dynamic arrays not being cleared before initializing.
2019-01-23 20:43:46 +01:00
Chronos Ouroboros
7c91b27463 Fixed some issues in the ZScript array compilation code. 2019-01-23 20:43:06 +01:00
Major Cooke
7666997580 Fixed Thing_ProjectileAimed being broken.
- It was calling the fallback aiming in the wrong place when it should have been outside the speed check.
- Credit to _mental_ for the base code, but no gotos involved.
2019-01-23 20:42:17 +01:00
Christoph Oelckers
83ce72db48 - check the shader timer only once per frame, not once per draw call. 2019-01-23 20:40:17 +01:00
Christoph Oelckers
4de649d4d1 - major cleanup of p_scroll.cpp to eliminate the use of indices to access sidedefs and sectors. 2019-01-23 20:39:38 +01:00
Christoph Oelckers
55339761f6 - fixed serialization of ACS thinker. 2019-01-06 10:25:46 +01:00
Christoph Oelckers
a11eea98b5 - replaced some NULLs with nullptr. 2019-01-06 09:39:35 +01:00
Christoph Oelckers
8ead5a3a6b - pass level num to string locking functions as a parameter. 2019-01-06 09:37:11 +01:00
Christoph Oelckers
cf7ab6d085 - let level stats screen operate only on the data it got provided instead of getting the current level from global variables. 2019-01-06 09:03:58 +01:00
Christoph Oelckers
dca4a42dd6 - changed light mode handling of the hardware renderer so that it only operates on local copies but doesn't alter the level's setting.
There are several places where a temporary change of light mode is needed, all these made this change in the global level struct. Now the change is only local to the active draw info.
2019-01-06 09:00:52 +01:00
Christoph Oelckers
3328821a98 - pass 'level' as a parameter to AABBTree. Also renamed a few things to make the code easier to read. 2019-01-06 08:24:04 +01:00
Chronos Ouroboros
a0ce8f2988 Implemented compound initializers for arrays. 2019-01-06 00:46:56 +01:00
Christoph Oelckers
b445c6fabc - actually use the newly added indices. 2019-01-06 00:46:09 +01:00
Christoph Oelckers
8b18ed4759 - store the index of each map item in the struct itself and return that for the Index function.
If we ever want to refactor the global level data these must not reference the 'level' variable.
The main parts of the map loader cannot use this information, because it can only be created after running the node builder, so it got its own set of index functions instead.
2019-01-06 00:41:46 +01:00
Christoph Oelckers
c05968146e - starting to reduce references to global level variable. 2019-01-05 22:46:45 +01:00
Christoph Oelckers
6f6dc60e2b - moved the global ACS ActiveThinker variable into FLevelLocals. 2019-01-05 21:59:34 +01:00
Christoph Oelckers
b386a09358 - changed AFuncDesc initialization to avoid generating initializer functions.
Visual C++ will never statically initialize a class instance where a member field has a default value set, so the DEFINE_ACTION_FUNCTION variants without a direct native call need to be handled differently. The easiest way to do this is to leave out the nullptr default and omit the value in the initializer list. For trailing fields this will always get them nulled.
2019-01-05 20:48:22 +01:00
Player701
28531c3f8f - Fixed spawn height of projectiles created by SpawnPlayerMissile. 2019-01-05 18:19:51 +01:00
Christoph Oelckers
7b235ea13e - moved the per-level ACS state into FLevelLocals. 2019-01-05 18:19:35 +01:00
Christoph Oelckers
131eef9eb9 - converted the ACS Stringbuilder macros into inline functions. 2019-01-05 16:09:59 +01:00
Christoph Oelckers
c651045ed3 - let RunHealth clamping respect the newly added global properties. 2019-01-05 15:37:14 +01:00
Christoph Oelckers
639fb43682 -reordered sector_t so that the internal declarations are at the top, followed by the member variables and the methods.
Also tried to sort them by renderer use but that turned out to be without any performance effect, even though the struct is a bit better aligned now and several bytes shorter.
2019-01-05 13:27:32 +01:00
Christoph Oelckers
a0ad4ea193 - made the corpse queue a simple array in FLevelLocals.
I have to wonder why it had to use such a complicated implementation that provided no advantages whatsoever.
The new code is just 1/5th of the old one's size and much closer to Hexen's original implementation which also was a simple array but with no means to resize the queue.
2019-01-05 10:53:06 +01:00
Christoph Oelckers
dab68184f5 - moved the global spot state into FLevelLocals.
This way it doesn't even have to be a thinker.
2019-01-05 10:04:27 +01:00
Christoph Oelckers
7b16433e97 - changed FraggleScript setup so that the MapLoader does not use the global level variable anymore.
This involves passing the level explicitly to many functions. What was done here may seem a bit excessive but at least it covers everything.
Most importantly, the global ActiveThinker pointer has been moved into FLevelLocals and is now getting tracked properly by the level without using dangerous assumptions about how the game organizes its data.
2019-01-05 09:40:03 +01:00
Christoph Oelckers
95995e4aa3 - use a local pointer to the current level in FraggleScript parser.
Just to test a few things.
2019-01-05 08:59:45 +01:00
Christoph Oelckers
86551e53df - bumped savegame version because the recent scriptification of APlayerPawn will render all old savegames unusable. 2019-01-05 08:52:21 +01:00
Christoph Oelckers
bfbf7ff9c9 - made forwardmove and sidemove defaults configurable through the gameinfo section. 2019-01-05 08:48:57 +01:00
Christoph Oelckers
b47a3804d2 - fixed delete calls on FDynamicLight.
This isn't allocated from the system heap so it cannot be freed by it.
2019-01-04 16:12:39 +01:00
Christoph Oelckers
980977d444 - fixed: GetSoundClass must be able to handle non-players. 2019-01-04 16:08:45 +01:00
Magnus Norddahl
f10ded756e - split shadowmap AABB tree into two parts. one for static and one for dynamic
- upload only the dynamic AABB subtree using glBufferSubData
- change internal raytracing stack limit from 16 to 32
- update shadowmap AABB tree after R_SetupFrame for proper frame interpolation
2019-01-04 15:51:59 +01:00
Magnus Norddahl
4f4d10ce5f - disable polyobj AABBTree updates 2019-01-04 13:56:36 +01:00
Christoph Oelckers
3b77e2db68 - fixed: The update check for a changed AABBTree was inverted. 2019-01-04 08:46:07 +01:00
Christoph Oelckers
9ba0e7b783 - fixed: The player sound lookup would fail if a sound was only available for the last gender in the list.
This is an ancient bug, but it never registered before - only after making 'other' the default gender for nonsense input it became apparent.
2019-01-04 00:32:47 +01:00
drfrag666
845141d9af - Default gender for sound classes should be male and not other since it could be undefined in SNDINFO. 2019-01-03 18:05:13 -05:00
Christoph Oelckers
f9ff097457 - fixed A_Chase default detection. 2019-01-03 23:43:15 +01:00
Christoph Oelckers
6d87716381 - fixed: G_StartTravel must remove all dynamic lights from the actors it is about to carry over to the next level. 2019-01-03 23:23:08 +01:00
Christoph Oelckers
9521b6cd1f - removed all remaining native parts of APlayerPawn.
Unlike the other classes, the places where variables from this class were accessed were quite scattered so there isn't much scriptified code. Instead, most of these places are now using the script variable access methods.
This was the last remaining subclass of AActor, meaning that class Actor can now be opened for user-side extensions.
2019-01-03 22:05:49 +01:00
Christoph Oelckers
c18e895272 - exported all native components of APlayerPawn.
Only the class definition itself remains and needs to be taken care of.
2019-01-03 18:01:58 +01:00
Christoph Oelckers
3314a1efe5 - scriptified the remaining PlayerPawn methods. 2019-01-03 14:35:17 +01:00
Christoph Oelckers
2258a71c36 - took several methods out of the native PlayerPawn implementation, either by scriptification or moving them to other places. 2019-01-03 13:59:46 +01:00
alexey.lysiuk
4cc78c3273 - fixed compilation warning with GCC and Clang
src/hwrenderer/dynlights/hw_aabbtree.cpp:143:24: warning: comparison of integers of different signs: 'const int' and 'unsigned int' [-Wsign-compare]
2019-01-03 14:24:09 +02:00
Christoph Oelckers
23146f1af2 - scriptified PlayerPawn.ResetAirSupply. 2019-01-03 13:04:48 +01:00
Christoph Oelckers
badacbb968 - scriptified APlayerPawn's DamageFade handling. 2019-01-03 12:47:34 +01:00
Christoph Oelckers
2bd72478ee - scriptified P_CalcHeight.
This was the only code using the ViewBob member variable.
This also moves the range check for this variable to its application, because a badly behaved mod can just as easily change it at run time instead of just setting an absurdly large value in the class definition.
2019-01-03 11:57:20 +01:00
Christoph Oelckers
9e5c5b68c5 - did some more lightening on the PlayerPawn class. 4 more properties and one native member function have been handled. 2019-01-03 10:06:45 +01:00
Christoph Oelckers
8da1b5c1b0 - properly handle passing of the light flags.
Since these can be changed on the placed light actor they have to be read from there, so this is now a pointer in FDynamicLight, just like the other properties that can be user-changed.
Also did some cleanup on the interface so that external code doesn't need to dereference the lightflags pointer but can use utility functions for all flags.
2019-01-03 09:24:22 +01:00
Christoph Oelckers
da735c0e87 - initialize the PlayerPawn members only used by scripts through the script variable interface.
The goal here is to eliminate the native PlayerPawn class, after all, so this will be needed anyway.
2019-01-03 08:27:41 +01:00
Magnus Norddahl
850ef1cd78 - Add missing screenshot sRGB gamma when vid_hdr is active 2019-01-03 03:48:47 +01:00
Christoph Oelckers
d057af7c3b - fixed: DeactivateLight called Activate instead of Deactivate. 2019-01-03 00:39:42 +01:00
Christoph Oelckers
c753d59a72 - scriptified A_SkullPop and ObtainInventory.
These were the last relevant items to access PlayerPawn.InvFirst.
2019-01-03 00:35:56 +01:00
Christoph Oelckers
6eb8ded471 - made ColorRangeStart and ColorRangeEnd meta properties of APlayerPawn.
These are only used during initialization and they should have been readonly from the start.
2019-01-02 22:13:57 +01:00
Major Cooke
8bbbd95dfd - Fixed: NODAMAGE was not accounted for with pain. 2019-01-02 15:37:43 +01:00
alexey.lysiuk
cb6b5e92ab - added missing range checks to level compatibility handler 2019-01-02 16:35:23 +02:00
Christoph Oelckers
bc47fdfa78 - scriptified useflechette CCMD's item finding code. 2019-01-02 11:58:26 +01:00
Timo Myyrä
9e80caa85d fix Unix builds without backtrace functions in their libc
backtrace functions are not present in all libc implementations. Cmake has
module to add external libraries into build if needed so use it to fix build on
Unix systems without backtrace in libc.
2019-01-02 08:44:26 +01:00
Christoph Oelckers
dc612703d5 - scriptified the declaration of AmbientSound
Most of the code is still native, but this means that PlayerPawn is the last remaining child of AActor.
2019-01-02 01:05:20 +01:00
Christoph Oelckers
cea97e5cc6 - fixed memory leaks in network code.
ReadString allocates a buffer, so saving it in a local variable and then forgetting it will not free the buffer afterward.
(This should probably be refactored to use some safer methods to read the string than this old-school method...)
2019-01-01 19:40:57 +01:00
Christoph Oelckers
d654e02dea - rewrote dynamic lights to not use actors for the internal representation and made DynamicLight a purely scripted class.
This should be less of a drag on the playsim than having each light a separate actor. A quick check with ZDCMP2 showed that the light processing time was reduced to 1/3rd from 0.5 ms to 0.17 ms per tic.
It's also one native actor class less.
2019-01-01 19:35:55 +01:00
Christoph Oelckers
3f8d565dbb - split up P_FreeLevelData, so that everything that clears out fields in FLevelLocals is now in a member function of that class. 2018-12-31 12:42:03 +01:00
Christoph Oelckers
c45e1cbbf0 - fixed typo in sky preparation. 2018-12-31 00:14:15 +01:00
player701
7c8cdf80d1 - Fixed settings_controller not updating properly when a player becomes the new arbitrator in a netgame. 2018-12-30 10:48:55 +02:00
Christoph Oelckers
53be21eb58 - added missing return in P_RemoveThing. 2018-12-30 08:40:04 +01:00
Christoph Oelckers
5ca6f9af9a - added missing null pointer check to SBarInfo's inventory bar drawer. 2018-12-30 08:31:40 +01:00
Christoph Oelckers
65b01bd16d - fixed incomplete commit.
I have no idea where the rest of this stuff went...
2018-12-30 08:22:34 +01:00
Christoph Oelckers
de375ce187 - fixed the direct native variant of DynamicLight.SetOffset. 2018-12-29 17:50:31 +01:00
Christoph Oelckers
4d34e5997b - pass level as an argument to some code being used by the map loader. 2018-12-29 16:20:06 +01:00
Christoph Oelckers
eecf3a203a - let UDMFParser use the level from the map loader, not the global variable. 2018-12-29 16:20:06 +01:00
Christoph Oelckers
f35ac75ca2 - fixed precaching of switches.
The backwards animation accessed the wrong array which in case of sequences with different length could crash
2018-12-29 14:01:07 +01:00
Christoph Oelckers
0aeaed4207 - use a TArray to store the sprite model hash to get rid of one atterm call. 2018-12-29 13:28:22 +01:00
Christoph Oelckers
313ec62a5c - removed the static members from FMaterial.
Their functionality has been moved to more appropriate places already and they were essentially unused.
2018-12-29 13:28:22 +01:00
Christoph Oelckers
20184e1e99 - removed some unused bits of code. 2018-12-29 13:28:22 +01:00
Christoph Oelckers
3fbc55a8dd - do not use global variables to track state in the decal code.
Setups like this have caused problems in the past so best get rid of it.
2018-12-29 13:28:22 +01:00
Christoph Oelckers
17e053499e - reworked the lock code to remove the 255 locks limit and to allow it to automatically deinitialize. 2018-12-29 10:19:31 +01:00
Christoph Oelckers
982c622367 - fixed: The polyobject spawn point collector did not properly check for bad mapthings. 2018-12-29 08:49:53 +01:00
Christoph Oelckers
f31b1b92c9 - eliminated the two global FraggleScript variables by moving them into DFraggleThinker. 2018-12-29 01:18:21 +01:00
Christoph Oelckers
496dd4ee68 - treat non-existent arrays in the savegame as zero length. 2018-12-29 01:17:59 +01:00
Christoph Oelckers
cad43e431c - cleanuo. 2018-12-28 23:19:01 +01:00
Christoph Oelckers
3559f7dffb Merge branch 'master' of https://github.com/coelckers/gzdoom 2018-12-28 23:14:22 +01:00
Christoph Oelckers
5f303859e9 - made some changes to how the compatibility code works to allow removing the last remaining global variables of the map loading code.
Everything temporary is now part of the MapLoader class.
2018-12-28 23:14:11 +01:00
Christoph Oelckers
d066a1f10f - renamed some variables because they were getting into the way of analyzing usage of the global variable of the same name. 2018-12-28 18:11:33 +01:00
Major Cooke
7acf43741a Fixed: IsFakePain received the modified damage instead of the raw, preventing ALLOWPAIN from working as intended. 2018-12-28 17:23:55 +01:00
Christoph Oelckers
0e904286e8 - moved renderinfo.cpp entriely into the map loader. 2018-12-28 15:51:32 +01:00
Christoph Oelckers
e66e594dd0 - moved the sidetemp array into the map loader. 2018-12-28 15:30:23 +01:00
Christoph Oelckers
11e9cdae33 - split polyobject init into its own file and cleaned things up a bit. 2018-12-28 15:05:05 +01:00
Christoph Oelckers
9de2f5c1e7 - made polyobject init code part of MapLoader. 2018-12-28 14:48:10 +01:00
Christoph Oelckers
326e4d8559 - store the master pointer for the subsector lists in sector_t and the seg lists in side_t in FLevelLocals as a TArray instead of relying on the first element's pointer for this.
This simply way bad style.
2018-12-28 14:24:22 +01:00
Magnus Norddahl
c499c563a0 - remove WallSampler 2018-12-28 13:04:54 +01:00
Christoph Oelckers
64595abe60 - moved main polyobject array into FLevelLocals and simplified the setup process to not depend on P_SpawnMapThing.
Since the SpawnedThings array is still available when polyobjects are spawned it makes no sense to create an expensive linked list in P_SpawnMapThing.
This can be done far better by scanning through the array again and collect all matching items in a second array.
2018-12-28 10:08:39 +01:00
Christoph Oelckers
84a28454dc - split maploader.cpp so that the parts that are not setting up the actual map data go back to p_setup.cpp. 2018-12-28 09:17:10 +01:00
Rachael Alexanderson
c980f1c27f - g3.8pre 2018-12-27 23:46:21 -05:00
Magnus Norddahl
45d3df9df1 - remove pointless duplication of FWallCoords member variables 2018-12-28 01:13:58 +01:00
Magnus Norddahl
4d3d4ea746 - simplify colormap selection to a single function 2018-12-28 00:55:44 +01:00
Christoph Oelckers
467c73b2d7 - split P_SetupLevel so that the main part of it can be made part of the MapLoader class.
- allocate BlockNodes from the same memory arena as SecNodes.
2018-12-27 23:34:07 +01:00
Magnus Norddahl
c0a4ba5e82 - Simplify ProjectedWallLight light step setup and positioning 2018-12-27 22:52:33 +01:00
Magnus Norddahl
ed094d0b2f - create a ProjectedWallLight class for the variables used to calculate light for columns 2018-12-27 22:03:02 +01:00
Christoph Oelckers
a47287f1e4 - use TArrays for all local allocations in the map loader. 2018-12-27 20:22:51 +01:00
Christoph Oelckers
6ae417725f - removed the optional MAPINFO data handler and moved the 3 items still using it to the main parser file.
This thing made sense when GZDoom and ZDoom were separate projects to avoid having to change some core files for the added options.
Now, with only 3 ones remaining, one for FraggleScript and two for Extradata the overhead here is just too high. The 3 variables can just be moved to level_info_t without carrying along this much baggage.
2018-12-27 17:38:11 +01:00
Christoph Oelckers
2edf02d731 - moved map loader files to a subdirectory. 2018-12-27 17:11:10 +01:00
Christoph Oelckers
017b3f9dc7 - fixed OpenGL texture objects weren't deleted when a texture was destroyed. 2018-12-27 14:25:13 +01:00
Christoph Oelckers
f351df5c22 - moved Extradata parser into MapLoader class. 2018-12-27 12:33:18 +01:00
Christoph Oelckers
733cd5260a - moved slope creation functions and most initialize-time variables into MapLoader class. 2018-12-27 12:33:18 +01:00
Christoph Oelckers
89ba723609 - moved the content from p_glnodes into the MapLoader class. 2018-12-27 12:33:17 +01:00
Christoph Oelckers
2e22c01d45 - moved most content of p_setup.cpp into a MapLoader class. 2018-12-27 12:33:17 +01:00
Ijon
071347d7fb NOFRICTION now applies to Z friction when flying or swimming 2018-12-27 12:26:33 +01:00
alexey.lysiuk
23f2a3a7fc - fixed crash in Actor.Warp() with null destination
https://forum.zdoom.org/viewtopic.php?t=63031
2018-12-27 13:01:42 +02:00
Christoph Oelckers
f3ae61a2d3 - remove some obsolete bit of cruft from the class type system.
This was a remnant of putting the meta data directly into the class descriptor which turned out to be an unworkable approach
2018-12-27 08:49:34 +01:00
Christoph Oelckers
b31f284e28 - fixed 3D floor initialization for actor spawning.
Since actors are being spawned before the renderer gets set up this needs to fully initialize the list before spawning the actors, then take it down again for creating the vertex buffer and then recreate it.
2018-12-27 08:28:09 +01:00
Kevin Caccamo
e04fc026ff Expand UDMF and ZScript API for side's own additive colors
Add 'useowncoloradd_{top,mid,bottom}' sidedef properties to the UDMF 
spec
Only use side's additive colors if 'useowncoloradd_(top|mid|bottom)' is 
set.
Rename UseOwnColors flag to UseOwnSpecialColors
Add UseOwnAdditiveColor flag to side_t::part
Add EnableAdditiveColor to side_t
Add Side.EnableAdditiveColor to ZScript API
2018-12-26 16:58:27 +01:00
Kevin Caccamo
286886e161 Minor fixes for additive colour ZScript API
Sector.SetAdditiveColor actually called Sector.SetSpecialColor
Add use boolean property, used to determine whether or not to override the sector's additive wall colour with the side's additive colour.
2018-12-26 16:58:27 +01:00
Kevin Caccamo
0773e6a98e Rework implementation as per the new specification
The new specification is more flexible, and allows assigning additive 
colors to individual parts of a sector (walls, sprites, flats) and even 
individual parts of a side (top, middle, bottom)

Add AdditiveColors arrays to sector_t and side_t::part
Initialize AdditiveColors arrays to 0
Export AdditiveColors to ZScript
Save AdditiveColors in saved game files
Use colors from AdditiveColors arrays when setting the additive color 
for the render state
Add code to parse the new UDMF additive color properties
Remove additive color slot from sector color/part enum
Add SetAdditiveColor to sector_t and side_t
Add GetAdditiveColor to side_t
Export new methods and additive color arrays to ZScript
2018-12-26 16:58:27 +01:00
Kevin Caccamo
60696c91a2 Change some of the names of the additive color properties 2018-12-26 16:58:27 +01:00
Kevin Caccamo
6485570c93 Implement additive colours on HUD sprites
Also, make sure the alpha for the additive colour is 255.
2018-12-26 16:58:27 +01:00
Kevin Caccamo
33723e8904 Implement additive colour on walls and sprites
Also, don't modify the alpha channel when adding the additive colour.
2018-12-26 16:58:27 +01:00
Kevin Caccamo
80bcac48ef Forcibly assign 0 to the additive special color 2018-12-26 16:58:27 +01:00
Kevin Caccamo
758cd77e55 Rename ColorAdd to AddColor, and use it ingame
Rename ColorAdd to AddColor
Add AddColor to FRenderState
Tweak SpecialColors array in ZScript to include the additive color
Add uAddColor to the shader compiler
Add uAddColor to the texel
2018-12-26 16:58:27 +01:00
Kevin Caccamo
e5d43a734a Initial work on Doom64-style fade/glow 2018-12-26 16:58:27 +01:00
Magnus Norddahl
094ef39d5f - dynamically update polyobj lines 2018-12-26 14:26:57 +01:00
Major Cooke
1e741446d7 Reduced redundancy by putting all function aftermath handling in a subfunction. 2018-12-26 11:55:42 +01:00
Major Cooke
6372cdaa41 Split off pain chance triggering from ReactToDamage into its own function and gave ZScript access to it.
- TriggerPainChance(Name mod, bool forcedPain)
- One exception: PainThrehold is only checked in ReactToDamage, since this function does not require checking damage amount.
2018-12-26 11:55:42 +01:00
Major Cooke
2f7fae2fb0 DamageMobj Refactor
- Split off all reactive functionality (pain, infighting, etc) into its own function, ReactToDamage.
- Refactored all DamageMobj's damage <= 0 values.
 - Any unconditional cancellations now return -1. ReactToDamage will not be called if values < 0.
 - All pain/wound/target changing allowances return 0.
2018-12-26 11:55:42 +01:00
Ijon
d2d684a35a Add NOFRICTION and NOFRICTIONBOUNCE flags
NOFRICTION disables all friction effects on the thing it's set on
(including the speed cap from water/crouching), and NOFRICTIONBOUNCE
disables the "bounce off walls on an icy floor" effect on the thing
it's set on.
2018-12-26 11:49:17 +01:00
Magnus Norddahl
1bb2bb31d4 - fix first softpoly frame being empty 2018-12-25 16:50:11 +01:00
Rachael Alexanderson
dc05220abc - set vid_scalefactor to 1 when using vid_setscale 2018-12-25 00:18:44 -05:00
Christoph Oelckers
a40c617478 - initialize the index field for particles.
This won't contribute to sort order so it should be the same for all particles, which it wasn't because it was never set.
2018-12-24 13:44:08 +01:00
Christoph Oelckers
c58f5095d9 - fixed sprite sorting in the hardware renderer.
This did no longer sort sprites in the same position reliably since the feature to render sprites which only partially are inside a sector was added.
With this, sprites in the same position are no longer guaranteed to be added to the render list in sequence.
Fixed by adding an 'order' field to AActor which gets incremented with each spawned actor and reset when a new level is started.

The software renderer will also need a variation of this fix but its data no longer has access to the defining actor when being sorted, so a bit more work is needed here.
2018-12-24 10:18:58 +01:00
Magnus Norddahl
2cd1734de3 - improve softpoly 3d floor drawing somewhat 2018-12-23 14:59:47 +01:00
Magnus Norddahl
38cffa7646 - fix null pointer crash, replace DONT_DRAW with a boolean, make rw_pic a local variable 2018-12-23 05:01:50 +01:00
alexey.lysiuk
9446ddb318 - fixed default initialization of software warp textures
https://forum.zdoom.org/viewtopic.php?t=62979
2018-12-22 14:15:35 +02:00
alexey.lysiuk
fb540d6d2b - fixed multipatch texture resolving
https://forum.zdoom.org/viewtopic.php?t=62972
2018-12-22 11:21:04 +02:00
alexey.lysiuk
5c5b9eb044 - empty screenshot array is returned by base framebuffer
src/v_video.h:556:94: warning: control reaches end of non-void function [-Wreturn-type]
2018-12-21 14:59:25 +02:00
Christoph Oelckers
f6d9110c70 - removed the redundant GetOffsetPosition export and added direct native support to its existing variants 2018-12-21 13:52:30 +01:00