Commit graph

9912 commits

Author SHA1 Message Date
Dennis Felsing a88befb3ca
Merge pull request #7385 from Robyt3/Client-Mapres-Bounds-Checking
Fix client crash on maps with invalid image and sound indices
2023-10-29 22:40:17 +00:00
Robert Müller 751343c846 Fix client crash on maps with invalid image and sound indices
Limit number of sounds being loaded in the client to 64, instead of writing sample indices out of bounds.

Check if sound indices are out of bounds. It was only checked whether the sound index is -1 but no other bounds checking was performed.

Check if image indices are out of bounds. It was not checked for all negative image indices, only -1 was considered.

Add popup message in the editor when trying to add more than 64 sounds, same as for images.

Limit number of images in `map_convert_07` tool, instead of writing out of bounds.
2023-10-29 17:55:20 +01:00
ChillerDragon 683c5bb37d Add sixup server triggered events translation
Fixes double jump effect not being rendered for other players.
This bug only affected 0.7 clients on ddnet servers
2023-10-29 14:56:09 +01:00
Robert Müller 110247f08f
Merge pull request #7383 from furo321/align-killmessages
Align kill messages properly in demos when using `cl_showpred`
2023-10-28 13:54:30 +00:00
furo d9beeaa8b4 Align kill messages properly in demos 2023-10-28 15:27:16 +02:00
Robert Müller 25a776cb23
Merge pull request #7382 from furo321/improve-ghosts-fixes
Small fixes to ghosts
2023-10-28 13:23:40 +00:00
furo e61ed1c3b4 Small fixes for cl_race_ghost_strict_map
- Better description
- Remove redudant map check
2023-10-28 14:54:35 +02:00
furo 2ca8330543 Render ghosts before players 2023-10-28 14:45:43 +02:00
Robert Müller e66fe2c70e Add event dates to time_season: easter, halloween, xmas
Add easter, halloween and xmas to `enum ETimeSeason` and `time_season` function. This unifies the logic for detecting these events and seasons in one function. This allows adding support for special easter, halloween and xmas theme maps in the future. The `localtime` function is not used outside `system.c` anymore. The code for detecting easter is taken from upstream.
2023-10-28 12:10:41 +02:00
Dennis Felsing 28f4739e46
Merge pull request #7375 from furo321/improve-ghosts
Various improvements to ghosts
2023-10-27 22:06:00 +00:00
furo dadb142f4e Add cl_race_ghost_alpha, add title for ghost settings. 2023-10-27 20:56:57 +02:00
furo b90995da06 Add option to always save ghosts, not only personal bests. 2023-10-27 20:55:35 +02:00
furo dc439a804b Ghost browser UI Improvements
- Use Refresh icon instead of text.
- Add button to open ghost directory.
- Button to (de)active all ghosts.
- Grey out ghosts that failed to load.
2023-10-27 20:55:33 +02:00
furo 4f6ce37b3a Add date column to ghost browser 2023-10-27 20:51:19 +02:00
furo c743ed5848 Increase MAX_ACTIVE_GHOSTS from 8 to 256 2023-10-27 20:51:19 +02:00
Robert Müller d167f0042a
Merge pull request #7371 from furo321/conf-argument-completion
Add argument completion for `reset`, `toggle`, `access_level`
2023-10-27 17:50:18 +00:00
Dennis Felsing 80cccaaae9
Merge pull request #7362 from furo321/SvRegionalRankings
Add option to disable printing of regional rankings.
2023-10-27 16:42:23 +00:00
furo 686948e659 Remove m_ArgumentCompletionFlagmask 2023-10-27 18:12:37 +02:00
Robert Müller 68e481945b Fix incorrect menu behavior when quitting/restarting
Only consider `STATE_ONLINE` and `STATE_DEMOPLAYBACK` as ingame.

