Commit graph

14466 commits

Author SHA1 Message Date
furo 2ed631b90a Set max limit for sv_port and ec_port to 65535 2024-02-02 22:08:56 +01:00
Robert Müller e8305ef111 Move CSnapIDPool to separate compilation unit 2024-02-02 20:33:43 +01:00
Robert Müller c40d809282 Refactor skin refreshing in gameclient, fix crash in skin settings
Add `CGameClient::RefreshSkins` function to refresh skins. This function reloads all skins by calling `CSkins::Refresh` and then notifies all gameclient components about the skins being refreshed by calling the new `CComponent::OnRefreshSkins` function, so the components can properly invalidate their current skin texture handles. The existing `RefindSkins` functions are changed to `OnRefreshSkins`.

Additionally, `OnRefreshSkins` is overridden in `CMenus` to set the flag so the skin list will be updated before it is rendered the next time, to fix the client crashing when changing skin related config variables via the console. Closes #7891.
2024-02-01 20:41:10 +01:00
Dennis Felsing 2ed899a259
Merge pull request #7890 from Robyt3/Voting-Hud-Improvement
Improve voting HUD, refactoring
2024-02-01 08:41:58 +00:00
Dennis Felsing 3133676abb
Merge pull request #7889 from bencie/master
Fix inconsistencies in appearance settings
2024-02-01 08:41:50 +00:00
Dennis Felsing dea3d170f0
Merge pull request #7888 from heinrich5991/pr_ddnet_mastersrv_charset
Accept `charset=*` in `Content-Type` for masterserver
2024-02-01 08:10:44 +00:00
Robert Müller 1955905a19 Improve voting HUD
Reduce height and empty space and make margins consistent. Slightly increase width for better round corner drawing and to support longer vote descriptions.

Auto-scale description and reason labels and show ellipsis if they don't fit.

Show circular progress indicator for remaining vote time.
2024-01-31 23:09:31 +01:00
Robert Müller fa62d3c360 Close voting HUD when remaining seconds are negative
Ensure voting HUD disappears when it should, in case the server does not announce that the vote has ended correctly.
2024-01-31 23:09:31 +01:00
Robert Müller dfc2e80701 Move voting rendering from CHud to CVoting 2024-01-31 23:09:31 +01:00
bencie 0972dc2bbe Move Show chat checkbox to Chat tab 2024-01-31 21:45:09 +01:00
bencie f34a583a4e Remove redundant Show kill messages checkbox 2024-01-31 21:44:16 +01:00
Robert Müller df95ca74ec Extract CVoting::RemoveOption function 2024-01-31 21:06:11 +01:00
Robert Müller c1549635c6 Cleanup CVoting::RenderBars function
The functionality to draw text on the voting bars is never used, so the parameter `Text` is always `false`.

Remove unused variable `PassArea`. The remaining area of the voting bars is unused.
2024-01-31 21:05:03 +01:00
heinrich5991 1d638707b2 Accept charset=* in Content-Type for masterserver
You should generally not send a `charset=*` parameter for `Content-Type:
application/json` because no parameters are defined for it:
https://datatracker.ietf.org/doc/html/rfc7158#section-11.

Fixes #6955.
2024-01-31 20:34:21 +01:00
Dennis Felsing 984457a48e
Merge pull request #7887 from furo321/add-conchain-skin-cmds
Add console chain for refreshing skins
2024-01-31 09:00:45 +00:00
Dennis Felsing c3e3ac5732
Merge pull request #7885 from furo321/practice-improvements
Small improvements to practice
2024-01-31 09:00:18 +00:00
Dennis Felsing a7097f1ae7
Merge pull request #7884 from furo321/cmdlist
Tell the user about `/cmdlist` when using an unknown chat command.
2024-01-31 08:59:36 +00:00
furo 5179850dbd Add console chain for refreshing skins 2024-01-31 01:57:55 +01:00
furo d149ab60e8 Remove unused ConAccept function 2024-01-31 00:51:50 +01:00
furo ec70556577 Don't print the team cannot finish anymore message when team is already in practice 2024-01-31 00:47:19 +01:00
furo c1fe1b49fa Allow joining started teams that have practice enabled 2024-01-31 00:39:00 +01:00
furo a9df61e1dd Tell the user about /cmdlist when using an unknown chat command. 2024-01-31 00:27:38 +01:00
Dennis Felsing 7f42b3a082
Merge pull request #7883 from Teero888/master
CMenus::RandomSkin() adjustments
2024-01-30 23:06:09 +00:00
Teero888 e3dc26a81b fix msvc complaining 2024-01-30 22:28:55 +01:00
Teero888 fda6a6760c remove redundant get() call on smart pointer 2024-01-30 22:05:44 +01:00
Teero888 cef4358560 CMenus::RandomSkin() adjustments
+ Dont randomise colors if UseCustomColor is false
+ Use all instead of only vanilla skins when randomising
2024-01-30 21:46:04 +01:00
Robert Müller 2e35250401 Improve client/server launch log messages
Use error log level for error messages. Use info log level explicitly instead of using `dbg_msg`.

