Commit graph

15207 commits

Author SHA1 Message Date
Magnus Norddahl
319099fee9 Merge remote-tracking branch 'origin/master' into vulkan2 2019-03-05 03:07:30 +01:00
Magnus Norddahl
e06f8f172d - use the uniform buffer alignment as returned by the vulkan device 2019-03-05 02:50:30 +01:00
Magnus Norddahl
95116e8580 - fix dynamic buffer offset not getting updated
- fix lightbuffer blocksize being hardcoded
2019-03-05 02:06:20 +01:00
Magnus Norddahl
c137e868de - patch in/out layout declarations for OpenGL 2019-03-05 01:17:23 +01:00
Christoph Oelckers
0fa4e03db6 - process escape sequences for episode and skill names
For these, colorization is a desirable feature.
2019-03-05 00:22:26 +01:00
Christoph Oelckers
97ae74081a - special remapping for the Hungarian double accented letters.
Instead of entirely stripping away the accent when they are not found, let's go to the Umlaut-variants first.
2019-03-04 20:06:19 +01:00
Alexander
77cb9ae866 added MakeScreenShot and MakeAutoSave functions to FLevelLocals 2019-03-04 19:16:51 +01:00
Christoph Oelckers
525b0214a7 - fixed macro substitution.
It was retrieving the macro from the wrong string.
2019-03-04 17:31:11 +01:00
alexey.lysiuk
a3554bda70 - replaced all usages of insecure vsprintf() function 2019-03-04 17:35:38 +02:00
Magnus Norddahl
c70aff99e7 - enable RenderFirstSkyPortal 2019-03-04 15:55:43 +01:00
Magnus Norddahl
32ad6dc887 - draw the weapon 2019-03-04 15:27:54 +01:00
Magnus Norddahl
d23fbb07cd Merge branch 'vulkan2' of https://github.com/coelckers/gzdoom into vulkan2 2019-03-04 15:24:30 +01:00
Magnus Norddahl
a8a444f010 - missed two places where VK_FORMAT_D24_UNORM_S8_UINT was used 2019-03-04 15:23:49 +01:00
alexey.lysiuk
84a4c9c3a7 - reorderer member initialization in Vulkan objects
This is needed to prevent compilation warnings spam with GCC and Clang
While the warning itself is useful, in this case it's rather pointless and annoying
2019-03-04 16:18:37 +02:00
Magnus Norddahl
2532e4bba6 - fall back to VK_FORMAT_D32_SFLOAT_S8_UINT if VK_FORMAT_D24_UNORM_S8_UINT is not supported 2019-03-04 14:47:49 +01:00
Magnus Norddahl
0a6d77a861 - fall back to linear if tiling is not supported by the device 2019-03-04 13:51:58 +01:00
Magnus Norddahl
9861642fcc - add missing vulkan used features 2019-03-04 13:28:29 +01:00
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