Closes #7178.
2023-10-26 21:41:03 +02:00
Robert Müller 7312721743 Remove redundant server browser refresh on client start
The `RefreshBrowserTab` function already does the respective `ServerBrowser()->Refresh(...)` calls.
2023-10-26 21:26:34 +02:00
furo adc36e8215 Add argument completion for reset, toggle, access_level 2023-10-25 19:00:12 +02:00
Dennis Felsing 92206044d1
Merge pull request #7366 from furo321/SoundsDetail
Remove "Detail" from sound layers.
2023-10-25 09:21:05 +00:00
furo 18f389fb17 Remove "Detail" from sound layers. 2023-10-24 19:34:09 +02:00
Dennis Felsing 31031f5cc1
Merge pull request #7365 from Robyt3/Menus-Demo-Fixes
Fix crash when directly rendering demo after slicing, fix demo slice confirmation popup not being shown anymore
2023-10-23 22:00:06 +00:00
Robert Müller 61ff171fcd
Merge pull request #7364 from furo321/hookcollsize
Use correct max value for "Hook collision width" setting
2023-10-23 21:36:52 +00:00
Robert Müller 7c06553056 Fix crash when directly rendering demo after slicing
Use `m_aCurrentDemoSelectionName` and `m_DemolistStorageType` for the demo render popup instead of using `m_DemolistSelectedIndex`, which can be invalid when the demo render popup is not opened from the demo browser.

Closes #7347.
2023-10-23 23:30:20 +02:00
Robert Müller f32e8eb8de Fix demo slice confirmation popup not being shown anymore 2023-10-23 23:08:44 +02:00
furo 9b3f34a74f Use correct max value for "Hook collision width" setting 2023-10-23 22:49:51 +02:00
Robert Müller 565f9d1b59
Merge pull request #7363 from furo321/correct-chat-limit
Change chat input size to 256
2023-10-23 20:48:02 +00:00
furo 816fd751c7 Change chat input size to 256 2023-10-23 22:14:49 +02:00
Robert Müller fec7e89b00
Merge pull request #7356 from dobrykafe/pr-editor-stop-sound-preview
Editor: stop/pause sound previews
2023-10-23 16:52:32 +00:00
furo bf98eec518 Add option to disable regional rankings.
Set config to true in tests

Add test for `´sv_regional_rankings`
2023-10-23 14:02:22 +02:00
dobrykafe 35e5c114ba stop sound preview in more places 2023-10-23 12:50:59 +02:00
dobrykafe c304b3eef8 extract CEditor::OnDialogClose 2023-10-23 12:48:53 +02:00
Robert Müller f8af7542c6 Move CHostLookup to separate compilation unit
The host lookup job and the engine interface are independent so they are moved to separate files.

The include of `engine.h` in `client.h` is therefore unnecessary and other includes also had to be adjusted because of this.

The variable `m_VersionServeraddr` is unused and therefore removed. The host lookup job is currently not used on the client-side.
2023-10-22 13:38:35 +02:00
Robert Müller 1fde694565 Improve positioning of IME candidate window for multi-line text
Previously, the IME candidate window was aligned with the top-right corner of the text bounding box (when rendering the text until the caret offset). This does not work correctly for text spanning multiple lines, causing the IME candidate window to be displayed at the X position of the longest line instead. Additionally, text clipping in the chat was not considered, as `CLineInput` is not aware of the clipping implemented in `CChat`, causing the IME candidate window to be moved up too far.

This is fixed by getting the correct rendered position of the caret offset using `m_CursorRenderedPosition`. Vertical alignment is also changed so only one line of text is considered, which makes the behavior more consistent with Windows' native IME candidate window and avoids larger changes in `CLineInput` to make it aware of clipping.
2023-10-20 17:51:01 +02:00
Robert Müller 0e4f174f78 Check for all file errors in demo player, show demo error popup
Handle the return values of all uses of the `io_read`, `io_skip` and `io_tell` functions in `CDemoPlayer`, to handle truncated demo files and other unexpected file reading and seeking errors during demo playback.