Log time taken for initialization in trace level message.
2024-01-30 20:45:23 +01:00
ChillerDragon 40633d800a Fix 0.7 armor being snapped as health
Closed https://github.com/ZillyInsta/ddnet-insta/issues/91
2024-01-30 19:47:04 +08:00
ChillerDragon f375f20ffc Fix clang warning and UB when there is no game layer
clang 14.0.6 shows this:

```
[ 98%] Building CXX object CMakeFiles/game-client.dir/src/game/generated/client_data7.cpp.o
In file included from /usr/include/c++/12/bits/stl_tempbuf.h:60,
                 from /usr/include/c++/12/bits/stl_algo.h:61,
                 from /usr/include/c++/12/algorithm:61,
                 from /home/chiller/Desktop/git/ddnet/src/base/math.h:6,
                 from /home/chiller/Desktop/git/ddnet/src/base/color.h:5,
                 from /home/chiller/Desktop/git/ddnet/src/game/editor/popups.cpp:4:
In function ‘void std::_Construct(_Tp*, _Args&& ...) [with _Tp = CEditorActionTileChanges; _Args = {CEditor*&, int&, int&, const char (&)[20], map<int, map<int, STileStateChange, less<int>, allocator<pair<const int, STileStateChange> > >, less<int>, allocator<pair<const int, map<int, STileStateChange, less<int>, allocator<pair<const int, STileStateChange> > > > > >&}]’,
    inlined from ‘static void std::allocator_traits<std::allocator<void> >::construct(allocator_type&, _Up*, _Args&& ...) [with _Up = CEditorActionTileChanges; _Args = {CEditor*&, int&, int&, const char (&)[20], std::map<int, std::map<int, STileStateChange, std::less<int>, std::allocator<std::pair<const int, STileStateChange> > >, std::less<int>, std::allocator<std::pair<const int, std::map<int, STileStateChange, std::less<int>, std::allocator<std::pair<const int, STileStateChange> > > > > >&}]’ at /usr/include/c++/12/bits/alloc_traits.h:635:19,
    inlined from ‘std::_Sp_counted_ptr_inplace<_Tp, _Alloc, _Lp>::_Sp_counted_ptr_inplace(_Alloc, _Args&& ...) [with _Args = {CEditor*&, int&, int&, const char (&)[20], std::map<int, std::map<int, STileStateChange, std::less<int>, std::allocator<std::pair<const int, STileStateChange> > >, std::less<int>, std::allocator<std::pair<const int, std::map<int, STileStateChange, std::less<int>, std::allocator<std::pair<const int, STileStateChange> > > > > >&}; _Tp = CEditorActionTileChanges; _Alloc = std::allocator<void>; __gnu_cxx::_Lock_policy _Lp = __gnu_cxx::_S_atomic]’ at /usr/include/c++/12/bits/shared_ptr_base.h:604:39,
    inlined from ‘std::__shared_count<_Lp>::__shared_count(_Tp*&, std::_Sp_alloc_shared_tag<_Alloc>, _Args&& ...) [with _Tp = CEditorActionTileChanges; _Alloc = std::allocator<void>; _Args = {CEditor*&, int&, int&, const char (&)[20], std::map<int, std::map<int, STileStateChange, std::less<int>, std::allocator<std::pair<const int, STileStateChange> > >, std::less<int>, std::allocator<std::pair<const int, std::map<int, STileStateChange, std::less<int>, std::allocator<std::pair<const int, STileStateChange> > > > > >&}; __gnu_cxx::_Lock_policy _Lp = __gnu_cxx::_S_atomic]’ at /usr/include/c++/12/bits/shared_ptr_base.h:971:16,
    inlined from ‘std::__shared_ptr<_Tp, _Lp>::__shared_ptr(std::_Sp_alloc_shared_tag<_Tp>, _Args&& ...) [with _Alloc = std::allocator<void>; _Args = {CEditor*&, int&, int&, const char (&)[20], std::map<int, std::map<int, STileStateChange, std::less<int>, std::allocator<std::pair<const int, STileStateChange> > >, std::less<int>, std::allocator<std::pair<const int, std::map<int, STileStateChange, std::less<int>, std::allocator<std::pair<const int, STileStateChange> > > > > >&}; _Tp = CEditorActionTileChanges; __gnu_cxx::_Lock_policy _Lp = __gnu_cxx::_S_atomic]’ at /usr/include/c++/12/bits/shared_ptr_base.h:1712:14,
    inlined from ‘std::shared_ptr<_Tp>::shared_ptr(std::_Sp_alloc_shared_tag<_Tp>, _Args&& ...) [with _Alloc = std::allocator<void>; _Args = {CEditor*&, int&, int&, const char (&)[20], std::map<int, std::map<int, STileStateChange, std::less<int>, std::allocator<std::pair<const int, STileStateChange> > >, std::less<int>, std::allocator<std::pair<const int, std::map<int, STileStateChange, std::less<int>, std::allocator<std::pair<const int, STileStateChange> > > > > >&}; _Tp = CEditorActionTileChanges]’ at /usr/include/c++/12/bits/shared_ptr.h:464:59,
    inlined from ‘std::shared_ptr<typename std::enable_if<(! std::is_array< <template-parameter-1-1> >::value), _Tp>::type> std::make_shared(_Args&& ...) [with _Tp = CEditorActionTileChanges; _Args = {CEditor*&, int&, int&, const char (&)[20], map<int, map<int, STileStateChange, less<int>, allocator<pair<const int, STileStateChange> > >, less<int>, allocator<pair<const int, map<int, STileStateChange, less<int>, allocator<pair<const int, STileStateChange> > > > > >&}]’ at /usr/include/c++/12/bits/shared_ptr.h:1010:39,
    inlined from ‘static CUI::EPopupMenuFunctionResult CEditor::PopupGroup(void*, CUIRect, bool)’ at /home/chiller/Desktop/git/ddnet/src/game/editor/popups.cpp:450:85:
/usr/include/c++/12/bits/stl_construct.h:119:7: warning: ‘GameLayerIndex’ may be used uninitialized [-Wmaybe-uninitialized]
  119 |       ::new((void*)__p) _Tp(std::forward<_Args>(__args)...);
      |       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/chiller/Desktop/git/ddnet/src/game/editor/popups.cpp: In static member function ‘static CUI::EPopupMenuFunctionResult CEditor::PopupGroup(void*, CUIRect, bool)’:
/home/chiller/Desktop/git/ddnet/src/game/editor/popups.cpp:408:29: note: ‘GameLayerIndex’ was declared here
  408 |                         int GameLayerIndex;
      |                             ^~~~~~~~~~~~~~
At global scope:
cc1plus: note: unrecognized command-line option ‘-Wno-nullability-completeness’ may have been intended to silence earlier diagnostics
```

