Commit graph

20880 commits

Author SHA1 Message Date
Robert Müller fe78331e80 More efficient glyph uploading, fix crash with very large glyphs
Avoid using the `m_aaGlyphData` temporary buffer for uploading glyphs. Instead, allocate the required memory for the glyphs directly and allow the graphics backend to take ownership of the buffer when updating text textures. This avoids copying the glyph data into the temporary buffer when uploading individual glyphs.

This also avoids crashes when rendering very large glyphs with large font sizes, due to the buffer `m_aaGlyphData` having a fixed size of `64 * 1024` while the maximum glyph size is not checked. This fixed size could be exceeded with glyphs larger than 256² in rendered dimensions. There should currently be no glyph in our fonts which is that large and also no font size so large that this could happen.
2024-11-03 14:30:38 +01:00
Robert Müller a7a5c0ea7a Add checks for unsupported glyph pixel mode
Skip rendering glyphs which don't use the 1-byte grayscale pixel mode.
2024-11-03 14:30:29 +01:00
Robert Müller f5179df6d0 Avoid unnecessary copy of glyph data for entities text
Copy the glyph data directly from the font bitmap buffer to the target image instead of using `m_aaGlyphData` as a temporary buffer.
2024-11-03 14:30:15 +01:00
Robert Müller eecaf4cdfc Remove redundant BmpWidth/BmpHeight variables
They are identical to the `Width`/`Height` variables which specify the size of the glyph in the atlas texture.
2024-11-03 14:30:06 +01:00
Dennis Felsing 31625d70e3
Merge pull request #9198 from 4ipset111/master
Update russian.txt
2024-11-03 13:07:45 +00:00
4ipset 86a247eea7
Update russian.txt 2024-11-03 12:16:46 +00:00
Dennis Felsing aa80bae690
Merge pull request #9196 from Robyt3/Client-CheckInfo-Delay-Fix
Fix player info being resent too fast/slow depending on FPS
2024-11-02 22:14:27 +00:00
Robert Müller 2a39a1a318 Fix player info being resent too fast/slow depending on FPS
The change info message was being resent too fast/slow because `m_aCheckInfo` was decremented every frame whereas it was intended to be decremented every tick. As `m_aCheckInfo` is set to `Client()->GameTickSpeed()` after sending the info, it's likely that this was intended as one second delay. With debug messages is can be confirmed that the change info message was previously resent more than 10 times per second with high FPS on a local server.

