Commit graph

18760 commits

Author SHA1 Message Date
heinrich5991 0cba06d80f Don't use Mersenne Twister 2023-11-18 22:55:17 +01:00
heinrich5991 b951734c03 Don't allow mem_zero for nontrivial types
Initialize nontrivial types with a constructor instead. Make the
compiler aware that some of our constructors are indeed trivial.

This allows `mem_zero` calls to actually always zero the memory.
2023-11-18 22:55:17 +01:00
Robert Müller ddf935795d Fix inverted community parsing conditions 2023-11-18 22:55:08 +01:00
Chairn 6e629e1deb Type safe mem_zero function (fixes #5228)
Partially replaces #5690.
POD types are just memset. Other types are either destructed if not
trivial and/or constructed if not trivial. Types need to have a default
constructor.
Virtual classes can be mem_zeroed only if they already have been
constructed, otherwise it is UB.
2023-11-18 22:47:22 +01:00
Robert Müller ee04cd4dda
Merge pull request #7459 from heinrich5991/pr_ddnet_community_json
Add icon URL, remove `servers-key`/`ranks-key` from community JSON
2023-11-18 21:08:23 +00:00
heinrich5991 c7cd281aff Add icon URL, remove servers-key/ranks-key from community JSON
Previously:

```json
{
  "ddnet": {
    "name": "DDraceNetwork",
    "servers-key": "servers",
    "ranks-key": "maps",
    "icon-sha256": "162313eeb954e34495ad03066fee1418ed3c963e76cc83dff993e1c7856c742b"
  }
}
```

Now:
```json
[
  {
    "id": "ddnet",
    "name": "DDraceNetwork",
    "icon": {
      "sha256": "162313eeb954e34495ad03066fee1418ed3c963e76cc83dff993e1c7856c742b",
      "url": "https://info.ddnet.org/icons/ddnet.png"
    },
    "ranks": [
      …
    ],
    "servers": {
      …
    }
  }
]
```

Special case `ddnet` to look for the `servers`, `maps` in the top-level
and `kog` to look for `servers-kog` in the top-level.
2023-11-18 21:52:51 +01:00
Dennis Felsing ccd767aea4
Merge pull request #7474 from ChillerDragon/pr_mod_crash
Fix crash in mod controller
2023-11-18 19:59:22 +00:00
heinrich5991 43a58f05ae
Merge pull request #7492 from Robyt3/Console-DeadLock-Fix
Fix dead lock when printing log entry while rendering console line
2023-11-18 16:57:19 +00:00
Robert Müller fcddc165b2 Remove unnecessary mem_zero of ringbuffer memory
Zeroing the entire ringbuffer memory is unnecessary and inefficient. Only the first item in the ringbuffer has to be initialized properly.

It's unlikely that existing code depends on allocated memory being zeroed, as recycled ringbuffer items where never zeroed.
2023-11-18 17:40:36 +01:00
Robert Müller e05ec66043 Fix dead lock when printing log entry while rendering console line
Previously, the client would hang due to recursive usage of the console backlog lock when a log line is printed via the logger functions while already owning the backlog lock. This could happen when the text render causes log messages to be printed while the console backlog is rendered.

This is fixed by introducing a separate pending backlog to which new log lines are initially added and which is protected by a lock. The pending backlog entries are pumped into the normal backlog before the normal backlog is used, so accesses to the normal backlog do not need to be locked anymore. This means the console backlog lock is not owned when calling any functions that could print log messages, which should prevent the dead lock.
2023-11-18 16:28:29 +01:00
ChillerDragon f0aae73b1f Fix crash in mod controller
When creating a non ddrace controller and it uses `IGameController::GetMaskForPlayerWorldEvent`
it will crash:

 #0  0x00007ffff72ac83c in ?? () from /usr/lib/libc.so.6
 #1  0x00007ffff725c668 in raise () from /usr/lib/libc.so.6
 #2  0x00007ffff72444b8 in abort () from /usr/lib/libc.so.6
 #3  0x00007ffff749ca6f in __gnu_cxx::__verbose_terminate_handler () at /usr/src/debug/gcc/gcc/libstdc++-v3/libsupc++/vterminate.cc:95
 #4  0x00007ffff74b011c in __cxxabiv1::__terminate (handler=<optimized out>) at /usr/src/debug/gcc/gcc/libstdc++-v3/libsupc++/eh_terminate.cc:48
 #5  0x00007ffff74b0189 in std::terminate () at /usr/src/debug/gcc/gcc/libstdc++-v3/libsupc++/eh_terminate.cc:58
 #6  0x00007ffff74b03ed in __cxxabiv1::__cxa_throw (obj=<optimized out>, tinfo=0x7ffff766c0e8 <typeinfo for std::out_of_range>, dest=0x7ffff74c85c0 <std::out_of_range::~out_of_range()>) at /usr/src/debug/gcc/gcc/libstdc++-v3/libsupc++/eh_throw.cc:98
 #7  0x00007ffff74a025f in std::__throw_out_of_range_fmt (__fmt=<optimized out>) at /usr/src/debug/gcc/gcc/libstdc++-v3/src/c++11/functexcept.cc:101
 #8  0x00005555555bd4a3 in std::bitset<64ul>::_M_check (this=0x7fffffffbb90, __position=0xffffffffffffffff, __s=0x5555557a9881 "bitset::reset") at /usr/include/c++/13.2.1/bitset:823
 #9  0x00005555555f83e0 in std::bitset<64ul>::reset (this=0x7fffffffbb90, __position=0xffffffffffffffff) at /usr/include/c++/13.2.1/bitset:1196
 #10 0x000055555560262a in IGameController::GetMaskForPlayerWorldEvent (this=0x555555b113d0, Asker=0x0, ExceptID=0xffffffff) at /home/chiller/Desktop/git/ddnet/src/game/server/gamecontroller.cpp:728
 #11 0x000055555560be0f in CPlayer::TryRespawn (this=0x55555592e500 <gs_PoolDataCPlayer>) at /home/chiller/Desktop/git/ddnet/src/game/server/player.cpp:695
 #12 0x000055555560a1a6 in CPlayer::Tick (this=0x55555592e500 <gs_PoolDataCPlayer>) at /home/chiller/Desktop/git/ddnet/src/game/server/player.cpp:249
 #13 0x00005555555e174b in CGameContext::OnTick (this=0x7ffff477d010) at /home/chiller/Desktop/git/ddnet/src/game/server/gamecontext.cpp:964
 #14 0x00005555555a7e34 in CServer::Run (this=0x7ffff57d5010) at /home/chiller/Desktop/git/ddnet/src/engine/server/server.cpp:2893
 #15 0x0000555555592a2b in main (argc=0x1, argv=0x7fffffffd178) at /home/chiller/Desktop/git/ddnet/src/engine/server/main.cpp:197
2023-11-18 15:56:10 +01:00
heinrich5991 2dbfc72a4d
Merge pull request #7464 from ChillerDragon/pr_use_ddr_wrapper
Use GetDDRaceTeam() and move m_Teams to igamecontroller
2023-11-18 13:41:45 +00:00
ChillerDragon 83af6c0a36 Move m_Teams to IGameController
Also increase usage of the `GetDDRaceTeam()` method.
Instead of reimplementing it in place everywhere.

move `m_Teams` from the ddrace controller to `IGameController`
so the ddrace controller casts can go away

This will enable creating another controller instead of the ddrace
controller. Which is useful for community forks.

Also make `m_Teams` private and define a getter for it.
This makes future refactors smoother.
2023-11-18 13:55:48 +01:00
Dennis Felsing 8ab9e72240
Merge pull request #7491 from furo321/fix-lastkickvote
Fix some issues with `sv_vote_kick_delay`.
2023-11-18 12:31:35 +00:00
furo 045915eab5 Fix some issues with sv_vote_kick_delay. 2023-11-18 13:09:13 +01:00
Dennis Felsing 7495b23b24
Merge pull request #7490 from heinrich5991/pr_ddnet_tuning_noconsole
Make gamecore.h not depend on console
2023-11-18 03:09:10 +00:00
heinrich5991 da78cc0735
Merge pull request #7471 from ChillerDragon/pr_tele_controller
Move m_TeleOuts from ddr controller to game controller
2023-11-18 02:54:06 +00:00
heinrich5991 46679deddc
Merge pull request #7481 from Robyt3/Storage-UTF8-Check
Ensure filenames are valid UTF-8 on Unix
2023-11-18 02:51:55 +00:00
ChillerDragon 60e6025e7a Move m_TeleOuts from ddr controller to game controller
#7127
2023-11-17 23:52:31 +01:00
Dennis Felsing 0bf9e2dbb3
Merge pull request #7488 from Robyt3/Editor-GridFactor-Fix
Fix map grid factor always being shown as 1
2023-11-17 22:32:19 +00:00
Dennis Felsing c3399d00fb
Merge pull request #7489 from ChillerDragon/pr_tele_coverage
Check red tele and dragger in CI
2023-11-17 22:31:49 +00:00
heinrich5991 75f40ede45 Make gamecore.h not depend on console 2023-11-17 23:26:10 +01:00
Dennis Felsing 7d0718ee8b
Merge pull request #7487 from Robyt3/Base-Assert-NoLogger-Fix
Fix `nullptr` access on `dbg_assert` with no global logger
2023-11-17 21:06:23 +00:00
Robert Müller dd907ab016 Fix map grid factor always being shown as 1 2023-11-17 21:52:39 +01:00
ChillerDragon f70c288d07 Check red tele and dragger in CI 2023-11-17 21:49:31 +01:00
Robert Müller 7d69016b3a Fix nullptr access on dbg_assert with no global logger
Now it's also possible to use `dbg_assert` without/before having set a global logger.
2023-11-17 21:07:41 +01:00
Robert Müller 5c7bb58457 Ensure filenames are valid UTF-8 on Unix
On Unix, the encoding of filenames is unspecified, although UTF-8 is likely used in most cases. Detecting and converting from several possible encodings to UTF-8 would be too much effort, considering that most systems already use UTF-8 per default. Therefore, any filenames which are not valid UTF-8 will be ignored when listing directories with `fs_listdir(_fileinfo)`, `fs_storage_path` will fail if the storage location is not valid UTF-8 and `fs_getcwd` will fail if the current working directory is not valid UTF-8. Paths specified in `storage.cfg` must also be valid UTF-8.

On Windows, we already ensure that all filenames are converted to UTF-8.
2023-11-17 18:55:28 +01:00
Dennis Felsing 4e27299657
Merge pull request #7470 from furo321/remove-map-setting-msg
Don't print "tunes"/unknown commands from maps.
2023-11-16 23:34:22 +00:00
Robert Müller 88829a5080
Merge pull request #7483 from heinrich5991/pr_ddnet_pred_margin
Don't allow too large of a prediction margin
2023-11-16 21:33:34 +00:00
heinrich5991 24a74e373e Don't allow too large of a prediction margin 2023-11-16 22:18:15 +01:00
heinrich5991 4116d78c6f
Merge pull request #7482 from Robyt3/Client-Serverbrowser-CommunityIcon-Leak
Fix leak of community icons when jobs not finished
2023-11-16 21:06:00 +00:00
Robert Müller 32bd6f6526 Fix leak of community icons when jobs not finished
The community icon data loaded in background jobs was previously not freed when the client is quit before the community icon data is processed.
2023-11-16 21:47:27 +01:00
furo e3402cbf85 Don't print "tunes"/unknown commands from maps. 2023-11-16 01:02:22 +01:00
Dennis Felsing 55098cd313
Merge pull request #7469 from archimede67/pr-save-chat-input
Save current chat input when pressing UP. Prevent input clearing when pressing DOWN
2023-11-15 23:20:13 +00:00
Dennis Felsing 723bda1280
Merge pull request #7468 from n0Ketchp/patch-15
Update spanish.txt
2023-11-15 22:55:32 +00:00
Corantin H 06674ebecf Save current input when using UP arrow. Prevent DOWN arrow from clearing current input. 2023-11-15 23:52:02 +01:00
Dennis Felsing fcd7f135f0
Merge pull request #7466 from Robyt3/Editor-Parent-Folder-Fix
Fix parent folder not being shown in editor file browser, fix typo
2023-11-15 22:37:47 +00:00
noKetchup 3f725509f0
Update spanish.txt 2023-11-15 19:31:27 -03:00
heinrich5991 162258af3d
Merge pull request #7467 from furo321/case-insenstive-keys
Make KEY argument case-insensitive
2023-11-15 22:09:40 +00:00
furo 0042aec086 Make KEY argument case-insensitive 2023-11-15 22:51:41 +01:00
Robert Müller f54fc2e441 Fix parent folder not being shown in editor file browser, fix typo
The check for multiple storage locations was using the base path from the previous invocation of the file dialog instead of using the new base path.

Closes #7463.
2023-11-15 22:28:50 +01:00
Jupeyy dfbff0eb57
Merge pull request #7462 from furo321/update_textsize
Set size of text when changing slider of `cl_text_entities_size`.
2023-11-15 20:18:29 +00:00
furo 740049a454 Set size of text when changing slider of cl_text_entities_size. 2023-11-15 20:54:27 +01:00
Dennis Felsing db44f218dd
Merge pull request #7460 from dobrykafe/pr-update-filename
Update `m_FileDialogFileNameInput` when deleting a file
2023-11-15 19:28:15 +00:00
dobrykafe 08a00cff6b update m_FileDialogFileNameInput when deleting a file 2023-11-15 18:24:20 +01:00
Dennis Felsing eb0392007b
Merge pull request #7458 from furo321/incorrect-usage
Correct usage of `demo_extract_chat` tool.
2023-11-15 14:33:11 +00:00
furo e27223a027 Correct usage of demo_extract_chat tool. 2023-11-15 15:08:30 +01:00
Dennis Felsing 9c083cadb5
Merge pull request #7457 from ChillerDragon/pr_unused_demo_var
Fix unused variabled m_WasRecording
2023-11-15 12:07:26 +00:00
ChillerDragon 9e27a5a107 Fix unused variabled m_WasRecording 2023-11-15 12:11:58 +01:00
Robert Müller f726fbf16c
Merge pull request #7456 from apelsin21/exit_OP_SCALE
Use Escape to cancel OP_SCALE envelope
2023-11-14 22:22:21 +00:00