Which makes sense. GameLayerIndex is only set in a loop if a condition is met.
And then its value is recorded for the undo feature.

The condition should never be false. Because a game layer is a strict requirement for a functional map.
But I still decided to avoid using an assert or silent ignore.
If this breaks logs would be nice.
If this breaks the editor should not crash.
The editor should never crash or quit to not lose unsaved changes.
2024-01-30 11:16:46 +08:00
Robert Müller dd44c6cd4d Minor improvement of dummy config variable descriptions 2024-01-28 20:12:22 +01:00
Learath 31b3ac71c2 Fix client/server updates 2024-01-28 19:34:30 +01:00
Dennis Felsing d60852a020
Merge pull request #7868 from Learath2/dd_pr_updater
Fix updater issue. Close #7867
2024-01-28 12:37:42 +00:00
Dennis Felsing 33ffd0f052 Version 18.0.2 2024-01-28 13:38:58 +01:00
Learath 2470e7489d Fix updater issue. Close #7867 2024-01-28 12:50:54 +01:00
heinrich5991 dcdc66d1df
Merge pull request #7869 from furo321/testcmds-error
Add a error message for when testing commands aren't allowed
2024-01-27 17:59:51 +00:00
furo 633330bcd8 Add a error message for when testing commands aren't allowed 2024-01-27 18:18:32 +01:00
heinrich5991 e3732928a9
Merge pull request #7862 from Robyt3/Menus-Refactoring-Various
Various minor refactoring of menus
2024-01-27 13:08:55 +00:00
Robert Müller 83942f9a50
Merge pull request #7866 from heinrich5991/pr_ddnet_redundant_utf8_checks
Remove redundant UTF-8 checks
2024-01-27 13:03:45 +00:00
heinrich5991 8157ea4ce4
Merge pull request #7865 from Robyt3/Demo-AddDemoMarker-Error-Messages
Show error messages in console when `add_demomarker` fails
2024-01-27 12:56:50 +00:00
heinrich5991 c16afc60ec
Merge pull request #7864 from infclass/kaffeine/teeinfo-kitties
TeeInfo: Fix blue and limekitty eyes and feet 0.6 -> 0.7 mapping
2024-01-27 12:49:06 +00:00
heinrich5991 4f06f3a797 Remove redundant UTF-8 checks
We already check for valid UTF-8 while unpacking strings.
2024-01-27 13:43:04 +01:00
Robert Müller 5d7f2c6e1b Show error messages in console when add_demomarker fails
When there are too many demo markers already or when the previous demo marker is too close.
2024-01-27 13:26:08 +01:00
Jupeyy 349eb38ebf
Merge pull request #7859 from Robyt3/Windows-ShellExecute-Fixes
Ensure client window is maximized and active after restarting, refactoring
2024-01-27 11:27:40 +00:00
Alexander Akulich e0e37d7f7b TeeInfo: Fix blue and limekitty eyes and feet 0.6 -> 0.7 mapping 2024-01-27 02:00:16 +03:00
furo e14123164b Scale angles using MousePos with zoom 2024-01-26 23:12:47 +01:00
Robert Müller 2b2d3b8dd2 Add enum EServerControlTab 2024-01-26 21:39:11 +01:00
Robert Müller 8982da4a32 Refactor usages of CMenus::DoButton_MenuTab
Use `IGraphics::CORNER_NONE` instead of `0`.