Also fix the info resending delay not being reset when reconnecting a dummy on 0.7 servers.
2024-11-02 11:00:48 +01:00
Dennis Felsing 812da8e13b
Merge pull request #9195 from KebsCS/pr-q-spec
Change default Q bind to /spec
2024-11-02 06:28:01 +00:00
KebsCS b086b2185d
Change default Q bind to /spec 2024-11-02 00:16:03 +01:00
Dennis Felsing 7b4e32cdf2
Merge pull request #9194 from rffontenelle/patch-2
Update brazilian_portuguese.txt
2024-11-01 22:22:35 +00:00
Rafael Fontenelle 71c46077f2
Update brazilian_portuguese.txt 2024-11-01 17:21:49 -03:00
Dennis Felsing e7feb89611
Merge pull request #9193 from Robyt3/UI-Dropdown-Popup-Alignment
Fix alignment of dropdown popup menu with some button widths
2024-11-01 17:27:11 +00:00
Dennis Felsing 2a0f19ddda
Merge pull request #9192 from furo321/swedish-18.7
Update Swedish translations for 18.7
2024-11-01 17:20:39 +00:00
Dennis Felsing e875a75c91
Merge pull request #9191 from Pioooooo/chinese-18.7
Update Chinese translations for 18.7
2024-11-01 17:20:37 +00:00
Dennis Felsing 6d2d529275
Merge pull request #9190 from EGYT5453/ua-18.7
Update Ukrainian l10n (18.7)
2024-11-01 17:20:35 +00:00
Robert Müller d58e043180 Fix alignment of dropdown popup menu with some button widths
Pass the popup menu positions and sizes as `float`s instead of truncating them to `int`s.
2024-11-01 18:04:30 +01:00
furo 6ca58ac069 Update Swedish translations for 18.7 2024-11-01 17:10:19 +01:00
Pioooooo 9a748ab38a Update Chinese translations for 18.7 2024-11-01 15:29:24 +00:00
Andrii 1384990e29
Update Ukrainian l10n (18.7) 2024-11-01 16:13:59 +02:00
Dennis Felsing bb974c94ca
Merge pull request #9188 from Robyt3/Client-Hook-Collision-Width-Fix
Fix upper bound of hook collision line width scrollbar
2024-11-01 12:27:04 +00:00
Robert Müller e965ccdcac Fix upper bound of hook collision line width scrollbar
The maximum value of the config variable is only `20`. Regression from #9138.
2024-11-01 11:00:11 +01:00
Robert Müller 3345bc9da0
Merge pull request #9186 from def-/pr-transl-18.7
Update translations for upcoming 18.7
2024-11-01 09:06:00 +00:00
Dennis Felsing d6e31d35fe Update translations for upcoming 18.7 2024-11-01 09:12:18 +01:00
Dennis Felsing 19aa7fbb77 Version 18.8 2024-11-01 09:11:04 +01:00
Dennis Felsing 0f91b1287d
Merge pull request #9185 from Robyt3/Client-Font-Error
Improve error handling on invalid fonts and font index
2024-11-01 07:50:48 +00:00
Dennis Felsing 6bcf8ead49 Fix clang-tidy 2024-11-01 08:32:26 +01:00
Robert Müller 96eb49ad3f Improve error handling on invalid fonts and font index
Log more detailed error messages when fonts could not be loaded and when the font index is malformed. Show warning popup on client launch if any font failed to load, although this warning won't be readable if all fonts failed to be loaded.
2024-11-01 00:16:14 +01:00
Dennis Felsing f827b6e999
Merge pull request #9183 from KebsCS/pr-fix-command-preview
Fix chat command preview overlap
2024-10-31 21:27:15 +00:00
KebsCS 6dc11bbb89
Fix chat command preview overlap 2024-10-31 21:33:52 +01:00
Dennis Felsing 215c683692
Merge pull request #9182 from Robyt3/Client-clear_chat-Command
Add `clear_chat` command
2024-10-30 22:30:58 +00:00
Robert Müller c978ecec39 Add clear_chat command
Add a command to clear all lines of chat messages, same as the `clear_local_console`/`clear_remote_console` commands for the consoles. This is useful for example when taking screenshots or recording videos with initially empty chat.
2024-10-30 23:06:25 +01:00
Dennis Felsing df3eeffa3d
Merge pull request #9180 from KebsCS/pr-fix-tele-brush
Fix editor tele layer brush number
2024-10-30 08:13:21 +00:00
KebsCS 768384a8da
Fix editor tele layer brush number 2024-10-30 01:12:45 +01:00
Dennis Felsing f74027666a
Merge pull request #9179 from Robyt3/Client-Ghost-Validation
Improve ghost file validation
2024-10-29 21:23:43 +00:00
Robert Müller 9b4a80d8b7 Improve ghost file validation
Fix out-of-bounds reads in ghost loader when current chunk does not contain enough data for expected number of items.

Improve validation of ghost header information. Ensure strings (owner and map name) are null-terminated and valid UTF-8 to avoid crashes. Avoid duplicate code for validating header.

Remove `static` buffers for compression and decompression of ghost data, which would prevent parallelizing ghost recording and loading. Switch between the main buffer and only one temporary buffer instead of using two temporary buffers.

Automatically delete the ghost file when the recording is stopped with the number of ticks or time being invalid, i.e. when ghost recording will be restarted. This should ensure that invalid ghost files are not left behind if recording is not immediately restarted after being stopped, e.g. due to edge cases like standing inside a start-tile.

Use `int32_t` for `DiffItem` and `UndiffItem` data pointers as these functions are expected to operate on 32-bit integers. Ensure chunk and item data is aligned with `int32_t` to avoid potential unaligned accesses. Use `size_t` for size arguments.