Show more detailed error message popups when demos cannot be loaded due to errors and when demo playback is stopped unexpectedly due to errors. Previously, only a generic message "Error loading demo" was shown when loading failed and no error message was shown when demo playback is stopped due to errors.
2023-10-19 21:48:04 +02:00
Robert Müller 6951795619 Add title to engine warnings and make auto-hiding optional
Make the title of warnings adjustable, with the default title being "Warning" to preserve existing code.

Make auto-hiding configurable, so the automatic closing of warning popups after 10 seconds can be toggled.
2023-10-19 21:40:55 +02:00
dobrykafe 697bd8980d stop sound preview in more places 2023-10-18 14:47:47 +02:00
dobrykafe aafee689ca stop/pause sound previews 2023-10-18 13:27:31 +02:00
Robert Müller a0c0d7efba Fix incorrect minimum value of dbg_tuning velramp graph
This was causing the curve to clip outside the graph area.
2023-10-17 20:24:47 +02:00
Robert Müller dc7fa1fbb2 Use ColorRGBA for CGraph entry color 2023-10-17 20:23:16 +02:00
Robert Müller 1a83a17db8 Fix client crash on player info snapshot item with invalid ID
The player info snapshot item (`CNetObj_PlayerInfo`) has its own `m_ClientID` member variable in addition to the generic snapshot item ID. The snapshot item ID was only used to set `m_Snap.m_LocalClientID` but without being checked for invalid values. Now it is checked that both IDs are identical and only `m_ClientID` is used consistently.
2023-10-15 17:06:12 +02:00
Robert Müller 172f316a40 Disable demo slice button while demo is being rendered
There is no reason to slice a demo while currently rendering it and it may cause issues because multiple demo players would access the same `IVideo` instance.
2023-10-13 22:06:17 +02:00
Robert Müller aeb1530966 Improve layout of demo render popup on 5:4 resolutions 2023-10-12 19:20:12 +02:00
Dennis Felsing 01958378f1
Merge pull request #7336 from Robyt3/Demo-Render-Popup-Android
Remove Android-specific layout code for demo render popup
2023-10-11 21:54:21 +00:00
Robert Müller 1dfdd752f8 Remove Android-specific layout code for demo render popup
The filename editbox and buttons of the demo render popup were rendered excessively large on Android. While too small buttons could be an issue with smaller screens, this should not be implemented solely this popup, if Android support is revived in the future, as it makes the UI layout code harder to maintain.
2023-10-11 18:20:11 +02:00
heinrich5991 5fbf02ae91
Merge pull request #7333 from Robyt3/Clang-Tidy-Remove-Nolint
Remove obsolete clang-tidy `NOLINT` comments
2023-10-11 15:49:46 +00:00
Robert Müller aa03aa0f60 Remove obsolete clang-tidy NOLINT comments
The TODO in the `Dilate` function is removed, as the code already appears to be safe without additional checks. The variable `k` is at most `(w * h - 1) * BPP`, as `ix` and `iy` are clamped to maximum `w - 1` and `h - 1` respectively. Because `p < BPP - 1` the index `k + p` is therefore always valid for the buffers. (The caller must ensure that the source and destination buffers are of size `w * h * BPP`.)
2023-10-11 17:22:59 +02:00
Dennis Felsing 60fa51ff13
Merge pull request #7309 from infclass/kaffeine/merge-client-data-structs
Extract client 'six' data types and use them for 'seven' data
2023-10-10 21:55:55 +00:00
Zwelf 1d6771ea9d Fix save_dry command 2023-10-09 16:36:40 +02:00
Zwelf 9be7ad554d Save/load ninja
Add ninja state to save string. Previously ninja was lost during load.
2023-10-09 11:11:55 +02:00
Dennis Felsing cc62d958c6
Merge pull request #7253 from JSaurusRex/midTickAim
firing/hooking takes aim when action happened not when tick
2023-10-08 21:29:34 +00:00
JSaurusRex 3c7ad1490b done requested code changes 2023-10-08 17:31:43 +02:00
Dennis Felsing 1130ebc3b7
Merge pull request #7324 from furo321/solo-kill-team
Don't announce team killed if it's a solo server.
2023-10-08 11:38:26 +00:00
furo 703db2c124 Don't announce team killed if it's a solo server. 2023-10-08 13:06:39 +02:00
Dennis Felsing f7d23844db
Merge pull request #7322 from Robyt3/Editor-External-Image-Name-Fix
Fix names of external images not being loaded in editor
2023-10-08 10:59:53 +00:00
Dennis Felsing dc57cc38c4
Merge pull request #7323 from furo321/move-background-setting
Move "Regular background color" setting to background
2023-10-08 10:59:34 +00:00
furo 88e1988d96 Move "Regular background color" setting to background
Fixed capitalization (only captialize first letter)
2023-10-08 12:26:03 +02:00
Robert Müller 97ae362bd6 Fix names of external images not being loaded in editor
The entire `CEditorImage` was being overwritten when loading external images, which was causing the already loaded image name to be cleared, due to the changed order of operations (regression from #7008). This is fixed by using `CImageInfo` to load the image and only copying the relevant members to the `CEditorImage`.
2023-10-08 11:38:13 +02:00
Robert Müller d4fed2360e
Merge pull request #7208 from dobrykafe/pr-editor-toolbar-sounds
Enhance editor toolbar sounds
2023-10-08 09:06:15 +00:00
Dennis Felsing e4ccd79851
Merge pull request #7318 from furo321/editor-mode-icons
Use icons for editor mode switching.
2023-10-08 08:17:07 +00:00
furo e1979d9c9b Use icons for editor mode switching.
Make the icons bigger.

Make it the same size as "group"
2023-10-08 01:17:20 +02:00
Dennis Felsing 454194489b
Merge pull request #7319 from furo321/reset-zoom-on-change
Reset zoom when adjusting default zoom in settings
2023-10-07 22:09:43 +00:00
Dennis Felsing 7034ca84ec
Merge pull request #7314 from furo321/keep-practice
Don't disable practice on death.
2023-10-07 21:28:28 +00:00
furo 8c9597667a Reset zoom when adjusting default zoom in settings 2023-10-07 23:24:36 +02:00
dobrykafe 0838fd9d04 fix requested changes 2023-10-07 15:52:36 +02:00
dobrykafe fc23f451b2 show clanmates in different color 2023-10-07 15:05:36 +02:00
dobrykafe 8adbbc433c fix requested changes 2023-10-07 14:49:51 +02:00
Robert Müller 093edb7803
Merge pull request #7308 from Marmare314/add-editor-object
Add `CEditorObject` class
2023-10-07 10:26:28 +00:00
furo d4ec8cf8b4 Don't disable practice on death. 2023-10-07 09:34:20 +02:00
marmare314 719b2bdadd add editor object class
This class is slightly more light-weight than a CEditorComponent
and its naming makes it more natural to inherit for envelope points,
proof-mode positions etc.
2023-10-07 00:46:47 +02:00
Robert Müller 076a902684 Overhaul demo browser UI
Improve layout of demo browser buttons, search and checkbox. Use icons for most buttons. Decrease size of UI elements.

Move demo details from below the file browser to a side panel on the right, which is the same size as the server browser side panel. Use ellipsis to truncate the SHA256 instead of rendering only half of it with reduced font size. Show "map not included" instead of "0.00 KiB" for the map size of demos that don't include a map.

Remove the "Markers" column, as it is not very useful to see for all demos and sort by.

Closes #7275.
2023-10-06 21:46:13 +02:00
JSaurusRex 03fad41def let fix_style.py do its course 2023-10-06 21:23:39 +02:00
Robert Müller 706f021f68 Add CUIRect::Margin with vec2 argument
To more conveniently create different margins in horizontal and vertical directions at the same time.
2023-10-06 18:08:03 +02:00
Alexander Akulich b6470e5a43 Use client 'six' data structs for client 'seven' data 2023-10-06 18:14:38 +03:00
dobrykafe 5b609c8e06 extract CEditor::DoAudioPreview, also use in file dialog 2023-10-06 17:10:43 +02:00
dobrykafe ca517f27b8 enhance editor toolbar sounds 2023-10-06 17:09:19 +02:00
Robert Müller 5a10ef049a Fix clang-tidy readability-static-accessed-through-instance
The crash that was occurring with this check was fixed in clang 15.
2023-10-06 14:07:02 +02:00
Robert Müller 4e31052821 Fix clang-tidy clang-analyzer-deadcode.DeadStores 2023-10-06 14:06:55 +02:00
Robert Müller b81fb37f82 Fix clang-tidy modernize-use-emplace 2023-10-06 14:06:20 +02:00
Robert Müller 48a92f1eac
Merge pull request #7303 from Marmare314/refactor-env-editor
Refactor `CEnvelope` class
2023-10-06 11:29:08 +00:00
Dennis Felsing bdcf3e67f7
Merge pull request #7306 from Marmare314/component-single-member
store only pointer to editor in CEditorComponent
2023-10-06 11:25:16 +00:00
marmare314 73914b3cae store only pointer to editor in CEditorComponent 2023-10-06 12:46:56 +02:00
marmare314 c2adfc5628 make CEnvelope::m_PointsAccess private 2023-10-06 11:39:26 +02:00
marmare314 855ae8885c make CEnvelope::Resort private 2023-10-06 11:39:26 +02:00
marmare314 95528ca0b9 refactor CEnvelope::FindTopBottom
- rename to GetValueRange
- return pair of floats instead of storing them as members
2023-10-06 11:39:26 +02:00
marmare314 283226ef59 init member variables of CEnvelope on declaration 2023-10-06 11:39:26 +02:00
marmare314 08b825439e use type enum in CEnvelope 2023-10-06 11:39:22 +02:00
marmare314 073f208808 split implementations from CEnvelope class 2023-10-06 00:32:12 +02:00
marmare314 1bd3e65c2a extract CEnvelope into seperate header 2023-10-05 22:42:24 +02:00
marmare314 1ccb83b2ae make IEnvelopePointAccess destructor virtual 2023-10-05 22:34:51 +02:00
Robert Müller c0b8bf313c Fix selected demo index being desynced with selected demo name
When using the demo filter and the selected demo name does not match any visible demo item, temporarily reset the selected demo index instead of keeping an incorrect demo index. This makes the behavior consistent with the server browser.
2023-10-05 21:29:34 +02:00
Robert Müller 48ba1f463a Ensure CDemoItem member variables are initialized
The variable `m_Valid` was not initialized in all cases.
2023-10-05 21:29:33 +02:00
JSaurusRex f1dd707c46 fixed clang formatting error 2023-10-05 20:10:52 +02:00
Dennis Felsing 2b115b92fa
Merge pull request #7300 from Robyt3/Demo-Render-Dialog-Fixes
Fix demo render complete popup opening on error, improve layout
2023-10-05 11:45:39 +00:00
Dennis Felsing d1cd0aeb20
Merge pull request #7287 from Marmare314/string-tooltip
store editor tooltip in optional string
2023-10-05 10:01:01 +00:00
Robert Müller 39057d7b87 Fix demo render complete popup opening on error, improve layout
The popup to show the completed demo rendering was also shown when the demo to be rendered could not be loaded or if the demo render popup was cancelled. Now the popup is only shown when the demo rendering was successful.

The layout of the popup is made consistent with other message popups. Long text is wrapped over multiple lines instead of decreasing the font size.
2023-10-05 11:58:48 +02:00
marmare314 25da78a00e store editor tooltip in optional string 2023-10-04 23:48:14 +02:00
Dennis Felsing b7de3d1e22
Merge pull request #7295 from Learath2/pr_fixfixfix
Vanilla tunings should be used for reckoning
2023-10-04 16:19:10 +00:00