Use `nullptr` instead of `NULL`.

Remove arguments identical to defaults.

Use loops for tab bars with several tabs.
2024-01-26 21:39:11 +01:00
Robert Müller 7854a277c7 Use IGraphics::CORNER_NONE for CUIRect::Draw function 2024-01-26 21:39:11 +01:00
Robert Müller f13888b2cc Move variable declarations closer to usages 2024-01-26 21:39:11 +01:00
Robert Müller 53b5b3bc98 Remove unused m_Spacer variable 2024-01-26 21:39:11 +01:00
Robert Müller eb2aea22b8 Remove redundant condition
The function `CMenus::RenderInGameNetwork` is only called when the client has `STATE_ONLINE` so this condition is always `true`.
2024-01-26 21:39:11 +01:00
Robert Müller 350c1fc860 Remove temporary variable and rename parameter 2024-01-26 21:39:11 +01:00
Robert Müller a49ee14cb0 Remove unused return value of menus render functions 2024-01-26 21:39:11 +01:00
Robert Müller bd7ee904c0 Remove unused PAGE_SYSTEM enum literal 2024-01-26 21:39:11 +01:00
heinrich5991 70743331de
Merge pull request #7861 from furo321/toggle-infomessages
Store info messages even if they aren't enabled
2024-01-26 19:45:46 +00:00
furo d94c0384a6 Store infomessages even if they aren't enabled 2024-01-26 20:20:20 +01:00
Robert Müller d5c7488480 Ensure client window is maximized and active after restarting
Add parameter to `shell_execute` to either start the process in the foreground or background on Windows. Previously, all processes were started in the background, because this is desired when starting the server from the client. However, this causes the graphics initialization to fail when restarting the client after updating or with the `restart` command when using Vulkan with windowed and windowed fullscreen mode.