Add assertions to ghost loader and recorder functions to ensure their correct usage. Ensure a file is not already open when opening another one and ensure that a file is open when reading/writing. Ensure that the ghost data type is valid, i.e. between `0` and `0xFF` because it is packed into an `unsigned char`. Ensure data size is valid and aligned with `int32_t`, otherwise data would be packed incorrectly by the `DiffItem` function. Improve error messages, consistent with the error messages of the demo player and recorder. Use the `log_*` functions for logging. Use the same color for all ghost-related log messages.

Avoid `system.h` include in `ghost.h` by moving `CGhostHeader` function definitions to `ghost.cpp`.

Closes #7413.
2024-10-29 21:19:07 +01:00
Robert Müller 402c6aa985 Fix editor Save As confirmation, prevent opening empty filename
The confirmation popup was not shown for the Save As dialog anymore, due to the label being changed to `Save As` for the respective quick action. This check based on string comparison is rather brittle and can be replaced with comparison of the storage type with `IStorage::TYPE_SAVE`.

When the file dialog is used to open files, prevent opening files with an empty filename if enter is pressed while no file is selected (i.e. when the filter excludes all entries).
2024-10-27 15:40:00 +01:00
heinrich5991 666d9f06a9 Replace GitHub-specific emoji names with emojis directly 2024-10-27 12:48:29 +01:00
Dennis Felsing a52986f006
Merge pull request #9175 from Robyt3/Console-ExecutionQueue-Cleanup
Use `std::vector` for console execution queue, fix console result client ID sometimes being uninitialized
2024-10-27 10:59:07 +00:00
Robert Müller 2cd8721cde Use std::vector for console execution queue
Simplify the code by replacing the usage of a linked list and heap with an `std::vector`.

The assignment operators are replaced with copy constructors to use `std::vector`.
2024-10-27 11:02:43 +01:00
Robert Müller 3ec2564acc Fix console result client ID sometimes being uninitialized
Add the client ID as a constructor argument to `CResult` to ensure that it is initialized.
2024-10-27 11:02:43 +01:00
Dennis Felsing 12f5410bdb
Merge pull request #9174 from ChillerDragon/pr_fix_vanilla_demos
Fix vanilla demo tuning
2024-10-27 06:12:20 +00:00
ChillerDragon 386d456484 Fix vanilla demo tuning 2024-10-27 10:06:47 +08:00
Dennis Felsing cb508bdbe1
Merge pull request #9171 from heinrich5991/pr_ddnet_mastersrv_ddper
mastersrv: Add DDPer support
2024-10-26 18:22:43 +00:00
heinrich5991 9067dc5a2a
Merge pull request #9164 from Robyt3/Base-Log-Color-Macros
Add `log_*_color` macros, deprecate `IConsole::Print`
2024-10-26 15:43:35 +00:00
heinrich5991 ff87fac384 mastersrv: Add DDPer support
This allows DDPer to continue using our mastersrv while not showing up
in the DDNet client.
2024-10-26 17:19:45 +02:00
Dennis Felsing 1d04f8e641
Merge pull request #9170 from Robyt3/Windows-MoveFile-WriteThrough
Ensure file is moved when `fs_rename` function returns on Windows
2024-10-26 09:46:52 +00:00
Robert Müller 14facd5a4f Ensure file is moved when fs_rename function returns on Windows
Use the flag `MOVEFILE_WRITE_THROUGH` with the `MoveFileExW` function on Windows to ensure that the file is renamed/moved on the disk before the function returns. Otherwise, if the function returns before the file is moved, subsequent loading of the file with this name may fail sporadically.

See https://learn.microsoft.com/en-us/windows/win32/api/winbase/nf-winbase-movefileexw
2024-10-26 10:20:33 +02:00
Dennis Felsing 4c048f5c7b
Merge pull request #9167 from Robyt3/Client-CLineInput-Event-Condition-Cleanup
Remove redundant check of key for text input events
2024-10-25 20:27:11 +00:00
Robert Müller 565e79fa04 Remove redundant check of key for text input events
Input events with `IInput::FLAG_TEXT` never have a key, so this additional check for modifier keys is redundant.
2024-10-25 22:05:00 +02:00