Closes #6578.
2024-01-25 20:52:17 +01:00
Robert Müller 4d206ffab3 Add documentation for shell_execute and kill_process functions 2024-01-25 20:24:07 +01:00
Robert Müller 725ebc929e Remove duplicate if branch 2024-01-25 20:23:53 +01:00
Robert Müller c4d512d86e
Merge pull request #7687 from archimede67/editor-better-map-settings
Editor: better map settings input (autocomplete, validation)
2024-01-24 18:17:19 +00:00
Robert Müller 1f8a60b8e1 Show extra "Reset filter" button when no servers match filter
Render an additional "Reset filter" button below the "No servers match your filter criteria" message to make it more obvious for new players how to restore the original view of servers, especially when the filter tab is not currently selected.
2024-01-23 20:20:32 +01:00
Corantin H 0cd002e08c Various fixes to map settings handling 2024-01-23 20:15:30 +01:00
Corantin H aca398f3c9 Added dialog to fix invalid map settings on load 2024-01-23 20:13:57 +01:00
Corantin H 9cc8a28305 Better map settings input (autocomplete, validation) 2024-01-23 20:13:56 +01:00
Robert Müller 6829cd6ef6
Merge pull request #7856 from archimede67/editor-undo-cleanup-game-times
Editor: made "Clean up game tiles" undoable
2024-01-23 18:34:14 +00:00
Corantin H af51fcccbb Editor: made "Clean up game tiles" undoable 2024-01-23 19:03:53 +01:00
Robert Müller 9c66a6a147 Remove unused parameter of SetWindowParams function
The `bool AllowResizing` parameter is only passed to other `SetWindowParams` functions but never used in the end, as whether or not resizing is allowed is separately determined based on the value of the `int FullscreenMode` parameter.
2024-01-23 17:49:55 +01:00
heinrich5991 a2c8869025
Merge pull request #7852 from Robyt3/Browser-Community-Filter-Fix
Fix countries/types filters excluding all servers
2024-01-23 08:56:34 +00:00
Dennis Felsing 4f18816b2b Version 18.0.1 2024-01-22 22:53:09 +01:00
Robert Müller 797db31aa1 Fix countries/types filters excluding all servers
Instead of cleaning the countries/types filters based on all available communities' countries/types, only consider the countries/types of currently selected communities. Ensure countries/types are always cleaned when updating the server browser filter in the UI. This fixes that countries/types which are not available for the selected communities were still affecting the server filtering, causing no servers to be shown in some cases.

Closes #7847.
2024-01-22 22:30:15 +01:00
Dennis Felsing 45ab8e911a
Merge pull request #7842 from k-i-o/patch-1
Update config_variables.h
2024-01-22 08:27:08 +00:00
Dennis Felsing de0bd3a78a Version 18.0 2024-01-22 09:29:47 +01:00
Samuele Radici 79cf3b4e17
Update config_variables.h
text error
2024-01-22 01:33:44 +01:00
Dennis Felsing 50dc9de991
Merge pull request #7839 from infclass/kaffeine/fix-move-restrictions-incapsulation
Character: Fix m_MoveRestrictions and m_Core incapsulation
2024-01-21 22:40:22 +00:00
Dennis Felsing fca6e0abe3
Merge pull request #7837 from Robyt3/Demo-Recorder-Improvements
Refactor demo recorder usage
2024-01-21 22:39:46 +00:00
Alexander Akulich d0f5ced546 Make http states a enum class and use it across the codebase 2024-01-22 01:06:59 +03:00
Robert Müller 9150f48562 Refactor demo recorder usage
To simplify the usage of the demo recorder, parameters are added to the `IDemoRecorder::Stop` function to control whether the demo file is removed or renamed when stopping the recording.

Ensure demo files of the replay recorder are always removed (except on crashes). The temporary replay demos were previously not removed when being disconnected from a server.

Fix auto demos being stopped and restarted when enabling replays in the settings menu. Now only the replay recorder is stopped/started when necessary.

Fix replay recorder being restarted when setting `cl_replay` variable with console without changing the value.

Remove unnecessary `CClient::m_ButtonRender` variable. Demo rendering is already stopped correctly when reaching the end of the demo without this additional variable.

Remove unused `CDemoRecorder::m_pMapData` variable.
2024-01-21 22:21:56 +01:00
Alexander Akulich 386935f5cf Character: Incapsulate m_MoveRestrictions and m_Core
Instead of leaking the m_MoveRestrictions to all classes which needs to
adjust the Character velocity, add a setter which takes into account those
restrictions.

The shotgun bug replication requires an access to the Velocity without the
restrictions applied (so we have to have this dirty setter).

Expose only *const* CCharacterCore to force the setters usage and prevent
incorrect write.
2024-01-21 20:59:50 +03:00
Robert Müller b89e4e8770 Finish CHttpRequest::OnCompletion before updating State()
Ensure that the `CHttpRequest::OnCompletion` function has finished before updating the state which is visible to other threads. Otherwise, threads may try to access the result of a completed HTTP request, before the result has been initialized/updated in the `OnCompletion` function.

Fixes warning due to invalid texture width/height being shown for downloaded skins, because the texture was loaded before the image data was initialized. Closes #7818.

Regression from #7683. Before this, the `OnCompletion` function could also modify the HTTP request's state, which was used to check if loading the skin PNG failed. Instead of doing this, a separate check is added for the skin download task to check that the PNG was loaded successfully.
2024-01-21 14:53:33 +01:00
Dennis Felsing 94931fadc0
Merge pull request #7832 from Robyt3/Base-Localtime-Threadlocal
Ensure uses of `localtime` function are thread-safe
2024-01-21 10:36:31 +00:00
Robert Müller 4b8dabcf5d Improve Windows logger, add virtual terminal support
Use [virtual terminal processing](https://learn.microsoft.com/en-us/windows/console/console-virtual-terminal-sequences) for Windows console output when possible, using the existing async logger. Fallback to the old Windows logger when virtual terminal processing is not available. Do not set any logger when there is no console/file/pipe to output to.

This adds support for 24 bit RGB colors using ANSI escape codes (when Terminal emulator supports it) instead of only supporting 16 fixed colors.

Use the existing async logger also on Windows by converting the console standard output handle to an IOHANDLE. Avoid converting console output to UTF-16 by changing the console output codepage to UTF-8 and outputting that directly. Overall, this reduces the time until the loading screen first appears when launching the client from the console on Windows by around 70%, from 80-100ms down to 25ms.

Add support for `NO_COLOR` environment variable also on Windows.

Use the async logger also for writing output to files and pipes instead of using a Windows specific implementation for this, to reduce lags when redirecting the standard output.

Closes #3925. The client/server will not freeze anymore when entering selection mode in the console because we are using the async logger on Windows now.

Closes #1108. We were already using AIO on Windows to write the logfile, which was not causing any known issues. We are now also using AIO with the async loggers for console/files/pipes on Windows.
2024-01-20 18:19:08 +01:00
Robert Müller 93cbad485d
Merge pull request #7831 from BlaiZephyr/move-nameplate-button
moved nameplates from hud -> nameplates
2024-01-19 20:26:51 +00:00
Robert Müller c1a1720a08 Ensure uses of localtime function are thread-safe
On Windows, the result of the `localtime` function is thread-local, hence our uses of this function are already thread-safe.

On non-Windows, the `localtime` function is potentially not thread-safe, so the reentrant `localtime_r` function is used instead with a thread-local buffer for the result.

Closes #7788.
2024-01-19 21:26:50 +01:00
melon 5361637a55 fixed placement & spacing 2024-01-19 21:09:56 +01:00
melon abe6c1c4b5 moved nameplates from hud -> nameplates 2024-01-19 20:44:31 +01:00
ChillerDragon e59c9a6450 Only log http requests if `dbg_curl 1`
closed #7823
2024-01-19 12:38:53 +08:00
Robert Müller 6e4afd7c63 Remove unnecessary check for entities close to map border
When handling door and laser entities, all 8 adjacent tiles are checked for laser modifier tiles. When handling laser entities, the 8 tiles one further out are also checked for laser modifier tiles. If either of those 16 tiles is outside the map bounds, an error message was printed and the tiles are ignored. The error message is removed because it's unnecessary and misleading. Placing entities near or on the map border is not known to cause any issues.

Closes #7759.
2024-01-18 22:44:22 +01:00
Dennis Felsing 0bce368c77
Merge pull request #7824 from Robyt3/Client-FPS-Graph-Timebase
Add time scale to debug graphs for constant scrolling speed
2024-01-17 23:29:13 +00:00
Ravie 69a74963ce Allow finer editor grid 2024-01-17 23:36:09 +01:00
Robert Müller 4be76f0d08 Add time scale to debug graphs for constant scrolling speed
Store X value (time) for all graph entries in addition to the Y value (FPS, prediction margin etc.). The `CGraph::Add` function adds values to the graph at the current time. The `CGraph::InsertAt` function allows specifying arbitrary X values, as long as the values are inserted in increasing order.

The entries are kept in a ringbuffer and old entries are recycled when it's full. The size of the ringbuffer is configurable for each graph, as the FPS graph needs significantly more buffer because values are added more often.

The scrolling speed of the graphs is fixed by specifying the maximum size of the window of values which should be displayed. For this purpose, a parameter is added to the `CGraph::Scale` function to specify the size of the window which should be rendered in the `CGraph::Render` function. For the FPS graph only the last second is rendered, so small spikes are still noticeable. For prediction and gametime margin graphs the last five seconds are rendered, which should result in a similar scrolling speed as before this change. The debug tuning graph is a special case, where the X values set manually and fixed to 0-127, same as before, instead of being based on the current time.

The graph rendering is made much more efficient by precalculating when the vertex colors need to be updated, to avoid all unnecessary calls to `SetColorVertex`. Additionally, line items are bundled together in an array to avoid calling `LinesDraw` for every individual line item.
2024-01-17 20:43:19 +01:00
Robert Müller c90a52f51c Add CDynamicRingBuffer to avoid specifying size as template 2024-01-17 18:17:08 +01:00
heinrich5991 626b7ca805
Merge pull request #7795 from Robyt3/Menus-Browser-Tab-Icons
Use icons for Internet, LAN and Favorites server browser tabs, use star icon for favorite servers
2024-01-17 13:56:59 +00:00
heinrich5991 9bbceab2c4
Merge pull request #7814 from gerdoe-jr/stop-annoying-superteam
Don't warn about unfinishable map for super team
2024-01-17 13:55:07 +00:00
Dennis Felsing 7c4bde43b1
Merge pull request #7813 from gerdoe-jr/separate-cmds
Divide `/tp` into `/tpxy` and `/tpto`
2024-01-17 00:12:50 +00:00
Dennis Felsing 28cd6ad2a5 Fix style 2024-01-17 00:49:32 +01:00
Dennis Felsing 55c225726b
Merge pull request #7819 from Robyt3/Engine-Warning-Uninitialized
Fix warning title being uninitialized in some cases
2024-01-16 23:48:23 +00:00
Dennis Felsing 79bdd1a3bb
Merge pull request #7816 from Robyt3/Editor-Resize-Cursor-Alignment
Improve alignment of editor resize cursors
2024-01-16 23:47:09 +00:00
gerdoe-jr 1840519609
Check for characters wtih DDRACE_CHEAT instead of TEAM_SUPER 2024-01-16 23:16:19 +03:00
Vladislav Gerasimov c53e0af6ef
/tpto -> /tp and /teleport 2024-01-16 22:17:59 +03:00
Robert Müller 0512e65dbe Fix warning title being uninitialized in some cases
For some warnings a random title instead of the default title was shown because it was not initialized.
2024-01-16 20:12:25 +01:00