Commit graph

11872 commits

Author SHA1 Message Date
Robert Müller 86e2d6791f Fix memory leak of CInput clipboard text 2022-06-06 22:14:05 +02:00
Robert Müller ec84e81e17 Replace Android-specific member variables with static variables 2022-06-06 22:14:05 +02:00
Robert Müller ff43b32257 Extract UpdateMouseState function 2022-06-06 22:06:56 +02:00
Robert Müller 9a17617a28 Let IInput::MouseRelative return true if mouse was moved 2022-06-06 22:06:56 +02:00
Robert Müller 92503fccec Add comments, order functions, fix parameter names in engine input 2022-06-06 22:06:55 +02:00
bors[bot] 3ddc4d500b
Merge #5361
5361: Refactoring: Extract CLayerTiles::ShiftImpl, BrushFlipXImpl and BrushFlipYImpl to reduce duplicate code r=heinrich5991 a=Robyt3

There is still more duplicate code but it's tricky to extract.

## Checklist

- [X] Tested the change ingame
- [ ] Provided screenshots if it is a visual change
- [ ] Tested in combination with possibly related configuration options
- [ ] Written a unit test if it works standalone, system.c especially
- [ ] Considered possible null pointers and out of bounds array indexing
- [ ] Changed no physics that affect existing maps
- [ ] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional)


Co-authored-by: Robert Müller <robytemueller@gmail.com>
2022-06-06 12:00:09 +00:00
Robert Müller de199d08c0 Fix doxygen comments 2022-06-06 12:50:08 +02:00
Robert Müller e6bd84d4fd Extract CCmdlineFix to call cmdline_fix and cmdline_free automatically 2022-06-06 12:46:58 +02:00
Robert Müller e0e1f49530 Extract BrushFlipXImpl and BrushFlipYImpl 2022-06-06 11:29:52 +02:00
Robert Müller 19e97829ce Extract CLayerTiles::ShiftImpl 2022-06-06 10:59:36 +02:00
bors[bot] d49b7b1561
Merge #5351
5351: Refactoring: Use MultiByteToWideChar instead of str_utf16le_encode r=heinrich5991 a=Robyt3



## Checklist

- [X] Tested the change ingame
- [ ] Provided screenshots if it is a visual change
- [ ] Tested in combination with possibly related configuration options
- [ ] Written a unit test if it works standalone, system.c especially
- [ ] Considered possible null pointers and out of bounds array indexing
- [ ] Changed no physics that affect existing maps
- [ ] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional)


Co-authored-by: Robert Müller <robytemueller@gmail.com>
2022-06-06 08:41:14 +00:00
Robert Müller fca867702e Add error messages when log message encoding cannot be converted 2022-06-06 10:28:47 +02:00
bors[bot] 62c13f2504
Merge #5360
5360: Don't write null byte r=heinrich5991 a=def-

Thanks to heinrich5991 for noticing: https://github.com/ddnet/ddnet/pull/5341#pullrequestreview-996061345

<!-- What is the motivation for the changes of this pull request -->

## Checklist

- [ ] Tested the change ingame
- [ ] Provided screenshots if it is a visual change
- [ ] Tested in combination with possibly related configuration options
- [ ] Written a unit test if it works standalone, system.c especially
- [ ] Considered possible null pointers and out of bounds array indexing
- [ ] Changed no physics that affect existing maps
- [ ] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional)


Co-authored-by: def <dennis@felsin9.de>
2022-06-06 08:22:34 +00:00
def 8623381529 Don't write null byte
Thanks to heinrich5991 for noticing
2022-06-06 09:47:12 +02:00
trml 2b48c376d6 Fix input getter for dummy 2022-06-06 04:17:55 +02:00
bors[bot] ef5501c4da
Merge #5332
5332: Pass output parameter to WriteFile that is required on Windows 7 r=heinrich5991 a=Robyt3

Maybe closes #5322. I can't reproduce the crash. Can you try if this fixes it, `@Chairn?`

Looks like Windows 7 needs this parameter.

Alternative to #5331.

## Checklist

- [ ] Tested the change ingame
- [ ] Provided screenshots if it is a visual change
- [ ] Tested in combination with possibly related configuration options
- [ ] Written a unit test if it works standalone, system.c especially
- [ ] Considered possible null pointers and out of bounds array indexing
- [ ] Changed no physics that affect existing maps
- [ ] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional)


Co-authored-by: Robert Müller <robytemueller@gmail.com>
2022-06-05 20:52:42 +00:00
bors[bot] eb92852adf
Merge #5344
5344: Log rcon messages (fixes #5342) r=heinrich5991 a=def-

<!-- What is the motivation for the changes of this pull request -->

## Checklist

- [x] Tested the change ingame
- [ ] Provided screenshots if it is a visual change
- [ ] Tested in combination with possibly related configuration options
- [ ] Written a unit test if it works standalone, system.c especially
- [ ] Considered possible null pointers and out of bounds array indexing
- [ ] Changed no physics that affect existing maps
- [ ] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional)


Co-authored-by: def <dennis@felsin9.de>
2022-06-05 20:32:12 +00:00
def de55d49c72 Fix motd undef behavior
Conditional jump or move depends on uninitialised value(s)
   at 0x2158DA: int IServer::SendPackMsg<CNetMsg_Sv_Motd, 0>(CNetMsg_Sv_Motd*, int, int) (server.h:73)
   by 0x1FE02F: CGameContext::SendMotd(int) (gamecontext.cpp:538)
   by 0x20A874: CGameContext::ConchainSpecialMotdupdate(IConsole::IResult*, void*, void (*)(IConsole::IResult*, void*), void*) (gamecontext.cpp:3124)
   by 0x145A23: CConsole::Con_Chain(IConsole::IResult*, void*) (console.cpp:1202)
   by 0x132086: CConsole::ExecuteLineStroked(int, char const*, int, bool) (console.cpp:528)
   by 0x1323A7: CConsole::ExecuteLine(char const*, int, bool) (console.cpp:582)
   by 0x1326B1: CConsole::ExecuteFile(char const*, int, bool, int) (console.cpp:625)
   by 0x1C60E9: main (server.cpp:3874)
 Uninitialised value was created by a heap allocation
   at 0x483BE63: operator new(unsigned long) (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so)
   by 0x1C5900: CreateServer() (server.cpp:3755)
   by 0x1C5C4C: main (server.cpp:3818)
2022-06-05 20:52:04 +02:00
Robert Müller 3dd2df285a Use MultiByteToWideChar instead of str_utf16le_encode 2022-06-05 20:51:56 +02:00
def 735b0bdf4a fifo: read() doesn't null-terminate!
valgrind found this with ChillerDragon's integration script extension
2022-06-05 20:15:55 +02:00
def 1db79fb493 Log rcon messages (fixes #5342) 2022-06-05 19:26:39 +02:00
bors[bot] 152ee93e16
Merge #5347
5347: Fix deleting envelopes not updating sounds r=def- a=C0D3D3V

Original fix by Ravie... updated to latest code

I do not really know how to trigger the bug, but for me adding and deleting sounds to the map, worked.... Since it is only the updated version from Ravie I think it works
`@HiRavie` maybe you can test it again

## Checklist

- [x] Tested the change ingame
- [ ] Provided screenshots if it is a visual change
- [ ] Tested in combination with possibly related configuration options
- [ ] Written a unit test if it works standalone, system.c especially
- [ ] Considered possible null pointers and out of bounds array indexing
- [x] Changed no physics that affect existing maps
- [ ] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional)


Co-authored-by: c0d3d3v <c0d3d3v@mag-keinen-spam.de>
2022-06-05 15:20:58 +00:00
c0d3d3v 52b717f848
Fix deleting envelopes not updating sounds 2022-06-05 15:21:00 +02:00
def af3b1bb0e7 Log rcon messages (fixes #5342) 2022-06-05 12:44:15 +02:00
def ea5999d1da Don't write aAnsi when it's not filled (fixe #5340) 2022-06-05 11:30:54 +02:00
bors[bot] b554039740
Merge #5320
5320: Fix prediction input timing r=def- a=trml

Fixes #5307 by updating the prediction to use the new input handling from #5032, and also removed some now no longer used code.

## Checklist

- [x] Tested the change ingame
- [ ] Provided screenshots if it is a visual change
- [ ] Tested in combination with possibly related configuration options
- [ ] Written a unit test if it works standalone, system.c especially
- [ ] Considered possible null pointers and out of bounds array indexing
- [ ] Changed no physics that affect existing maps
- [ ] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional)


Co-authored-by: trml <trml@users.noreply.github.com>
2022-06-04 22:37:03 +00:00
Robert Müller fda98a3ef4 Rename variables and use class in crapnet tool 2022-06-04 17:21:27 +02:00
Robert Müller 7fa3bb0842 Rename variables and use class in config_common.h 2022-06-04 17:21:26 +02:00
Robert Müller 8258effb33 Move/rename variable declarations in config_store 2022-06-04 17:21:26 +02:00
Robert Müller e8bd26857b Move/rename variable declarations in config_retrieve 2022-06-04 17:21:26 +02:00
Robert Müller 081881efcc Move variable declaration in dilate tool 2022-06-04 17:21:26 +02:00
Robert Müller 1f51e6e06a Fix variable name in dummy_map tool, add storage check 2022-06-04 17:21:26 +02:00
Robert Müller fbfbc78be4 Move/rename variable declarations in map_extract tool 2022-06-04 17:21:25 +02:00
Robert Müller 4bc1aeeb7a Move/rename variable declarations in map_convert_07 tool 2022-06-04 17:21:25 +02:00
Robert Müller d9848728e3 Move/rename variable declarations in map_diff tool, add checks 2022-06-04 17:21:25 +02:00
Robert Müller de3bb1ca8c Move/rename variable declarations in map_replace_image tool 2022-06-04 17:21:25 +02:00
Robert Müller 3003608e40 Move/rename variable declarations in map_resave tool 2022-06-04 17:21:25 +02:00
Robert Müller 1505fbe026 Move/rename variable declarations in map_optimize tool 2022-06-04 17:21:24 +02:00
hus3h db529318ab Unfreeze character after teleporting in practice 2022-06-03 21:31:30 +03:00
bors[bot] 36d0c0dcb4
Merge #5334
5334: fix pixel porridge in freeze and ninja bar r=Jupeyy a=C0D3D3V

fixes #5319

## Checklist

- [x] Tested the change ingame
- [ ] Provided screenshots if it is a visual change
- [ ] Tested in combination with possibly related configuration options
- [ ] Written a unit test if it works standalone, system.c especially
- [x] Considered possible null pointers and out of bounds array indexing
- [x] Changed no physics that affect existing maps
- [x] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional)


Co-authored-by: c0d3d3v <c0d3d3v@mag-keinen-spam.de>
2022-06-03 16:31:26 +00:00
c0d3d3v c33e0c124e
fix pixel porridge in freeze and ninja bar 2022-06-03 18:27:30 +02:00
bors[bot] 4ead727692
Merge #5330
5330: Actually fix capital /WHISPER r=Jupeyy a=def-

As reported by kiwq

<!-- What is the motivation for the changes of this pull request -->

## Checklist

- [x] Tested the change ingame
- [ ] Provided screenshots if it is a visual change
- [ ] Tested in combination with possibly related configuration options
- [ ] Written a unit test if it works standalone, system.c especially
- [ ] Considered possible null pointers and out of bounds array indexing
- [ ] Changed no physics that affect existing maps
- [ ] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional)


Co-authored-by: Dennis Felsing <dennis@felsin9.de>
2022-06-03 14:55:30 +00:00
Robert Müller e5d2b815eb Pass output parameter to WriteFile that is required on Windows 7 2022-06-03 15:55:57 +02:00
Dennis Felsing 9807625ca4 Actually fix capital /WHISPER
As reported by kiwq
2022-06-03 15:26:35 +02:00
bors[bot] 537be53fc2
Merge #5329
5329: Let the names in the mini score hud overflow to the left r=def- a=C0D3D3V

## Checklist

- [x] Tested the change ingame
- [ ] Provided screenshots if it is a visual change
- [ ] Tested in combination with possibly related configuration options
- [ ] Written a unit test if it works standalone, system.c especially
- [x] Considered possible null pointers and out of bounds array indexing
- [x] Changed no physics that affect existing maps
- [x] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional)


Co-authored-by: c0d3d3v <c0d3d3v@mag-keinen-spam.de>
2022-06-03 12:48:50 +00:00
c0d3d3v 090ae5e170
Let the names in the mini score hud overflow to the left 2022-06-03 13:57:39 +02:00
bors[bot] ce795572d2
Merge #5327
5327: Add CLockScope r=heinrich5991 a=def-

Remove unused lock and scope in threading.h

Not sure if this is preferred

We could also try switching to std::mutex and lock_guard

<!-- What is the motivation for the changes of this pull request -->

## Checklist

- [x] Tested the change ingame
- [ ] Provided screenshots if it is a visual change
- [ ] Tested in combination with possibly related configuration options
- [ ] Written a unit test if it works standalone, system.c especially
- [ ] Considered possible null pointers and out of bounds array indexing
- [ ] Changed no physics that affect existing maps
- [ ] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional)


Co-authored-by: Dennis Felsing <dennis@felsin9.de>
2022-06-03 10:58:17 +00:00
bors[bot] 6b7554f306
Merge #5325
5325: Reset colors at end of line (fixes #5324) r=heinrich5991 a=def-

`@ChillerDragon` Can you test this?

## Checklist

- [x] Tested the change ingame
- [ ] Provided screenshots if it is a visual change
- [ ] Tested in combination with possibly related configuration options
- [ ] Written a unit test if it works standalone, system.c especially
- [ ] Considered possible null pointers and out of bounds array indexing
- [ ] Changed no physics that affect existing maps
- [ ] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional)


Co-authored-by: Dennis Felsing <dennis@felsin9.de>
2022-06-03 10:32:26 +00:00
Dennis Felsing 129205d6b9 Reset colors at end of line (fixes #5324) 2022-06-03 12:22:37 +02:00
Dennis Felsing 51909c19ab Add CLockScope
Remove unused lock and scope in threading.h

Not sure if this is preferred

We could also try switching to std::mutex
2022-06-03 12:21:23 +02:00
bors[bot] 2d53aeabce
Merge #5326
5326: Explicitly delete game server from list on shutdown r=def- a=heinrich5991

Also delete it explicitly when `sv_register` is set to register via less
protocols.

On shutdown, wait at most 1 second for the masterserver to respond,
otherwise allow up to 15 seconds.

Fixes https://github.com/ddnet/ddnet/issues/5157.

## Checklist

- [x] Tested the change ingame
- [ ] Provided screenshots if it is a visual change
- [ ] Tested in combination with possibly related configuration options
- [ ] Written a unit test if it works standalone, system.c especially
- [ ] Considered possible null pointers and out of bounds array indexing
- [ ] Changed no physics that affect existing maps
- [ ] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional)


Co-authored-by: heinrich5991 <heinrich5991@gmail.com>
2022-06-03 09:41:37 +00:00
heinrich5991 7fccfaf211 Explicitly delete game server from list on shutdown
Also delete it explicitly when `sv_register` is set to register via less
protocols.

On shutdown, wait at most 1 second for the masterserver to respond,
otherwise allow up to 15 seconds.

Fixes #5157.
2022-06-03 11:27:47 +02:00
heinrich5991 ce08cc0e53 mastersrv: Add Action: delete to /ddnet/15/register
This will delete a server from the server list without a timeout,
allowing servers that want to stop registering or servers that shut down
gracefully to no longer appear in the server list.
2022-06-03 11:27:47 +02:00
trml 455b17e957 Update prediction to use new input handling 2022-06-02 22:35:10 +02:00
bors[bot] c31d3e5fde
Merge #5301
5301: Avoid unnecessary copy leading to crash r=C0D3D3V a=Learath2

<!-- What is the motivation for the changes of this pull request -->
Reported by kiwq#4737 on Discord.

This issue was revealed by the addition of a `std::set` into `CCharacterCore`, I'm unsure why the copy constructor of `std::set` didn't work. It might be a good idea to check and see if there is a further underlying issue `@C0D3D3V.`

<details>
  <summary>Backtrace</summary>

  ```c++
#0  __gnu_cxx::new_allocator<std::_Rb_tree_node<int> >::construct<int, int const&> (this=0x7fffffff95e8, __p=0x555558935fd0) at /usr/include/c++/10.2/ext/new_allocator.h:150
No locals.
#1  0x0000555555831100 in std::allocator_traits<std::allocator<std::_Rb_tree_node<int> > >::construct<int, int const&> (__a=..., __p=0x555558935fd0)
    at /usr/include/c++/10.2/bits/alloc_traits.h:512
No locals.
#2  0x00005555558306b7 in std::_Rb_tree<int, int, std::_Identity<int>, std::less<int>, std::allocator<int> >::_M_construct_node<int const&> (this=0x7fffffff95e8, __node=0x555558935fb0)
    at /usr/include/c++/10.2/bits/stl_tree.h:618
No locals.
#3  0x0000555555830727 in std::_Rb_tree<int, int, std::_Identity<int>, std::less<int>, std::allocator<int> >::_M_create_node<int const&> (this=0x7fffffff95e8)
    at /usr/include/c++/10.2/bits/stl_tree.h:635
        __tmp = 0x555558935fb0
#4  0x000055555583055c in std::_Rb_tree<int, int, std::_Identity<int>, std::less<int>, std::allocator<int> >::_Alloc_node::operator()<int const&> (this=0x7fffffff92d0, 
    __arg=<error reading variable>) at /usr/include/c++/10.2/bits/stl_tree.h:552
No locals.
#5  0x000055555582fcd1 in std::_Rb_tree<int, int, std::_Identity<int>, std::less<int>, std::allocator<int> >::_M_clone_node<std::_Rb_tree<int, int, std::_Identity<int>, std::less<int>, std::allocator<int> >::_Alloc_node> (this=0x7fffffff95e8, __x=0xffffffc100000000, __node_gen=...) at /usr/include/c++/10.2/bits/stl_tree.h:662
        __tmp = 0x7fffeb7a3a10
#6  0x000055555582f188 in std::_Rb_tree<int, int, std::_Identity<int>, std::less<int>, std::allocator<int> >::_M_copy<std::_Rb_tree<int, int, std::_Identity<int>, std::less<int>, std::allocator<int> >::_Alloc_node> (this=0x7fffffff95e8, __x=0xffffffc100000000, __p=0x7fffffff95f0, __node_gen=...) at /usr/include/c++/10.2/bits/stl_tree.h:1881
        __top = 0x7fffeb7a3a10
#7  0x000055555582e294 in std::_Rb_tree<int, int, std::_Identity<int>, std::less<int>, std::allocator<int> >::_M_copy<std::_Rb_tree<int, int, std::_Identity<int>, std::less<int>, std::allocator<int> >::_Alloc_node> (this=0x7fffffff95e8, __x=..., __gen=...) at /usr/include/c++/10.2/bits/stl_tree.h:897
        __root = 0x7fffffff95e8
#8  0x000055555582d41d in std::_Rb_tree<int, int, std::_Identity<int>, std::less<int>, std::allocator<int> >::_M_copy (this=0x7fffffff95e8, __x=...)
    at /usr/include/c++/10.2/bits/stl_tree.h:908
        __an = {_M_t = `@0x7fffffff95e8}`
#9  0x000055555582c1f2 in std::_Rb_tree<int, int, std::_Identity<int>, std::less<int>, std::allocator<int> >::_Rb_tree (this=0x7fffffff95e8, __x=...)
    at /usr/include/c++/10.2/bits/stl_tree.h:946
No locals.
#10 0x0000555555828912 in std::set<int, std::less<int>, std::allocator<int> >::set (this=0x7fffffff95e8) at /usr/include/c++/10.2/bits/stl_set.h:223
No locals.
#11 0x0000555555828a4b in CCharacterCore::CCharacterCore (this=0x7fffffff9598) at /home/ant/ddnet/src/game/gamecore.h:203
No locals.
#12 0x000055555582b426 in CGameClient::CClientData::CClientData (this=0x7fffffff9500) at /home/ant/ddnet/src/game/client/gameclient.h:338
No locals.
#13 0x000055555581b3f1 in CGameClient::IntersectCharacter (this=0x7fffeb496010, HookPos=..., NewPos=..., NewPos2=..., ownID=-2) at /home/ant/ddnet/src/game/client/gameclient.cpp:2195
        Distance = 0
        ClosestID = -1
        OwnClientData = {m_UseCustomColor = 0, m_ColorBody = 0, m_ColorFeet = 0, m_aName = '\000' <repeats 15 times>, m_aClan = '\000' <repeats 11 times>, m_Country = 0, 
          m_aSkinName = '\000' <repeats 63 times>, m_SkinColor = 1156586, m_Team = 2324, m_Emoticon = 5316, m_EmoticonStartFraction = 1.19110369e-42, m_EmoticonStartTick = -672, 
          m_Solo = 126, m_Jetpack = 4, m_NoCollision = false, m_EndlessHook = false, m_EndlessJump = false, m_NoHammerHit = false, m_NoGrenadeHit = false, m_NoLaserHit = false, 
          m_NoShotgunHit = false, m_NoHookHit = false, m_Super = false, m_HasTelegunGun = false, m_HasTelegunGrenade = 255, m_HasTelegunLaser = 255, m_FreezeEnd = 0, m_DeepFrozen = false, 
          m_LiveFrozen = false, m_Predicted = {m_pWorld = 0x14c700000911, m_pCollision = 0xffffff02ffffffe0, m_pTeleOuts = 0x1, m_Pos = {{x = 0, u = 0}, {y = 0, v = 0}}, m_Vel = {{x = 0, 
                u = 0}, {y = 1.40129846e-45, v = 1.40129846e-45}}, m_HookPos = {{x = 1.62071238e-39, u = 1.62071238e-39}, {y = 6.88766221e-41, v = 6.88766221e-41}}, m_HookDir = {{x = 0, 
                u = 0}, {y = 2.80259693e-45, v = 2.80259693e-45}}, m_HookTeleBase = {{x = 0, u = 0}, {y = 6.44597294e-44, v = 6.44597294e-44}}, m_HookTick = 1, m_HookState = 0, 
            m_HookedPlayer = 0, m_AttachedPlayers = {_M_t = {
                _M_impl = {<std::allocator<std::_Rb_tree_node<int> >> = {<__gnu_cxx::new_allocator<std::_Rb_tree_node<int> >> = {<No data fields>}, <No data fields>}, <std::_Rb_tree_key_compare<std::less<int> >> = {_M_key_compare = {<std::binary_function<int, int, bool>> = {<No data fields>}, <No data fields>}}, <std::_Rb_tree_header> = {_M_header = {_M_color = std::_S_red, 
                      _M_parent = 0x0, _M_left = 0x7fffffff95f0, _M_right = 0x7fffffff95f0}, _M_node_count = 0}, <No data fields>}}}, m_ActiveWeapon = 0, m_aWeapons = {{
                m_AmmoRegenStart = 0, m_Ammo = -1, m_Ammocost = 0, m_Got = 23}, {m_AmmoRegenStart = 1479, m_Ammo = 2865, m_Ammocost = -253, m_Got = 218}, {m_AmmoRegenStart = 1, m_Ammo = 0, 
                m_Ammocost = 0, m_Got = false}, {m_AmmoRegenStart = 5, m_Ammo = 0, m_Ammocost = 0, m_Got = false}, {m_AmmoRegenStart = 0, m_Ammo = 1, m_Ammocost = 12918599, m_Got = 255}, {
                m_AmmoRegenStart = 1702519144, m_Ammo = 84, m_Ammocost = 0, m_Got = false}}, m_Ninja = {m_ActivationDir = {{x = 0, u = 0}, {y = 0, v = 0}}, m_ActivationTick = 0, 
              m_CurrentMoveTime = -1, m_OldVelAmount = 1935961199}, m_NewHook = 99, m_Jumped = 108, m_JumpedTotal = 0, m_Jumps = 0, m_Direction = 0, m_Angle = 0, m_Input = {m_Direction = 0, m_TargetX = 0, m_TargetY = 0, m_Jump = 0, m_Fire = 0, m_Hook = 0, m_PlayerFlags = 0, m_WantedWeapon = 0, m_NextWeapon = 0, m_PrevWeapon = 0}, m_TriggeredEvents = 0, m_Id = 0, m_pReset = false, m_LastVel = {{x = -nan(0x7fffff), u = -nan(0x7fffff)}, {y = 0, v = 0}}, m_Colliding = 0, m_LeftWall = false, m_Solo = false, m_Jetpack = false, m_NoCollision = false, m_EndlessHook = false, m_EndlessJump = false, m_NoHammerHit = false, m_NoGrenadeHit = false, m_NoLaserHit = 103, m_NoShotgunHit = 166, m_NoHookHit = 17, m_Super = false, m_HasTelegunGun = false, m_HasTelegunGrenade = false, m_HasTelegunLaser = false, m_FreezeTick = -343988384, m_FreezeEnd = 32767, m_IsInFreeze = 96, m_DeepFrozen = 10, m_LiveFrozen = 122, m_Tuning = {static ms_apNames = {0x5555559e9dec "ground_control_speed", 0x5555559e9e01 "ground_control_accel", 0x5555559e9e16 "ground_friction", 0x5555559e9e26 "ground_jump_impulse", 0x5555559e9e3a "air_jump_impulse", 0x5555559e9e4b "air_control_speed", 0x5555559e9e5d "air_control_accel", 0x5555559e9e6f "air_friction", 0x5555559e9e7c "hook_length", 0x5555559e9e88 "hook_fire_speed", 0x5555559e9e98 "hook_drag_accel", 0x5555559e9ea8 "hook_drag_speed", 0x5555559e9eb8 "gravity", 0x5555559e9ec0 "velramp_start", 0x5555559e9ece "velramp_range", 0x5555559e9edc "velramp_curvature", 0x5555559e9eee "gun_curvature", 0x5555559e9efc "gun_speed", 0x5555559e9f06 "gun_lifetime", 0x5555559e9f13 "shotgun_curvature", 0x5555559e9f25 "shotgun_speed", 0x5555559e9f33 "shotgun_speeddiff", 0x5555559e9f45 "shotgun_lifetime", 0x5555559e9f56 "grenade_curvature", 0x5555559e9f68 "grenade_speed", 0x5555559e9f76 "grenade_lifetime", 0x5555559e9f87 "laser_reach", 0x5555559e9f93 "laser_bounce_delay", 0x5555559e9fa6 "laser_bounce_num", 0x5555559e9fb7 "laser_bounce_cost", 0x5555559e9fc9 "laser_damage", 0x5555559e9fd6 "player_collision", 0x5555559e9fe7 "player_hooking", 0x5555559e9ff6 "jetpack_strength", 0x5555559ea007 "shotgun_strength", 0x5555559ea018 "explosion_strength", 0x5555559ea02b "hammer_strength", 0x5555559ea03b "hook_duration", 0x5555559ea049 "hammer_fire_delay", 0x5555559ea05b "gun_fire_delay", 0x5555559ea06a "shotgun_fire_delay", 0x5555559ea07d "grenade_fire_delay", 0x5555559ea090 "laser_fire_delay", 0x5555559ea0a1 "ninja_fire_delay", 0x5555559ea0b2 "hammer_hit_fire_delay"}, m_GroundControlSpeed = {m_Value = 32767}, m_GroundControlAccel = {m_Value = 0}, m_GroundFriction = {m_Value = 0}, m_GroundJumpImpulse = {m_Value = 1151303680}, m_AirJumpImpulse = {m_Value = 1160581120}, m_AirControlSpeed = {m_Value = -1149239296}, m_AirControlAccel = {m_Value = 0}, m_AirFriction = {m_Value = 1151303680}, m_HookLength = {m_Value = 1160581120}, m_HookFireSpeed = {m_Value = -1082130432}, m_HookDragAccel = {m_Value = -1130364928}, m_HookDragSpeed = {m_Value = 0}, m_Gravity = {m_Value = 0}, m_VelrampStart = {m_Value = 19}, m_VelrampRange = {m_Value = 0}, m_VelrampCurvature = {m_Value = -1}, m_GunCurvature = {m_Value = 0}, m_GunSpeed = {m_Value = 0}, m_GunLifetime = {m_Value = 0}, m_ShotgunCurvature = {m_Value = 0}, m_ShotgunSpeed = {m_Value = 0}, m_ShotgunSpeeddiff = {m_Value = 0}, m_ShotgunLifetime = {m_Value = 0}, m_GrenadeCurvature = {m_Value = -26800}, m_GrenadeSpeed = {m_Value = 32767}, m_GrenadeLifetime = {m_Value = -26800}, m_LaserReach = {m_Value = 32767}, m_LaserBounceDelay = {m_Value = 0}, m_LaserBounceNum = {m_Value = 0}, m_LaserBounceCost = {m_Value = 0}, m_LaserDamage = {m_Value = 0}, m_PlayerCollision = {m_Value = -1}, m_PlayerHooking = {m_Value = 0}, m_JetpackStrength = {m_Value = 1}, m_ShotgunStrength = {m_Value = 0}, m_ExplosionStrength = {m_Value = -1}, m_HammerStrength = {m_Value = 0}, m_HookDuration = {m_Value = 1}, m_HammerFireDelay = {m_Value = 0}, m_GunFireDelay = {m_Value = -1}, m_ShotgunFireDelay = {m_Value = 0}, m_GrenadeFireDelay = {m_Value = 0}, m_LaserFireDelay = {m_Value = 0}, m_NinjaFireDelay = {m_Value = -1}, m_HammerHitFireDelay = {m_Value = 0}}, m_pTeams = 0x0, m_MoveRestrictions = -1}, m_PrevPredicted = {m_pWorld = 0x0, m_pCollision = 0xffffffff, m_pTeleOuts = 0x0, m_Pos = {{x = 0, u = 0}, {y = 0, v = 0}}, m_Vel = {{x = 0, u = 0}, {y = 0, v = 0}}, m_HookPos = {{x = 0, u = 0}, {y = 0, v = 0}}, m_HookDir = {{x = 0, u = 0}, {y = 2.80259693e-45, v = 2.80259693e-45}}, m_HookTeleBase = {{x = 0, u = 0}, {y = 1.52881662e-42, v = 1.52881662e-42}}, m_HookTick = 0, m_HookState = -111, m_HookedPlayer = -230, m_AttachedPlayers = {_M_t = {_M_impl = {<std::allocator<std::_Rb_tree_node<int> >> = {<__gnu_cxx::new_allocator<std::_Rb_tree_node<int> >> = {<No data fields>}, <No data fields>}, <std::_Rb_tree_key_compare<std::less<int> >> = {_M_key_compare = {<std::binary_function<int, int, bool>> = {<No data fields>}, <No data fields>}}, <std::_Rb_tree_header> = {_M_header = {_M_color = std::_S_red, _M_parent = 0x0, _M_left = 0x3b00000000, _M_right = 0xffff9800}, _M_node_count = 0}, <No data fields>}}}, m_ActiveWeapon = 1, m_aWeapons = {{m_AmmoRegenStart = 0, m_Ammo = 0, m_Ammocost = 0, m_Got = 209}, {m_AmmoRegenStart = 1156711, m_Ammo = 1, m_Ammocost = 1000, m_Got = 200}, {m_AmmoRegenStart = 50, m_Ammo = 1320, m_Ammocost = 1200, m_Got = 244}, {m_AmmoRegenStart = 150, m_Ammo = 95, m_Ammocost = 38000, m_Got = 64}, {m_AmmoRegenStart = 300, m_Ammo = 1500, m_Ammocost = 50, m_Got = 216}, {m_AmmoRegenStart = 200000, m_Ammo = 140, m_Ammocost = 0, m_Got = 224}}, m_Ninja = {m_ActivationDir = {{x = 2.80259693e-43, u = 2.80259693e-43}, {y = 0, v = 0}}, m_ActivationTick = 50000, m_CurrentMoveTime = 0, m_OldVelAmount = 20}, m_NewHook = 188, m_Jumped = 100000, m_JumpedTotal = 200, m_Jumps = 80000, m_Direction = 15000, m_Angle = 100000, m_Input = {m_Direction = 0, m_TargetX = 500, m_TargetY = 100, m_Jump = 100, m_Fire = 0, m_Hook = 1000, m_PlayerFlags = 600, m_WantedWeapon = 100, m_NextWeapon = 125, m_PrevWeapon = 12500}, m_TriggeredEvents = 12500, m_Id = 50000, m_pReset = 80, m_LastVel = {{x = 1.12103877e-40, u = 1.12103877e-40}, {y = 1.12103877e-40, v = 1.12103877e-40}}, m_Colliding = 32000, m_LeftWall = 208, m_Solo = 42, m_Jetpack = 127, m_NoCollision = 235, m_EndlessHook = 255, m_EndlessJump = 127, m_NoHammerHit = false, m_NoGrenadeHit = false, m_NoLaserHit = false, m_NoShotgunHit = false, m_NoHookHit = false, m_Super = false, m_HasTelegunGun = false, m_HasTelegunGrenade = false, m_HasTelegunLaser = false, m_FreezeTick = -343988384, m_FreezeEnd = 32767, m_IsInFreeze = 96, m_DeepFrozen = 10, m_LiveFrozen = 122, m_Tuning = {static ms_apNames = {0x5555559e9dec "ground_control_speed", 0x5555559e9e01 "ground_control_accel", 0x5555559e9e16 "ground_friction", 0x5555559e9e26 "ground_jump_impulse", 0x5555559e9e3a "air_jump_impulse", 0x5555559e9e4b "air_control_speed", 0x5555559e9e5d "air_control_accel", 0x5555559e9e6f "air_friction", 0x5555559e9e7c "hook_length", 0x5555559e9e88 "hook_fire_speed", 0x5555559e9e98 "hook_drag_accel", 0x5555559e9ea8 "hook_drag_speed", 0x5555559e9eb8 "gravity", 0x5555559e9ec0 "velramp_start", 0x5555559e9ece "velramp_range", 0x5555559e9edc "velramp_curvature", 0x5555559e9eee "gun_curvature", 0x5555559e9efc "gun_speed", 0x5555559e9f06 "gun_lifetime", 0x5555559e9f13 "shotgun_curvature", 0x5555559e9f25 "shotgun_speed", 0x5555559e9f33 "shotgun_speeddiff", 0x5555559e9f45 "shotgun_lifetime", 0x5555559e9f56 "grenade_curvature", 0x5555559e9f68 "grenade_speed", 0x5555559e9f76 "grenade_lifetime", 0x5555559e9f87 "laser_reach", 0x5555559e9f93 "laser_bounce_delay", 0x5555559e9fa6 "laser_bounce_num", 0x5555559e9fb7 "laser_bounce_cost", 0x5555559e9fc9 "laser_damage", 0x5555559e9fd6 "player_collision", 0x5555559e9fe7 "player_hooking", 0x5555559e9ff6 "jetpack_strength", 0x5555559ea007 "shotgun_strength", 0x5555559ea018 "explosion_strength", 0x5555559ea02b "hammer_strength", 0x5555559ea03b "hook_duration", 0x5555559ea049 "hammer_fire_delay", 0x5555559ea05b "gun_fire_delay", 0x5555559ea06a "shotgun_fire_delay", 0x5555559ea07d "grenade_fire_delay", 0x5555559ea090 "laser_fire_delay", 0x5555559ea0a1 "ninja_fire_delay", 0x5555559ea0b2 "hammer_hit_fire_delay"}, m_GroundControlSpeed = {m_Value = 32767}, m_GroundControlAccel = {m_Value = 0}, m_GroundFriction = {m_Value = 0}, m_GroundJumpImpulse = {m_Value = 1151303680}, m_AirJumpImpulse = {m_Value = 1160581120}, m_AirControlSpeed = {m_Value = -1149239296}, m_AirControlAccel = {m_Value = 0}, m_AirFriction = {m_Value = 1151303680}, m_HookLength = {m_Value = 1160581120}, m_HookFireSpeed = {m_Value = -1082130432}, m_HookDragAccel = {m_Value = -1130364928}, m_HookDragSpeed = {m_Value = 0}, m_Gravity = {m_Value = 0}, m_VelrampStart = {m_Value = 19}, m_VelrampRange = {m_Value = 0}, m_VelrampCurvature = {m_Value = -1}, m_GunCurvature = {m_Value = 0}, m_GunSpeed = {m_Value = 0}, m_GunLifetime = {m_Value = 0}, m_ShotgunCurvature = {m_Value = 0}, m_ShotgunSpeed = {m_Value = 5}, m_ShotgunSpeeddiff = {m_Value = 0}, m_ShotgunLifetime = {m_Value = 0}, m_GrenadeCurvature = {m_Value = -26240}, m_GrenadeSpeed = {m_Value = 32767}, m_GrenadeLifetime = {m_Value = -26240}, m_LaserReach = {m_Value = 32767}, m_LaserBounceDelay = {m_Value = 0}, m_LaserBounceNum = {m_Value = 0}, m_LaserBounceCost = {m_Value = 0}, m_LaserDamage = {m_Value = 0}, m_PlayerCollision = {m_Value = -1}, m_PlayerHooking = {m_Value = 0}, m_JetpackStrength = {m_Value = 1}, m_ShotgunStrength = {m_Value = 0}, m_ExplosionStrength = {m_Value = -1}, m_HammerStrength = {m_Value = 0}, m_HookDuration = {m_Value = 1}, m_HammerFireDelay = {m_Value = 0}, m_GunFireDelay = {m_Value = -1}, m_ShotgunFireDelay = {m_Value = 0}, m_GrenadeFireDelay = {m_Value = 0}, m_LaserFireDelay = {m_Value = 0}, m_NinjaFireDelay = {m_Value = -1}, m_HammerHitFireDelay = {m_Value = 0}}, m_pTeams = 0x0, m_MoveRestrictions = -1}, m_SkinInfo = {m_OriginalRenderSkin = {m_Body = {m_Id = 0}, m_BodyOutline = {m_Id = 0}, m_Feet = {m_Id = -1}, m_FeetOutline = {m_Id = 0}, m_Hands = {m_Id = 0}, m_HandsOutline = {m_Id = 0}, m_Eyes = {{m_Id = 0}, {m_Id = 0}, {m_Id = 0}, {m_Id = 0}, {m_Id = -256}, {m_Id = 0}}}, m_ColorableRenderSkin = {m_Body = {m_Id = 0}, m_BodyOutline = {m_Id = 2}, m_Feet = {m_Id = 0}, m_FeetOutline = {m_Id = 1091}, m_Hands = {m_Id = 0}, m_HandsOutline = {m_Id = -111}, m_Eyes = {{m_Id = -230}, {m_Id = 0}, {m_Id = 0}, {m_Id = 0}, {m_Id = 0}, {m_Id = 0}}}, m_SkinMetrics = {m_Body = {m_Width = {m_Value = 0}, m_Height = {m_Value = 0}, m_OffsetX = {m_Value = 0}, m_OffsetY = {m_Value = 59}, m_MaxWidth = {m_Value = 0}, m_MaxHeight = {m_Value = 0}}, m_Feet = {m_Width = {m_Value = 0}, m_Height = {m_Value = 0}, m_OffsetX = {m_Value = 1}, m_OffsetY = {m_Value = 0}, m_MaxWidth = {m_Value = 0}, m_MaxHeight = {m_Value = 0}}}, m_CustomColoredSkin = 209, m_BloodColor = {<color4_base<ColorRGBA>> = {{x = 1.62089735e-39, r = 1.62089735e-39, h = 1.62089735e-39}, {y = 1.40129846e-45, g = 1.40129846e-45, s = 1.40129846e-45}, {z = 1.40129846e-42, b = 1.40129846e-42, l = 1.40129846e-42, v = 1.40129846e-42}, {w = 2.80259693e-43, a = 2.80259693e-43}}, <No data fields>}, m_ColorBody = {<color4_base<ColorRGBA>> = {{x = 7.00649232e-44, r = 7.00649232e-44, h = 7.00649232e-44}, {y = 1.84971397e-42, g = 1.84971397e-42, s = 1.84971397e-42}, {z = 1.68155816e-42, b = 1.68155816e-42, l = 1.68155816e-42, v = 1.68155816e-42}, {w = 7.00649232e-43, a = 7.00649232e-43}}, <No data fields>}, m_ColorFeet = {<color4_base<ColorRGBA>> = {{x = 2.1019477e-43, r = 2.1019477e-43, h = 2.1019477e-43}, {y = 1.33123354e-43, g = 1.33123354e-43, s = 1.33123354e-43}, {z = 5.32493416e-41, b = 5.32493416e-41, l = 5.32493416e-41, v = 5.32493416e-41}, {w = 1.12103877e-41, a = 1.12103877e-41}}, <No data fields>}, m_Size = 4.20389539e-43, m_GotAirJump = 1500, m_ShineDecoration = 50}, m_RenderInfo = {m_OriginalRenderSkin = {m_Body = {m_Id = 55000}, m_BodyOutline = {m_Id = 200000}, m_Feet = {m_Id = 140}, m_FeetOutline = {m_Id = 0}, m_Hands = {m_Id = 140000}, m_HandsOutline = {m_Id = 200}, m_Eyes = {{m_Id = 0}, {m_Id = 50000}, {m_Id = 0}, {m_Id = 20}, {m_Id = 700}, {m_Id = 100000}}}, m_ColorableRenderSkin = {m_Body = {m_Id = 200}, m_BodyOutline = {m_Id = 80000}, m_Feet = {m_Id = 15000}, m_FeetOutline = {m_Id = 100000}, m_Hands = {m_Id = 0}, m_HandsOutline = {m_Id = 500}, m_Eyes = {{m_Id = 100}, {m_Id = 100}, {m_Id = 0}, {m_Id = 1000}, {m_Id = 600}, {m_Id = 100}}}, m_SkinMetrics = {m_Body = {m_Width = {m_Value = 125}, m_Height = {m_Value = 12500}, m_OffsetX = {m_Value = 12500}, m_OffsetY = {m_Value = 50000}, m_MaxWidth = {m_Value = 50000}, m_MaxHeight = {m_Value = 80000}}, m_Feet = {m_Width = {m_Value = 80000}, m_Height = {m_Value = 32000}, m_OffsetX = {m_Value = -343987504}, m_OffsetY = {m_Value = 32767}, m_MaxWidth = {m_Value = 0}, m_MaxHeight = {m_Value = 384}}}, m_CustomColoredSkin = 102, m_BloodColor = {<color4_base<ColorRGBA>> = {{x = 4.09039022e-42, r = 4.09039022e-42, h = 4.09039022e-42}, {y = 4.09179152e-42, g = 4.09179152e-42, s = 4.09179152e-42}, {z = 4.09319281e-42, b = 4.09319281e-42, l = 4.09319281e-42, v = 4.09319281e-42}, {w = 4.09459411e-42, a = 4.09459411e-42}}, <No data fields>}, m_ColorBody = {<color4_base<ColorRGBA>> = {{x = 4.09599541e-42, r = 4.09599541e-42, h = 4.09599541e-42}, {y = 4.09739671e-42, g = 4.09739671e-42, s = 4.09739671e-42}, {z = 4.09879801e-42, b = 4.09879801e-42, l = 4.09879801e-42, v = 4.09879801e-42}, {w = 4.10019931e-42, a = 4.10019931e-42}}, <No data fields>}, m_ColorFeet = {<color4_base<ColorRGBA>> = {{x = 4.10160061e-42, r = 4.10160061e-42, h = 4.10160061e-42}, {y = 4.1030019e-42, g = 4.1030019e-42, s = 4.1030019e-42}, {z = 4.1044032e-42, b = 4.1044032e-42, l = 4.1044032e-42, v = 4.1044032e-42}, {w = 4.1058045e-42, a = 4.1058045e-42}}, <No data fields>}, m_Size = 4.1072058e-42, m_GotAirJump = 2932, m_ShineDecoration = 2933}, m_Angle = 4.11140969e-42, m_Active = 119, m_ChatIgnore = 11, m_EmoticonIgnore = false, m_Friend = false, m_Foe = 120, m_AuthLevel = 2937, m_Afk = 122, m_Paused = 11, m_Spec = false, m_SwitchStates = {false, 123, 11, false, false, 124, 11, false, false, 125, 11, false, false, 63, false, false, false, 64, false, false, false, 17, false, false, false, 17, false, false, false, 96, false, false, false, 96, false, false, false, 30, false, false, false, 17, false, false, false, 18, false, false, false, 8, false, false, false, 64, false, false, false, 32, false, false, false, true, false, false, false, 77, 169, 64, 63, 248, 26, 24, 63, 81, 89, 145, 62, false, false, 128, 63, 108, 173, 38, 63, 58, 105, 24, 63, 13, 222, 46, 63, false, false, 128, 63, false, false, 128, 63, false, false, 128, 63, false, false, 128, 63, false, false, 128, 63, false, false, 128, 66, true, false, false, false, false, false, false, false, 102, 11, false, false, 103, 11, false, false, 104, 11, false, false, 105, 11, false, false, 106, 11, false, false, 107, 11, false, false, 108, 11, false, false, 109, 11, false, false, 110, 11, false, false, 111, 11, false, false, 112, 11, false, false, 113, 11, false, false, 114, 11, false, false, 115, 11, false, false, 116, 11, false, false, 117, 11, false, false, 118, 11, false, false, 119, 11, false, false, 120, 11, false...}, m_Snapped = {<CNetObj_CharacterCore> = {m_Tick = 8, m_X = 64, m_Y = 32, m_VelX = 1, m_VelY = 1061202253, m_Angle = 1058544376, m_Direction = 1049712977, m_Jumped = 1065353216, m_HookedPlayer = 1059499372, m_HookState = 1058564410, m_HookTick = 1060036109, m_HookX = 1065353216, m_HookY = 1065353216, m_HookDx = 1065353216, m_HookDy = 1065353216}, m_PlayerFlags = 1065353216, m_Health = 1115684864, m_Armor = 1, m_AmmoCount = 0, m_Weapon = 0, m_Emote = 1, m_AttackTick = 1699636480}, m_Evolved = {<CNetObj_CharacterCore> = {m_Tick = 0, m_X = 0, m_Y = 0, m_VelX = 0, m_VelY = 0, m_Angle = 0, m_Direction = 0, m_Jumped = 0, m_HookedPlayer = 0, m_HookState = 0, m_HookTick = 0, m_HookX = 0, m_HookY = 0, m_HookDx = 0, m_HookDy = 0}, m_PlayerFlags = 0, m_Health = 0, m_Armor = 0, m_AmmoCount = 0, m_Weapon = 0, m_Emote = 0, m_AttackTick = 0}, m_RenderCur = {<CNetObj_CharacterCore> = {m_Tick = 0, m_X = 0, m_Y = 0, m_VelX = 0, m_VelY = 0, m_Angle = 0, m_Direction = 0, m_Jumped = 0, m_HookedPlayer = 0, m_HookState = 0, m_HookTick = 0, m_HookX = 0, m_HookY = 0, m_HookDx = 0, m_HookDy = 0}, m_PlayerFlags = 0, m_Health = 0, m_Armor = 0, m_AmmoCount = 0, m_Weapon = 0, m_Emote = 0, m_AttackTick = 0}, m_RenderPrev = {<CNetObj_CharacterCore> = {m_Tick = 0, m_X = 0, m_Y = 0, m_VelX = 0, m_VelY = 0, m_Angle = 0, m_Direction = 0, m_Jumped = 0, m_HookedPlayer = 0, m_HookState = 0, m_HookTick = 0, m_HookX = 0, m_HookY = 0, m_HookDx = 0, m_HookDy = 0}, m_PlayerFlags = 0, m_Health = 0, m_Armor = 0, m_AmmoCount = 0, m_Weapon = 0, m_Emote = 0, m_AttackTick = 0}, m_RenderPos = {{x = 1.62072219e-39, u = 1.62072219e-39}, {y = 1.78805684e-42, v = 1.78805684e-42}}, m_IsPredicted = 209, m_IsPredictedLocal = 10, m_SmoothStart = {4294967295, 1091}, m_SmoothLen = {-4294967296, 81604378624}, m_PredPos = {{{x = 1.78805684e-42, u = 1.78805684e-42}, {y = 3.88019545e-42, v = 3.88019545e-42}}, {{x = -nan(0x7fff00), u = -nan(0x7fff00)}, {y = -nan(0x7ffffb), v = -nan(0x7ffffb)}}, {{x = 1.40129846e-45, u = 1.40129846e-45}, {y = 0, v = 0}}, {{x = 0, u = 0}, {y = 0, v = 0}}, {{x = 7.00649232e-45, u = 7.00649232e-45}, {y = 7.00649232e-45, v = 7.00649232e-45}}, {{x = 1.61979873e-39, u = 1.61979873e-39}, {y = 1.62072219e-39, v = 1.62072219e-39}}, {{x = 1.78805684e-42, u = 1.78805684e-42}, {y = 3.88019545e-42, v = 3.88019545e-42}}, {{x = -nan(0x7fffff), u = -nan(0x7fffff)}, {y = 0, v = 0}}, {{x = 1.52881662e-42, u = 1.52881662e-42}, {y = 0, v = 0}}, {{x = 0, u = 0}, {y = -nan(0x7fffff), v = -nan(0x7fffff)}}, {{x = 0, u = 0}, {y = 2.66246708e-44, v = 2.66246708e-44}}, {{x = 1.78805684e-42, u = 1.78805684e-42}, {y = 3.88019545e-42, v = 3.88019545e-42}}, {{x = -nan(0x7fff00), u = -nan(0x7fff00)}, {y = -nan(0x7ffffb), v = -nan(0x7ffffb)}}, {{x = 1.40129846e-45, u = 1.40129846e-45}, {y = 0, v = 0}}, {{x = 0, u = 0}, {y = 0, v = 0}}, {{x = 7.00649232e-45, u = 7.00649232e-45}, {y = 7.00649232e-45, v = 7.00649232e-45}}, {{x = 1.61979873e-39, u = 1.61979873e-39}, {y = 1.62072219e-39, v = 1.62072219e-39}}, {{x = 1.78805684e-42, u = 1.78805684e-42}, {y = 3.88019545e-42, v = 3.88019545e-42}}, {{x = -nan(0x7fffff), u = -nan(0x7fffff)}, {y = 0, v = 0}}, {{x = 1.52881662e-42, u = 1.52881662e-42}, {y = 0, v = 0}}, {{x = 0, u = 0}, {y = -nan(0x7fffff), v = -nan(0x7fffff)}}, {{x = 0, u = 0}, {y = 2.66246708e-44, v = 2.66246708e-44}}, {{x = 1.78805684e-42, u = 1.78805684e-42}, {y = 3.88019545e-42, v = 3.88019545e-42}}, {{x = -nan(0x7fff00), u = -nan(0x7fff00)}, {y = -nan(0x7ffffb), v = -nan(0x7ffffb)}}, {{x = 1.40129846e-45, u = 1.40129846e-45}, {y = 0, v = 0}}, {{x = 0, u = 0}, {y = 0, v = 0}}, {{x = 7.00649232e-45, u = 7.00649232e-45}, {y = 7.00649232e-45, v = 7.00649232e-45}}, {{x = 1.61979873e-39, u = 1.61979873e-39}, {y = 1.62071938e-39, v = 1.62071938e-39}}, {{x = 1.78805684e-42, u = 1.78805684e-42}, {y = 3.88019545e-42, v = 3.88019545e-42}}, {{x = -nan(0x7fffff), u = -nan(0x7fffff)}, {y = 0, v = 0}}, {{x = 1.52881662e-42, u = 1.52881662e-42}, {y = 0, v = 0}}, {{x = 0, u = 0}, {y = -nan(0x7fffff), v = -nan(0x7fffff)}}, {{x = 0, u = 0}, {y = 2.66246708e-44, v = 2.66246708e-44}}, {{x = 1.78805684e-42, u = 1.78805684e-42}, {y = 3.88019545e-42, v = 3.88019545e-42}}, {{x = -nan(0x7fff00), u = -nan(0x7fff00)}, {y = -nan(0x7ffffb), v = -nan(0x7ffffb)}}, {{x = 1.40129846e-45, u = 1.40129846e-45}, {y = 0, v = 0}}, {{x = 0, u = 0}, {y = 0, v = 0}}, {{x = 7.00649232e-45, u = 7.00649232e-45}, {y = 7.00649232e-45, v = 7.00649232e-45}}, {{x = 1.61979873e-39, u = 1.61979873e-39}, {y = 1276, v = 1276}}, {{x = 2769, u = 2769}, {y = 1.40129846e-45, v = 1.40129846e-45}}, {{x = 0, u = 0}, {y = 0, v = 0}}, {{x = 0, u = 0}, {y = 0, v = 0}}, {{x = 0, u = 0}, {y = 0, v = 0}}, {{x = 0, u = 0}, {y = 0, v = 0}}, {{x = 1276, u = 1276}, {y = 2769, v = 2769}} <repeats 156 times>}, m_PredTick = {1151303680, 1160581120, 1151303680, 1160581120, 1151303680, 1160581120, 1151303680, 1160581120, 1151303680, 1160581120, 1151303680, 1160581120, 1151303680, 1160581120, 1151303680, 1160581120, 1151303680, 1160581120, 1151303680, 1160581120, 1151303680, 1160581120, 1151303680, 1160581120, 1151303680, 1160581120, 1151303680, 1160581120, 1151303680, 1160581120, 1151303680, 1160581120, 1151303680, 1160581120, 1151303680, 1160581120, 1151303680, 1160581120, 1151303680, 1160581120, 1151303680, 1160581120, 1151303680, 1160581120, 1151303680, 1160581120, 1151303680, 1160581120, 1151303680, 1160581120, 1151303680, 1160581120, 1151303680, 1160581120, 1151303680, 1160581120, 1151303680, 1160581120, 1151303680, 1160581120, 1151303680, 1160581120, 1151303680, 1160581120, 1151303680, 1160581120, 1151303680, 1160581120, 1151303680, 1160581120, 1151303680, 1160581120, 1151303680, 1160581120, 1151303680, 1160581120, 1151303680, 1160581120, 1151303680, 1160581120, 1151303680, 1160581120, 1151303680, 1160581120, 1151303680, 1160581120, 1151303680, 1160581120, 1156400, 1156401, 1156402, 1156403, 1156404, 1156405, 1156406, 1156407, 1156408, 1156409, 1156410, 1156411, 1156412, 1156413, 1156414, 1156415, 1156416, 1156417, 1156418, 1156419, 1156420, 1156421, 1156422, 1156423, 1156424, 1156425, 1156426, 1156427, 1156428, 1156429, 1156430, 1156431, 1156432, 1156433, 1156434, 1156435, 1156436, 1156437, 1156438, 1156439, 1156440, 1156441, 1156442, 1156443, 1156444, 1156445, 1156446, 1156447, 1156448, 1156449, 1156450, 1156451, 1156452, 1156453, 1156454, 1156455, 1156456, 1156457, 1156458, 1156459, 1156460, 1156461, 1156462, 1156463, 1156464, 1156465, 1156466, 1156467, 1156468, 1156469, 1156470, 1156471, 1156472, 1156473, 1156474, 1156475, 1156476, 1156477, 1156478, 1156479, 1156480, 1156481, 1156482, 1156483, 1156484, 1156485, 1156486, 1156487, 1156488, 1156489, 1156490, 1156491, 1156492, 1156493, 1156494, 1156495, 1156496, 1156497, 1156498, 1156499, 1156500, 1156501, 1156502, 1156503, 1156504, 1156505, 1156506, 1156507, 1156508, 1156509, 1156510, 1156511}, m_SpecCharPresent = 160, m_SpecChar = {{x = 1.62061989e-39, u = 1.62061989e-39}, {y = 1.62062129e-39, v = 1.62062129e-39}}}
#14 0x00005555557e981d in CPlayers::RenderHookCollLine (this=0x7fffeb79a748, pPrevChar=0x7fffffffbd00, pPlayerChar=0x7fffffffbca0, ClientID=-2, Intra=0.36924991) at /home/ant/ddnet/src/game/client/components/players.cpp:216
        TeleNr = 0
        FinishPos = {{x = 1221.93494, u = 1221.93494}, {y = 2458.29639, v = 2458.29639}}
        NewPos = {{x = 1221.93494, u = 1221.93494}, {y = 2458.29639, v = 2458.29639}}
        Hit = 0
        ExDirection = {{x = -0.154127821, u = -0.154127821}, {y = 0.988050938, v = 0.988050938}}
        InitPos = {{x = 1240.73853, u = 1240.73853}, {y = 2337.75415, v = 2337.75415}}
        HookCollColor = {<color4_base<ColorRGBA>> = {{x = 0.996078432, r = 0.996078432, h = 0.996078432}, {y = 0, g = 0, s = 0}, {z = 0, b = 0, l = 0, v = 0}, {w = 1, a = 1}}, <No data fields>}
        OldPos = {{x = 1234.26514, u = 1234.26514}, {y = 2379.2522, v = 2379.2522}}
        DoBreak = false
        AlwaysRenderHookColl = true
        RenderHookCollPlayer = false
        RenderHookCollVideo = true
        Prev = {<CNetObj_CharacterCore> = {m_Tick = 415760, m_X = 1240, m_Y = 2330, m_VelX = 281, m_VelY = 0, m_Angle = 441, m_Direction = 0, m_Jumped = 0, m_HookedPlayer = -1, m_HookState = 0, m_HookTick = 0, m_HookX = 1239, m_HookY = 2321, m_HookDx = 0, m_HookDy = 0}, m_PlayerFlags = 0, m_Health = 0, m_Armor = 0, m_AmmoCount = 0, m_Weapon = 0, m_Emote = 0, m_AttackTick = 415734}
        Player = {<CNetObj_CharacterCore> = {m_Tick = 415762, m_X = 1242, m_Y = 2351, m_VelX = 254, m_VelY = 0, m_Angle = 443, m_Direction = 0, m_Jumped = 0, m_HookedPlayer = -1, m_HookState = 0, m_HookTick = 0, m_HookX = 1241, m_HookY = 2340, m_HookDx = 0, m_HookDy = 0}, m_PlayerFlags = 0, m_Health = 0, m_Armor = 0, m_AmmoCount = 0, m_Weapon = 0, m_Emote = 0, m_AttackTick = 1156559}
        Local = false
        OtherTeam = false
        Alpha = 0.379999995
        IntraTick = 0.36924991
        Angle = 1.725541
        Direction = {{x = -0.154127821, u = -0.154127821}, {y = 0.988050938, v = 0.988050938}}
        Position = {{x = 1240.73853, u = 1240.73853}, {y = 2337.75415, v = 2337.75415}}
#15 0x0000555555731e03 in CGhost::OnRender (this=0x7fffeb79f5b0) at /home/ant/ddnet/src/game/client/components/ghost.cpp:374
        CurPos = 54
        PrevPos = 53
        TickDiff = 2
        IntraTick = 0.36924991
        RenderInfo = 0x7fffeb79f5d0
        GhostTick = 415761
        Player = {<CNetObj_CharacterCore> = {m_Tick = 415762, m_X = 1242, m_Y = 2351, m_VelX = 254, m_VelY = 0, m_Angle = 443, m_Direction = 0, m_Jumped = 0, m_HookedPlayer = -1, m_HookState = 0, m_HookTick = 0, m_HookX = 1241, m_HookY = 2340, m_HookDx = 0, m_HookDy = 0}, m_PlayerFlags = 0, m_Health = 0, m_Armor = 0, m_AmmoCount = 0, m_Weapon = 0, m_Emote = 0, m_AttackTick = 1156559}
        Prev = {<CNetObj_CharacterCore> = {m_Tick = 415760, m_X = 1240, m_Y = 2330, m_VelX = 281, m_VelY = 0, m_Angle = 441, m_Direction = 0, m_Jumped = 0, m_HookedPlayer = -1, m_HookState = 0, m_HookTick = 0, m_HookX = 1239, m_HookY = 2321, m_HookDx = 0, m_HookDy = 0}, m_PlayerFlags = 0, m_Health = 0, m_Armor = 0, m_AmmoCount = 0, m_Weapon = 0, m_Emote = 0, m_AttackTick = 415734}
        GhostNinjaRenderInfo = {m_OriginalRenderSkin = {m_Body = {m_Id = -1}, m_BodyOutline = {m_Id = -1}, m_Feet = {m_Id = -1}, m_FeetOutline = {m_Id = -1}, m_Hands = {m_Id = -1}, m_HandsOutline = {m_Id = -1}, m_Eyes = {{m_Id = -1}, {m_Id = -1}, {m_Id = -1}, {m_Id = -1}, {m_Id = -1}, {m_Id = -1}}}, m_ColorableRenderSkin = {m_Body = {m_Id = -1}, m_BodyOutline = {m_Id = -1}, m_Feet = {m_Id = -1}, m_FeetOutline = {m_Id = -1}, m_Hands = {m_Id = -1}, m_HandsOutline = {m_Id = -1}, m_Eyes = {{m_Id = -1}, {m_Id = -1}, {m_Id = -1}, {m_Id = -1}, {m_Id = -1}, {m_Id = -1}}}, m_SkinMetrics = {m_Body = {m_Width = {m_Value = -2147483648}, m_Height = {m_Value = -2147483648}, m_OffsetX = {m_Value = 2147483647}, m_OffsetY = {m_Value = 2147483647}, m_MaxWidth = {m_Value = -2147483648}, m_MaxHeight = {m_Value = -2147483648}}, m_Feet = {m_Width = {m_Value = -2147483648}, m_Height = {m_Value = -2147483648}, m_OffsetX = {m_Value = 2147483647}, m_OffsetY = {m_Value = 2147483647}, m_MaxWidth = {m_Value = -2147483648}, m_MaxHeight = {m_Value = -2147483648}}}, m_CustomColoredSkin = 248, m_BloodColor = {<color4_base<ColorRGBA>> = {{x = 4.59163468e-41, r = 4.59163468e-41, h = 4.59163468e-41}, {y = -3.02677571e+26, g = -3.02677571e+26, s = -3.02677571e+26}, {z = 4.59163468e-41, b = 4.59163468e-41, l = 4.59163468e-41, v = 4.59163468e-41}, {w = -3.08316077e+26, a = -3.08316077e+26}}, <No data fields>}, m_ColorBody = {<color4_base<ColorRGBA>> = {{x = 1, r = 1, h = 1}, {y = 1, g = 1, s = 1}, {z = 1, b = 1, l = 1, v = 1}, {w = 1, a = 1}}, <No data fields>}, m_ColorFeet = {<color4_base<ColorRGBA>> = {{x = 1, r = 1, h = 1}, {y = 1, g = 1, s = 1}, {z = 1, b = 1, l = 1, v = 1}, {w = 1, a = 1}}, <No data fields>}, m_Size = 1, m_GotAirJump = 1, m_ShineDecoration = 0}
        Ghost = `@0x7fffeb79f5d0:` {m_RenderInfo = {m_OriginalRenderSkin = {m_Body = {m_Id = 2846}, m_BodyOutline = {m_Id = 2847}, m_Feet = {m_Id = 2848}, m_FeetOutline = {m_Id = 2849}, m_Hands = {m_Id = 2850}, m_HandsOutline = {m_Id = 2851}, m_Eyes = {{m_Id = 2852}, {m_Id = 2853}, {m_Id = 2854}, {m_Id = 2855}, {m_Id = 2856}, {m_Id = 2857}}}, m_ColorableRenderSkin = {m_Body = {m_Id = 2858}, m_BodyOutline = {m_Id = 2859}, m_Feet = {m_Id = 2860}, m_FeetOutline = {m_Id = 2861}, m_Hands = {m_Id = 2862}, m_HandsOutline = {m_Id = 2863}, m_Eyes = {{m_Id = 2864}, {m_Id = 2865}, {m_Id = 2866}, {m_Id = 2867}, {m_Id = 2868}, {m_Id = 2869}}}, m_SkinMetrics = {m_Body = {m_Width = {m_Value = 67}, m_Height = {m_Value = 69}, m_OffsetX = {m_Value = 15}, m_OffsetY = {m_Value = 12}, m_MaxWidth = {m_Value = 96}, m_MaxHeight = {m_Value = 96}}, m_Feet = {m_Width = {m_Value = 30}, m_Height = {m_Value = 18}, m_OffsetX = {m_Value = 18}, m_OffsetY = {m_Value = 8}, m_MaxWidth = {m_Value = 64}, m_MaxHeight = {m_Value = 32}}}, m_CustomColoredSkin = true, m_BloodColor = {<color4_base<ColorRGBA>> = {{x = 0.667352855, r = 0.667352855, h = 0.667352855}, {y = 0.470265955, g = 0.470265955, s = 0.470265955}, {z = 0.577485919, b = 0.577485919, l = 0.577485919, v = 0.577485919}, {w = 1, a = 1}}, <No data fields>}, m_ColorBody = {<color4_base<ColorRGBA>> = {{x = 0.958477497, r = 0.958477497, h = 0.958477497}, {y = 0.570934296, g = 0.570934296, s = 0.570934296}, {z = 0.725951612, b = 0.725951612, l = 0.725951612, v = 0.725951612}, {w = 1, a = 1}}, <No data fields>}, m_ColorFeet = {<color4_base<ColorRGBA>> = {{x = 1, r = 1, h = 1}, {y = 1, g = 1, s = 1}, {z = 1, b = 1, l = 1, v = 1}, {w = 1, a = 1}}, <No data fields>}, m_Size = 64, m_GotAirJump = 1, m_ShineDecoration = 0}, m_Skin = {m_Skin0 = -185079314, m_Skin1 = -487591808, m_Skin2 = -2139062144, m_Skin3 = -2139062144, m_Skin4 = -2139062144, m_Skin5 = -2139062272, m_UseCustomColor = 1, m_ColorBody = 15651463, m_ColorFeet = 16777215}, m_Path = {m_ChunkSize = 1500, m_NumItems = 74676, m_lChunks = {<std::_Vector_base<CGhostCharacter*, std::allocator<CGhostCharacter*> >> = {_M_impl = {<std::allocator<CGhostCharacter*>> = {<__gnu_cxx::new_allocator<CGhostCharacter*>> = {<No data fields>}, <No data fields>}, <std::_Vector_base<CGhostCharacter*, std::allocator<CGhostCharacter*> >::_Vector_impl_data> = {_M_start = 0x555556de4110, _M_finish = 0x555556de42a0, _M_end_of_storage = 0x555556de42a0}, <No data fields>}}, <No data fields>}}, m_StartTick = 415652, m_aPlayer = "Yumiko\000\000\000\000\000\000\000\000\000", m_PlaybackPos = 54}
        __for_range = `@0x7fffeb79f5d0:` {{m_RenderInfo = {m_OriginalRenderSkin = {m_Body = {m_Id = 2846}, m_BodyOutline = {m_Id = 2847}, m_Feet = {m_Id = 2848}, m_FeetOutline = {m_Id = 2849}, m_Hands = {m_Id = 2850}, m_HandsOutline = {m_Id = 2851}, m_Eyes = {{m_Id = 2852}, {m_Id = 2853}, {m_Id = 2854}, {m_Id = 2855}, {m_Id = 2856}, {m_Id = 2857}}}, m_ColorableRenderSkin = {m_Body = {m_Id = 2858}, m_BodyOutline = {m_Id = 2859}, m_Feet = {m_Id = 2860}, m_FeetOutline = {m_Id = 2861}, m_Hands = {m_Id = 2862}, m_HandsOutline = {m_Id = 2863}, m_Eyes = {{m_Id = 2864}, {m_Id = 2865}, {m_Id = 2866}, {m_Id = 2867}, {m_Id = 2868}, {m_Id = 2869}}}, m_SkinMetrics = {m_Body = {m_Width = {m_Value = 67}, m_Height = {m_Value = 69}, m_OffsetX = {m_Value = 15}, m_OffsetY = {m_Value = 12}, m_MaxWidth = {m_Value = 96}, m_MaxHeight = {m_Value = 96}}, m_Feet = {m_Width = {m_Value = 30}, m_Height = {m_Value = 18}, m_OffsetX = {m_Value = 18}, m_OffsetY = {m_Value = 8}, m_MaxWidth = {m_Value = 64}, m_MaxHeight = {m_Value = 32}}}, m_CustomColoredSkin = true, m_BloodColor = {<color4_base<ColorRGBA>> = {{x = 0.667352855, r = 0.667352855, h = 0.667352855}, {y = 0.470265955, g = 0.470265955, s = 0.470265955}, {z = 0.577485919, b = 0.577485919, l = 0.577485919, v = 0.577485919}, {w = 1, a = 1}}, <No data fields>}, m_ColorBody = {<color4_base<ColorRGBA>> = {{x = 0.958477497, r = 0.958477497, h = 0.958477497}, {y = 0.570934296, g = 0.570934296, s = 0.570934296}, {z = 0.725951612, b = 0.725951612, l = 0.725951612, v = 0.725951612}, {w = 1, a = 1}}, <No data fields>}, m_ColorFeet = {<color4_base<ColorRGBA>> = {{x = 1, r = 1, h = 1}, {y = 1, g = 1, s = 1}, {z = 1, b = 1, l = 1, v = 1}, {w = 1, a = 1}}, <No data fields>}, m_Size = 64, m_GotAirJump = 1, m_ShineDecoration = 0}, m_Skin = {m_Skin0 = -185079314, m_Skin1 = -487591808, m_Skin2 = -2139062144, m_Skin3 = -2139062144, m_Skin4 = -2139062144, m_Skin5 = -2139062272, m_UseCustomColor = 1, m_ColorBody = 15651463, m_ColorFeet = 16777215}, m_Path = {m_ChunkSize = 1500, m_NumItems = 74676, m_lChunks = {<std::_Vector_base<CGhostCharacter*, std::allocator<CGhostCharacter*> >> = {_M_impl = {<std::allocator<CGhostCharacter*>> = {<__gnu_cxx::new_allocator<CGhostCharacter*>> = {<No data fields>}, <No data fields>}, <std::_Vector_base<CGhostCharacter*, std::allocator<CGhostCharacter*> >::_Vector_impl_data> = {_M_start = 0x555556de4110, _M_finish = 0x555556de42a0, _M_end_of_storage = 0x555556de42a0}, <No data fields>}}, <No data fields>}}, m_StartTick = 415652, m_aPlayer = "Yumiko\000\000\000\000\000\000\000\000\000", m_PlaybackPos = 54}, {m_RenderInfo = {m_OriginalRenderSkin = {m_Body = {m_Id = -1}, m_BodyOutline = {m_Id = -1}, m_Feet = {m_Id = -1}, m_FeetOutline = {m_Id = -1}, m_Hands = {m_Id = -1}, m_HandsOutline = {m_Id = -1}, m_Eyes = {{m_Id = -1}, {m_Id = -1}, {m_Id = -1}, {m_Id = -1}, {m_Id = -1}, {m_Id = -1}}}, m_ColorableRenderSkin = {m_Body = {m_Id = -1}, m_BodyOutline = {m_Id = -1}, m_Feet = {m_Id = -1}, m_FeetOutline = {m_Id = -1}, m_Hands = {m_Id = -1}, m_HandsOutline = {m_Id = -1}, m_Eyes = {{m_Id = -1}, {m_Id = -1}, {m_Id = -1}, {m_Id = -1}, {m_Id = -1}, {m_Id = -1}}}, m_SkinMetrics = {m_Body = {m_Width = {m_Value = -2147483648}, m_Height = {m_Value = -2147483648}, m_OffsetX = {m_Value = 2147483647}, m_OffsetY = {m_Value = 2147483647}, m_MaxWidth = {m_Value = -2147483648}, m_MaxHeight = {m_Value = -2147483648}}, m_Feet = {m_Width = {m_Value = -2147483648}, m_Height = {m_Value = -2147483648}, m_OffsetX = {m_Value = 2147483647}, m_OffsetY = {m_Value = 2147483647}, m_MaxWidth = {m_Value = -2147483648}, m_MaxHeight = {m_Value = -2147483648}}}, m_CustomColoredSkin = false, m_BloodColor = {<color4_base<ColorRGBA>> = {{x = 0, r = 0, h = 0}, {y = 0, g = 0, s = 0}, {z = 0, b = 0, l = 0, v = 0}, {w = 0, a = 0}}, <No data fields>}, m_ColorBody = {<color4_base<ColorRGBA>> = {{x = 1, r = 1, h = 1}, {y = 1, g = 1, s = 1}, {z = 1, b = 1, l = 1, v = 1}, {w = 1, a = 1}}, <No data fields>}, m_ColorFeet = {<color4_base<ColorRGBA>> = {{x = 1, r = 1, h = 1}, {y = 1, g = 1, s = 1}, {z = 1, b = 1, l = 1, v = 1}, {w = 1, a = 1}}, <No data fields>}, m_Size = 1, m_GotAirJump = 1, m_ShineDecoration = 0}, m_Skin = {m_Skin0 = 0, m_Skin1 = 0, m_Skin2 = 0, m_Skin3 = 0, m_Skin4 = 0, m_Skin5 = 0, m_UseCustomColor = 0, m_ColorBody = 0, m_ColorFeet = 0}, m_Path = {m_ChunkSize = 1500, m_NumItems = 0, m_lChunks = {<std::_Vector_base<CGhostCharacter*, std::allocator<CGhostCharacter*> >> = {_M_impl = {<std::allocator<CGhostCharacter*>> = {<__gnu_cxx::new_allocator<CGhostCharacter*>> = {<No data fields>}, <No data fields>}, <std::_Vector_base<CGhostCharacter*, std::allocator<CGhostCharacter*> >::_Vector_impl_data> = {_M_start = 0x0, _M_finish = 0x0, _M_end_of_storage = 0x0}, <No data fields>}}, <No data fields>}}, m_StartTick = -1, m_aPlayer = '\000' <repeats 15 times>, m_PlaybackPos = 0}, {m_RenderInfo = {m_OriginalRenderSkin = {m_Body = {m_Id = -1}, m_BodyOutline = {m_Id = -1}, m_Feet = {m_Id = -1}, m_FeetOutline = {m_Id = -1}, m_Hands = {m_Id = -1}, m_HandsOutline = {m_Id = -1}, m_Eyes = {{m_Id = -1}, {m_Id = -1}, {m_Id = -1}, {m_Id = -1}, {m_Id = -1}, {m_Id = -1}}}, m_ColorableRenderSkin = {m_Body = {m_Id = -1}, m_BodyOutline = {m_Id = -1}, m_Feet = {m_Id = -1}, m_FeetOutline = {m_Id = -1}, m_Hands = {m_Id = -1}, m_HandsOutline = {m_Id = -1}, m_Eyes = {{m_Id = -1}, {m_Id = -1}, {m_Id = -1}, {m_Id = -1}, {m_Id = -1}, {m_Id = -1}}}, m_SkinMetrics = {m_Body = {m_Width = {m_Value = -2147483648}, m_Height = {m_Value = -2147483648}, m_OffsetX = {m_Value = 2147483647}, m_OffsetY = {m_Value = 2147483647}, m_MaxWidth = {m_Value = -2147483648}, m_MaxHeight = {m_Value = -2147483648}}, m_Feet = {m_Width = {m_Value = -2147483648}, m_Height = {m_Value = -2147483648}, m_OffsetX = {m_Value = 2147483647}, m_OffsetY = {m_Value = 2147483647}, m_MaxWidth = {m_Value = -2147483648}, m_MaxHeight = {m_Value = -2147483648}}}, m_CustomColoredSkin = false, m_BloodColor = {<color4_base<ColorRGBA>> = {{x = 0, r = 0, h = 0}, {y = 0, g = 0, s = 0}, {z = 0, b = 0, l = 0, v = 0}, {w = 0, a = 0}}, <No data fields>}, m_ColorBody = {<color4_base<ColorRGBA>> = {{x = 1, r = 1, h = 1}, {y = 1, g = 1, s = 1}, {z = 1, b = 1, l = 1, v = 1}, {w = 1, a = 1}}, <No data fields>}, m_ColorFeet = {<color4_base<ColorRGBA>> = {{x = 1, r = 1, h = 1}, {y = 1, g = 1, s = 1}, {z = 1, b = 1, l = 1, v = 1}, {w = 1, a = 1}}, <No data fields>}, m_Size = 1, m_GotAirJump = 1, m_ShineDecoration = 0}, m_Skin = {m_Skin0 = 0, m_Skin1 = 0, m_Skin2 = 0, m_Skin3 = 0, m_Skin4 = 0, m_Skin5 = 0, m_UseCustomColor = 0, m_ColorBody = 0, m_ColorFeet = 0}, m_Path = {m_ChunkSize = 1500, m_NumItems = 0, m_lChunks = {<std::_Vector_base<CGhostCharacter*, std::allocator<CGhostCharacter*> >> = {_M_impl = {<std::allocator<CGhostCharacter*>> = {<__gnu_cxx::new_allocator<CGhostCharacter*>> = {<No data fields>}, <No data fields>}, <std::_Vector_base<CGhostCharacter*, std::allocator<CGhostCharacter*> >::_Vector_impl_data> = {_M_start = 0x0, _M_finish = 0x0, _M_end_of_storage = 0x0}, <No data fields>}}, <No data fields>}}, m_StartTick = -1, m_aPlayer = '\000' <repeats 15 times>, m_PlaybackPos = 0}, {m_RenderInfo = {m_OriginalRenderSkin = {m_Body = {m_Id = -1}, m_BodyOutline = {m_Id = -1}, m_Feet = {m_Id = -1}, m_FeetOutline = {m_Id = -1}, m_Hands = {m_Id = -1}, m_HandsOutline = {m_Id = -1}, m_Eyes = {{m_Id = -1}, {m_Id = -1}, {m_Id = -1}, {m_Id = -1}, {m_Id = -1}, {m_Id = -1}}}, m_ColorableRenderSkin = {m_Body = {m_Id = -1}, m_BodyOutline = {m_Id = -1}, m_Feet = {m_Id = -1}, m_FeetOutline = {m_Id = -1}, m_Hands = {m_Id = -1}, m_HandsOutline = {m_Id = -1}, m_Eyes = {{m_Id = -1}, {m_Id = -1}, {m_Id = -1}, {m_Id = -1}, {m_Id = -1}, {m_Id = -1}}}, m_SkinMetrics = {m_Body = {m_Width = {m_Value = -2147483648}, m_Height = {m_Value = -2147483648}, m_OffsetX = {m_Value = 2147483647}, m_OffsetY = {m_Value = 2147483647}, m_MaxWidth = {m_Value = -2147483648}, m_MaxHeight = {m_Value = -2147483648}}, m_Feet = {m_Width = {m_Value = -2147483648}, m_Height = {m_Value = -2147483648}, m_OffsetX = {m_Value = 2147483647}, m_OffsetY = {m_Value = 2147483647}, m_MaxWidth = {m_Value = -2147483648}, m_MaxHeight = {m_Value = -2147483648}}}, m_CustomColoredSkin = false, m_BloodColor = {<color4_base<ColorRGBA>> = {{x = 0, r = 0, h = 0}, {y = 0, g = 0, s = 0}, {z = 0, b = 0, l = 0, v = 0}, {w = 0, a = 0}}, <No data fields>}, m_ColorBody = {<color4_base<ColorRGBA>> = {{x = 1, r = 1, h = 1}, {y = 1, g = 1, s = 1}, {z = 1, b = 1, l = 1, v = 1}, {w = 1, a = 1}}, <No data fields>}, m_ColorFeet = {<color4_base<ColorRGBA>> = {{x = 1, r = 1, h = 1}, {y = 1, g = 1, s = 1}, {z = 1, b = 1, l = 1, v = 1}, {w = 1, a = 1}}, <No data fields>}, m_Size = 1, m_GotAirJump = 1, m_ShineDecoration = 0}, m_Skin = {m_Skin0 = 0, m_Skin1 = 0, m_Skin2 = 0, m_Skin3 = 0, m_Skin4 = 0, m_Skin5 = 0, m_UseCustomColor = 0, m_ColorBody = 0, m_ColorFeet = 0}, m_Path = {m_ChunkSize = 1500, m_NumItems = 0, m_lChunks = {<std::_Vector_base<CGhostCharacter*, std::allocator<CGhostCharacter*> >> = {_M_impl = {<std::allocator<CGhostCharacter*>> = {<__gnu_cxx::new_allocator<CGhostCharacter*>> = {<No data fields>}, <No data fields>}, <std::_Vector_base<CGhostCharacter*, std::allocator<CGhostCharacter*> >::_Vector_impl_data> = {_M_start = 0x0, _M_finish = 0x0, _M_end_of_storage = 0x0}, <No data fields>}}, <No data fields>}}, m_StartTick = -1, m_aPlayer = '\000' <repeats 15 times>, m_PlaybackPos = 0}, {m_RenderInfo = {m_OriginalRenderSkin = {m_Body = {m_Id = -1}, m_BodyOutline = {m_Id = -1}, m_Feet = {m_Id = -1}, m_FeetOutline = {m_Id = -1}, m_Hands = {m_Id = -1}, m_HandsOutline = {m_Id = -1}, m_Eyes = {{m_Id = -1}, {m_Id = -1}, {m_Id = -1}, {m_Id = -1}, {m_Id = -1}, {m_Id = -1}}}, m_ColorableRenderSkin = {m_Body = {m_Id = -1}, m_BodyOutline = {m_Id = -1}, m_Feet = {m_Id = -1}, m_FeetOutline = {m_Id = -1}, m_Hands = {m_Id = -1}, m_HandsOutline = {m_Id = -1}, m_Eyes = {{m_Id = -1}, {m_Id = -1}, {m_Id = -1}, {m_Id = -1}, {m_Id = -1}, {m_Id = -1}}}, m_SkinMetrics = {m_Body = {m_Width = {m_Value = -2147483648}, m_Height = {m_Value = -2147483648}, m_OffsetX = {m_Value = 2147483647}, m_OffsetY = {m_Value = 2147483647}, m_MaxWidth = {m_Value = -2147483648}, m_MaxHeight = {m_Value = -2147483648}}, m_Feet = {m_Width = {m_Value = -2147483648}, m_Height = {m_Value = -2147483648}, m_OffsetX = {m_Value = 2147483647}, m_OffsetY = {m_Value = 2147483647}, m_MaxWidth = {m_Value = -2147483648}, m_MaxHeight = {m_Value = -2147483648}}}, m_CustomColoredSkin = false, m_BloodColor = {<color4_base<ColorRGBA>> = {{x = 0, r = 0, h = 0}, {y = 0, g = 0, s = 0}, {z = 0, b = 0, l = 0, v = 0}, {w = 0, a = 0}}, <No data fields>}, m_ColorBody = {<color4_base<ColorRGBA>> = {{x = 1, r = 1, h = 1}, {y = 1, g = 1, s = 1}, {z = 1, b = 1, l = 1, v = 1}, {w = 1, a = 1}}, <No data fields>}, m_ColorFeet = {<color4_base<ColorRGBA>> = {{x = 1, r = 1, h = 1}, {y = 1, g = 1, s = 1}, {z = 1, b = 1, l = 1, v = 1}, {w = 1, a = 1}}, <No data fields>}, m_Size = 1, m_GotAirJump = 1, m_ShineDecoration = 0}, m_Skin = {m_Skin0 = 0, m_Skin1 = 0, m_Skin2 = 0, m_Skin3 = 0, m_Skin4 = 0, m_Skin5 = 0, m_UseCustomColor = 0, m_ColorBody = 0, m_ColorFeet = 0}, m_Path = {m_ChunkSize = 1500, m_NumItems = 0, m_lChunks = {<std::_Vector_base<CGhostCharacter*, std::allocator<CGhostCharacter*> >> = {_M_impl = {<std::allocator<CGhostCharacter*>> = {<__gnu_cxx::new_allocator<CGhostCharacter*>> = {<No data fields>}, <No data fields>}, <std::_Vector_base<CGhostCharacter*, std::allocator<CGhostCharacter*> >::_Vector_impl_data> = {_M_start = 0x0, _M_finish = 0x0, _M_end_of_storage = 0x0}, <No data fields>}}, <No data fields>}}, m_StartTick = -1, m_aPlayer = '\000' <repeats 15 times>, m_PlaybackPos = 0}, {m_RenderInfo = {m_OriginalRenderSkin = {m_Body = {m_Id = -1}, m_BodyOutline = {m_Id = -1}, m_Feet = {m_Id = -1}, m_FeetOutline = {m_Id = -1}, m_Hands = {m_Id = -1}, m_HandsOutline = {m_Id = -1}, m_Eyes = {{m_Id = -1}, {m_Id = -1}, {m_Id = -1}, {m_Id = -1}, {m_Id = -1}, {m_Id = -1}}}, m_ColorableRenderSkin = {m_Body = {m_Id = -1}, m_BodyOutline = {m_Id = -1}, m_Feet = {m_Id = -1}, m_FeetOutline = {m_Id = -1}, m_Hands = {m_Id = -1}, m_HandsOutline = {m_Id = -1}, m_Eyes = {{m_Id = -1}, {m_Id = -1}, {m_Id = -1}, {m_Id = -1}, {m_Id = -1}, {m_Id = -1}}}, m_SkinMetrics = {m_Body = {m_Width = {m_Value = -2147483648}, m_Height = {m_Value = -2147483648}, m_OffsetX = {m_Value = 2147483647}, m_OffsetY = {m_Value = 2147483647}, m_MaxWidth = {m_Value = -2147483648}, m_MaxHeight = {m_Value = -2147483648}}, m_Feet = {m_Width = {m_Value = -2147483648}, m_Height = {m_Value = -2147483648}, m_OffsetX = {m_Value = 2147483647}, m_OffsetY = {m_Value = 2147483647}, m_MaxWidth = {m_Value = -2147483648}, m_MaxHeight = {m_Value = -2147483648}}}, m_CustomColoredSkin = false, m_BloodColor = {<color4_base<ColorRGBA>> = {{x = 0, r = 0, h = 0}, {y = 0, g = 0, s = 0}, {z = 0, b = 0, l = 0, v = 0}, {w = 0, a = 0}}, <No data fields>}, m_ColorBody = {<color4_base<ColorRGBA>> = {{x = 1, r = 1, h = 1}, {y = 1, g = 1, s = 1}, {z = 1, b = 1, l = 1, v = 1}, {w = 1, a = 1}}, <No data fields>}, m_ColorFeet = {<color4_base<ColorRGBA>> = {{x = 1, r = 1, h = 1}, {y = 1, g = 1, s = 1}, {z = 1, b = 1, l = 1, v = 1}, {w = 1, a = 1}}, <No data fields>}, m_Size = 1, m_GotAirJump = 1, m_ShineDecoration = 0}, m_Skin = {m_Skin0 = 0, m_Skin1 = 0, m_Skin2 = 0, m_Skin3 = 0, m_Skin4 = 0, m_Skin5 = 0, m_UseCustomColor = 0, m_ColorBody = 0, m_ColorFeet = 0}, m_Path = {m_ChunkSize = 1500, m_NumItems = 0, m_lChunks = {<std::_Vector_base<CGhostCharacter*, std::allocator<CGhostCharacter*> >> = {_M_impl = {<std::allocator<CGhostCharacter*>> = {<__gnu_cxx::new_allocator<CGhostCharacter*>> = {<No data fields>}, <No data fields>}, <std::_Vector_base<CGhostCharacter*, std::allocator<CGhostCharacter*> >::_Vector_impl_data> = {_M_start = 0x0, _M_finish = 0x0, _M_end_of_storage = 0x0}, <No data fields>}}, <No data fields>}}, m_StartTick = -1, m_aPlayer = '\000' <repeats 15 times>, m_PlaybackPos = 0}, {m_RenderInfo = {m_OriginalRenderSkin = {m_Body = {m_Id = -1}, m_BodyOutline = {m_Id = -1}, m_Feet = {m_Id = -1}, m_FeetOutline = {m_Id = -1}, m_Hands = {m_Id = -1}, m_HandsOutline = {m_Id = -1}, m_Eyes = {{m_Id = -1}, {m_Id = -1}, {m_Id = -1}, {m_Id = -1}, {m_Id = -1}, {m_Id = -1}}}, m_ColorableRenderSkin = {m_Body = {m_Id = -1}, m_BodyOutline = {m_Id = -1}, m_Feet = {m_Id = -1}, m_FeetOutline = {m_Id = -1}, m_Hands = {m_Id = -1}, m_HandsOutline = {m_Id = -1}, m_Eyes = {{m_Id = -1}, {m_Id = -1}, {m_Id = -1}, {m_Id = -1}, {m_Id = -1}, {m_Id = -1}}}, m_SkinMetrics = {m_Body = {m_Width = {m_Value = -2147483648}, m_Height = {m_Value = -2147483648}, m_OffsetX = {m_Value = 2147483647}, m_OffsetY = {m_Value = 2147483647}, m_MaxWidth = {m_Value = -2147483648}, m_MaxHeight = {m_Value = -2147483648}}, m_Feet = {m_Width = {m_Value = -2147483648}, m_Height = {m_Value = -2147483648}, m_OffsetX = {m_Value = 2147483647}, m_OffsetY = {m_Value = 2147483647}, m_MaxWidth = {m_Value = -2147483648}, m_MaxHeight = {m_Value = -2147483648}}}, m_CustomColoredSkin = false, m_BloodColor = {<color4_base<ColorRGBA>> = {{x = 0, r = 0, h = 0}, {y = 0, g = 0, s = 0}, {z = 0, b = 0, l = 0, v = 0}, {w = 0, a = 0}}, <No data fields>}, m_ColorBody = {<color4_base<ColorRGBA>> = {{x = 1, r = 1, h = 1}, {y = 1, g = 1, s = 1}, {z = 1, b = 1, l = 1, v = 1}, {w = 1, a = 1}}, <No data fields>}, m_ColorFeet = {<color4_base<ColorRGBA>> = {{x = 1, r = 1, h = 1}, {y = 1, g = 1, s = 1}, {z = 1, b = 1, l = 1, v = 1}, {w = 1, a = 1}}, <No data fields>}, m_Size = 1, m_GotAirJump = 1, m_ShineDecoration = 0}, m_Skin = {m_Skin0 = 0, m_Skin1 = 0, m_Skin2 = 0, m_Skin3 = 0, m_Skin4 = 0, m_Skin5 = 0, m_UseCustomColor = 0, m_ColorBody = 0, m_ColorFeet = 0}, m_Path = {m_ChunkSize = 1500, m_NumItems = 0, m_lChunks = {<std::_Vector_base<CGhostCharacter*, std::allocator<CGhostCharacter*> >> = {_M_impl = {<std::allocator<CGhostCharacter*>> = {<__gnu_cxx::new_allocator<CGhostCharacter*>> = {<No data fields>}, <No data fields>}, <std::_Vector_base<CGhostCharacter*, std::allocator<CGhostCharacter*> >::_Vector_impl_data> = {_M_start = 0x0, _M_finish = 0x0, _M_end_of_storage = 0x0}, <No data fields>}}, <No data fields>}}, m_StartTick = -1, m_aPlayer = '\000' <repeats 15 times>, m_PlaybackPos = 0}, {m_RenderInfo = {m_OriginalRenderSkin = {m_Body = {m_Id = -1}, m_BodyOutline = {m_Id = -1}, m_Feet = {m_Id = -1}, m_FeetOutline = {m_Id = -1}, m_Hands = {m_Id = -1}, m_HandsOutline = {m_Id = -1}, m_Eyes = {{m_Id = -1}, {m_Id = -1}, {m_Id = -1}, {m_Id = -1}, {m_Id = -1}, {m_Id = -1}}}, m_ColorableRenderSkin = {m_Body = {m_Id = -1}, m_BodyOutline = {m_Id = -1}, m_Feet = {m_Id = -1}, m_FeetOutline = {m_Id = -1}, m_Hands = {m_Id = -1}, m_HandsOutline = {m_Id = -1}, m_Eyes = {{m_Id = -1}, {m_Id = -1}, {m_Id = -1}, {m_Id = -1}, {m_Id = -1}, {m_Id = -1}}}, m_SkinMetrics = {m_Body = {m_Width = {m_Value = -2147483648}, m_Height = {m_Value = -2147483648}, m_OffsetX = {m_Value = 2147483647}, m_OffsetY = {m_Value = 2147483647}, m_MaxWidth = {m_Value = -2147483648}, m_MaxHeight = {m_Value = -2147483648}}, m_Feet = {m_Width = {m_Value = -2147483648}, m_Height = {m_Value = -2147483648}, m_OffsetX = {m_Value = 2147483647}, m_OffsetY = {m_Value = 2147483647}, m_MaxWidth = {m_Value = -2147483648}, m_MaxHeight = {m_Value = -2147483648}}}, m_CustomColoredSkin = false, m_BloodColor = {<color4_base<ColorRGBA>> = {{x = 0, r = 0, h = 0}, {y = 0, g = 0, s = 0}, {z = 0, b = 0, l = 0, v = 0}, {w = 0, a = 0}}, <No data fields>}, m_ColorBody = {<color4_base<ColorRGBA>> = {{x = 1, r = 1, h = 1}, {y = 1, g = 1, s = 1}, {z = 1, b = 1, l = 1, v = 1}, {w = 1, a = 1}}, <No data fields>}, m_ColorFeet = {<color4_base<ColorRGBA>> = {{x = 1, r = 1, h = 1}, {y = 1, g = 1, s = 1}, {z = 1, b = 1, l = 1, v = 1}, {w = 1, a = 1}}, <No data fields>}, m_Size = 1, m_GotAirJump = 1, m_ShineDecoration = 0}, m_Skin = {m_Skin0 = 0, m_Skin1 = 0, m_Skin2 = 0, m_Skin3 = 0, m_Skin4 = 0, m_Skin5 = 0, m_UseCustomColor = 0, m_ColorBody = 0, m_ColorFeet = 0}, m_Path = {m_ChunkSize = 1500, m_NumItems = 0, m_lChunks = {<std::_Vector_base<CGhostCharacter*, std::allocator<CGhostCharacter*> >> = {_M_impl = {<std::allocator<CGhostCharacter*>> = {<__gnu_cxx::new_allocator<CGhostCharacter*>> = {<No data fields>}, <No data fields>}, <std::_Vector_base<CGhostCharacter*, std::allocator<CGhostCharacter*> >::_Vector_impl_data> = {_M_start = 0x0, _M_finish = 0x0, _M_end_of_storage = 0x0}, <No data fields>}}, <No data fields>}}, m_StartTick = -1, m_aPlayer = '\000' <repeats 15 times>, m_PlaybackPos = 0}}
        __for_begin = 0x7fffeb79f5d0
        __for_end = 0x7fffeb79ff50
        PlaybackTick = 109
#16 0x0000555555812833 in CGameClient::OnRender (this=0x7fffeb496010) at /home/ant/ddnet/src/game/client/gameclient.cpp:611
        i = 18
#17 0x00005555556735a1 in CClient::Render (this=0x7ffff0893010) at /home/ant/ddnet/src/engine/client/client.cpp:1191
No locals.
#18 0x000055555567c013 in CClient::Run (this=0x7ffff0893010) at /home/ant/ddnet/src/engine/client/client.cpp:3246
        AdditionalTime = 0
        Now = 28182967481
        IsRenderActive = true
        AsyncRenderOld = true
        GfxRefreshRate = 0
        Now = {__r = 28182951522}
        SleepTimeInNanoSeconds = {__r = 0}
        Slept = false
        Seed = 500091216
        LastD = false
        LastE = false
        LastG = false
        LastTime = {__r = 28182951522}
        LastRenderTime = 28182967481
#19 0x000055555568492e in main (argc=1, argv=0x7fffffffe518) at /home/ant/ddnet/src/engine/client/client.cpp:4555
        Silent = false
        RandInitFailed = false
        apLoggers = {<std::_Vector_base<std::shared_ptr<ILogger>, std::allocator<std::shared_ptr<ILogger> > >> = {_M_impl = {<std::allocator<std::shared_ptr<ILogger> >> = {<__gnu_cxx::new_allocator<std::shared_ptr<ILogger> >> = {<No data fields>}, <No data fields>}, <std::_Vector_base<std::shared_ptr<ILogger>, std::allocator<std::shared_ptr<ILogger> > >::_Vector_impl_data> = {_M_start = 0x0, _M_finish = 0x0, _M_end_of_storage = 0x0}, <No data fields>}}, <No data fields>}
        pFutureFileLogger = {<std::__shared_ptr<CFutureLogger, (__gnu_cxx::_Lock_policy)2>> = {<std::__shared_ptr_access<CFutureLogger, (__gnu_cxx::_Lock_policy)2, false, false>> = {<No data fields>}, _M_ptr = 0x555555bd0af0, _M_refcount = {_M_pi = 0x555555bd0ae0}}, <No data fields>}
        pFutureConsoleLogger = {<std::__shared_ptr<CFutureLogger, (__gnu_cxx::_Lock_policy)2>> = {<std::__shared_ptr_access<CFutureLogger, (__gnu_cxx::_Lock_policy)2, false, false>> = {<No data fields>}, _M_ptr = 0x555555be66d0, _M_refcount = {_M_pi = 0x555555be66c0}}, <No data fields>}
        pFutureAssertionLogger = {<std::__shared_ptr<CFutureLogger, (__gnu_cxx::_Lock_policy)2>> = {<std::__shared_ptr_access<CFutureLogger, (__gnu_cxx::_Lock_policy)2, false, false>> = {<No data fields>}, _M_ptr = 0x555555be6740, _M_refcount = {_M_pi = 0x555555be6730}}, <No data fields>}
        pClient = 0x7ffff0893010
        pKernel = 0x555555bf7a30
        pEngine = 0x555555bf8450
        pConsole = 0x555555bd1260
        pStorage = 0x555555c1fde0
        pConfigManager = 0x555555bff450
        pEngineSound = 0x555555bff900
        pEngineInput = 0x555555c22600
        pEngineTextRender = 0x7ffff0071010
        pEngineMap = 0x555555bb6790
        pDiscord = 0x555555bb61f0
        pSteam = 0x555555bb5cb0
        File = 0x0
        Restarting = false
```
</details>

## Checklist

- [x] Tested the change ingame
- [ ] Provided screenshots if it is a visual change
- [ ] Tested in combination with possibly related configuration options
- [ ] Written a unit test if it works standalone, system.c especially
- [ ] Considered possible null pointers and out of bounds array indexing
- [ ] Changed no physics that affect existing maps
- [ ] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional)


Co-authored-by: Learath <learath2@gmail.com>
2022-06-02 20:04:33 +00:00
bors[bot] ba05169b7e
Merge #5317
5317: Fix ConSwitchDoorOpen r=C0D3D3V a=trml

Just figured out that my pr introduced a bug in switches set from map configs (not opening the correct switches). Sorry about that!
Thanks to Faulty for finding it!

## Checklist

- [x] Tested the change ingame
- [ ] Provided screenshots if it is a visual change
- [ ] Tested in combination with possibly related configuration options
- [ ] Written a unit test if it works standalone, system.c especially
- [x] Considered possible null pointers and out of bounds array indexing
- [ ] Changed no physics that affect existing maps
- [ ] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional)


Co-authored-by: trml <trml@users.noreply.github.com>
2022-06-02 19:44:37 +00:00
Robert Müller 23c0b6a4e4 Fix wrong iterator being used for inserting into vector 2022-06-02 21:11:02 +02:00
trml 531107eb48 Fix ConSwitchDoorOpen 2022-06-02 20:52:34 +02:00
bors[bot] c6095816ff
Merge #5311
5311: drop small NETOBJTYPE_SWITCHSTATE r=def- a=C0D3D3V

I'm too lazy right now to write code to test this, but I think this should work. 
What do you think, is it sufficient? `@heinrich5991` 

## Checklist

- [ ] Tested the change ingame
- [ ] Provided screenshots if it is a visual change
- [ ] Tested in combination with possibly related configuration options
- [ ] Written a unit test if it works standalone, system.c especially
- [x] Considered possible null pointers and out of bounds array indexing
- [x] Changed no physics that affect existing maps
- [ ] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional)


Co-authored-by: c0d3d3v <c0d3d3v@mag-keinen-spam.de>
2022-06-02 14:00:38 +00:00
c0d3d3v 809309cd09
drop small NETOBJTYPE_SWITCHSTATE 2022-06-02 15:40:55 +02:00
c0d3d3v d125c91825
send normal shields to old clients 2022-06-02 15:27:57 +02:00
bors[bot] b666533fff
Merge #4705
4705: Refactor switch state, add prediction of switch state toggles r=def- a=trml

This is an attempt to fix #4702, and also ended up being a more general attempt at predicting switch on/off tiles as well as timed switchers (with delay). A few things:

- Refactored the switch state array from CCollision to CGameCore (second commit)

The idea here was that CCollision holds information about the map that is immutable and there only exists one copy of it, while the switch state is mutable and would have both a predicted and non-predicted state in the client. While strictly not necessary, having it in the gamecore seems to represent the mutable state better and would be useful to avoid having to put the snapshot switch state back into the gameworld on each new prediction as well as to more easily keep track of the two copies.

A concern here is whether this could in any way change server behavior (time of initialization and/or destruction of switch states), so this change would require quite a bit of testing and/or review. However, from what I could tell from the code, CCollision is only initialized once and at that time where the gamecore already exists.

- Added a new extended netobject containing the end tick of switches (third commit)

This would be needed for adding general prediction for timed switchers. The idea is to only send it for a limited number of switchers (those with the lowest time left before they toggle back), since there will most likely be a limited number of timed switchers active at any point, and I randomly selected 4 as a number here. Ideally, this netobject should be merged with the previous one for simpler parsing of the information, but that would sacrifice compatibility with older servers (and/or clients). (Another possibility here would have been to treat timed switchers as regular on/off tiles and make the addition of the netobject a separate pr)

- Used NetArray from datasrc/seven/datatypes.py to simplify both the new and old switch state netobjects (first commit)

(Haven't checked if there might be reasons not to use it? But it did seem to be backwards compatible with older ddnet clients when keeping the memory layout the same)

## Checklist

- [ ] Tested the change ingame
- [ ] Provided screenshots if it is a visual change
- [ ] Tested in combination with possibly related configuration options
- [ ] Written a unit test if it works standalone, system.c especially
- [ ] Considered possible null pointers and out of bounds array indexing
- [ ] Changed no physics that affect existing maps
- [ ] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional)


Co-authored-by: trml <trml@users.noreply.github.com>
2022-06-02 12:42:47 +00:00
heinrich5991 855fe75b63 Log chat by default, put it onto INFO instead of DEBUG level
Fixes #5032.
2022-06-02 09:36:31 +02:00
trml 882ddae201 Send switch timing info in extended switch state netobject 2022-06-02 01:04:34 +02:00
trml 548de3804e Rename NumSwitchers to HighestSwitchNumber and remove most references 2022-06-02 00:57:11 +02:00
trml 66c0c1e692 Send timer info for switchers and predict switch state changes 2022-06-02 00:57:09 +02:00
trml 95c4c2db1c Move switch state to gamecore 2022-06-02 00:51:25 +02:00
trml 940205b3cc Simplify switch state using NetArray 2022-06-02 00:46:17 +02:00
Robert Müller 70907f422a Use insert with initializer-list instead of reserving space 2022-06-01 21:29:44 +02:00
Learath 210b19042d Avoid unnecessary copy leading to crash 2022-06-01 19:52:34 +02:00
Robert Müller 7c17051a3a Replace CGameClient::CStack with std::vector<class CComponent *> 2022-06-01 14:16:09 +02:00
bors[bot] 9dd46eb764
Merge #5260
5260: Pr thread safety negative r=heinrich5991 a=def-

WorkerThread is hard because `REQUIRES(!((CJobPool *)pUser)->m_Lock)` would require alias analysis or the function using that everywhere.

https://clang.llvm.org/docs/ThreadSafetyAnalysis.html#negative

## Checklist

- [ ] Tested the change ingame
- [ ] Provided screenshots if it is a visual change
- [ ] Tested in combination with possibly related configuration options
- [ ] Written a unit test if it works standalone, system.c especially
- [ ] Considered possible null pointers and out of bounds array indexing
- [ ] Changed no physics that affect existing maps
- [ ] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional)


Co-authored-by: Dennis Felsing <dennis@felsin9.de>
2022-06-01 11:17:30 +00:00
bors[bot] eab87e0d52
Merge #5291
5291: Windows: Use current console background color, restore original color on exit, refactoring r=heinrich5991 a=Robyt3

- Remember initial console foreground and background color.
- Use the original background color with the message specific foreground color, so it looks better when the console background color isn't black.
- Restore the initial console foreground and background color on exit instead of leaving the color be whatever was last used.
- Add locks to ensure `Log`-calls from different threads don't overlap their output/color.
- Refactoring: Replace numbers with color constants defined in `wincon.h` (4312d20923/include/wincon.h (L51-L67)).
- Refactoring: Slightly reorder the `if`s and remove redundant checks which are ensured by the `else-if` structure.

## Checklist

- [X] Tested the change ingame
- [ ] Provided screenshots if it is a visual change
- [ ] Tested in combination with possibly related configuration options
- [ ] Written a unit test if it works standalone, system.c especially
- [ ] Considered possible null pointers and out of bounds array indexing
- [ ] Changed no physics that affect existing maps
- [ ] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional)


Co-authored-by: Robert Müller <robytemueller@gmail.com>
2022-06-01 10:25:43 +00:00
bors[bot] b623c3c124
Merge #5284
5284: add ellipsis again r=heinrich5991 a=C0D3D3V

![grafik](https://user-images.githubusercontent.com/14315968/171151688-a5fdb2a8-d070-4485-a187-ac768a32e854.png)
![grafik](https://user-images.githubusercontent.com/14315968/171151717-d36312d4-5e2e-4b50-af9a-7a202a1564a4.png)

`@Jupeyy`  can you please test if this also decreases the fps significant more than without this PR?


without ellipsis (and name in mini score hud flows over the left border):
![grafik](https://user-images.githubusercontent.com/14315968/171153136-af385267-af7a-4913-844e-4e95d60bf799.png)

with ellipsis:
![grafik](https://user-images.githubusercontent.com/14315968/171153237-0996600e-92aa-4b0c-b8f5-fdde05c2751b.png)


## Checklist

- [x] Tested the change ingame
- [ ] Provided screenshots if it is a visual change
- [ ] Tested in combination with possibly related configuration options
- [ ] Written a unit test if it works standalone, system.c especially
- [x] Considered possible null pointers and out of bounds array indexing
- [x] Changed no physics that affect existing maps
- [x] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional)


Co-authored-by: c0d3d3v <c0d3d3v@mag-keinen-spam.de>
2022-06-01 10:05:57 +00:00
bors[bot] 27ebe08c72
Merge #5290 #5293
5290: Don't output as much in normal STUN behavior r=def- a=heinrich5991

Log send errors with debug instead of error severity. They're normal in case a protocol stack isn't initialized supported by the host or if there's no route.

Don't periodically retry STUN if successful. Trying again for each connection establishment is enough. Previously, it
was re-requested every 10 minutes.

Fixes #5273.

## Checklist

- [ ] Tested the change ingame
- [ ] Provided screenshots if it is a visual change
- [ ] Tested in combination with possibly related configuration options
- [ ] Written a unit test if it works standalone, system.c especially
- [ ] Considered possible null pointers and out of bounds array indexing
- [ ] Changed no physics that affect existing maps
- [ ] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional)


5293: Cleanup: Remove dead code, don't print datafile debug per default, remove misused static CUIRect r=def- a=Robyt3

- Remove dead (commented out) code.
- Don't print detailed datafile log messages, unless the datafile specific `DEBUG` flag is set.
- Use `static int` instead of `static CUIRect` as UI element ID.

## Checklist

- [X] Tested the change ingame
- [ ] Provided screenshots if it is a visual change
- [ ] Tested in combination with possibly related configuration options
- [ ] Written a unit test if it works standalone, system.c especially
- [ ] Considered possible null pointers and out of bounds array indexing
- [ ] Changed no physics that affect existing maps
- [ ] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional)


Co-authored-by: heinrich5991 <heinrich5991@gmail.com>
Co-authored-by: Robert Müller <robytemueller@gmail.com>
2022-05-31 18:54:56 +00:00
Robert Müller 019c2fa429 Remove static CUIRect used as UI element ID 2022-05-31 19:41:00 +02:00
Robert Müller 7474ca201f Remove dead code 2022-05-31 19:32:07 +02:00
Robert Müller 7f24922b35 Print auxiliary datafile log messages only when DEBUG flag set 2022-05-31 19:32:07 +02:00
Robert Müller 2a8b2ad455 Add locks to windows loggers 2022-05-31 19:21:40 +02:00
heinrich5991 92f27bdb30 Don't periodically retry STUN if successful
Trying again for each connection establishment is enough. Previously, it
was re-requested every 10 minutes.

Fixes #5273.
2022-05-31 17:53:11 +02:00
heinrich5991 71d47c3329 Log send errors with debug instead of error severity
They're normal in case a protocol stack isn't initialized supported
by the host or if there's no route.

CC #5273
2022-05-31 17:49:11 +02:00
Robert Müller 2d7f67ddec Use current console background color, restore original color on exit 2022-05-31 17:48:28 +02:00
Robert Müller 95f244913f Remove duplicate conditional expressions 2022-05-31 17:48:28 +02:00
Robert Müller 2c04c00756 Use color constants in color_hsv_to_windows_console_color 2022-05-31 17:48:28 +02:00
bors[bot] d32b223636
Merge #5287 #5288
5287: Work around Windows's definition of `min`/`max` r=Jupeyy a=heinrich5991

This allows us to use `std::min`/`std::max`.

<!-- What is the motivation for the changes of this pull request -->

## Checklist

- [ ] Tested the change ingame
- [ ] Provided screenshots if it is a visual change
- [ ] Tested in combination with possibly related configuration options
- [ ] Written a unit test if it works standalone, system.c especially
- [ ] Considered possible null pointers and out of bounds array indexing
- [ ] Changed no physics that affect existing maps
- [ ] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional)


5288: Remove outdated comment r=Jupeyy a=heinrich5991

The string comparison isn't actually done anymore, it's now done via a
boolean flag.

## Checklist

- [ ] Tested the change ingame
- [ ] Provided screenshots if it is a visual change
- [ ] Tested in combination with possibly related configuration options
- [ ] Written a unit test if it works standalone, system.c especially
- [ ] Considered possible null pointers and out of bounds array indexing
- [ ] Changed no physics that affect existing maps
- [ ] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional)


Co-authored-by: heinrich5991 <heinrich5991@gmail.com>
2022-05-31 15:43:15 +00:00
heinrich5991 d0ff8114d6 Remove outdated comment
The string comparison isn't actually done anymore, it's now done via a
boolean flag.
2022-05-31 17:33:00 +02:00
heinrich5991 eb2823231f Work around Windows's definition of min/max
This allows us to use `std::min`/`std::max`.
2022-05-31 17:26:35 +02:00
heinrich5991 9da3f5c359 Only show port forward message if there's a problem
Previously, it was always shown.

Fixes #5203.
2022-05-31 16:39:54 +02:00
Dennis Felsing e31fa7051e Fix clamp in CStun::Update (fixes #5282) 2022-05-31 13:31:43 +02:00
c0d3d3v 0914c1260b
add ellipsis again 2022-05-31 12:20:45 +02:00
bors[bot] 4183ad6b47
Merge #5179
5179: Add loglevel config (fixes #5178, fixes #5174) r=heinrich5991 a=def-

<!-- What is the motivation for the changes of this pull request -->

## Checklist

- [x] Tested the change ingame
- [ ] Provided screenshots if it is a visual change
- [ ] Tested in combination with possibly related configuration options
- [ ] Written a unit test if it works standalone, system.c especially
- [ ] Considered possible null pointers and out of bounds array indexing
- [ ] Changed no physics that affect existing maps
- [ ] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional)


Co-authored-by: def <dennis@felsin9.de>
2022-05-31 08:21:03 +00:00
bors[bot] 760cb99574
Merge #5271
5271: Time out for POST requests too (hopefully fixes #5198) r=heinrich5991 a=def-

Untested because the issue is sporadic. But I think it makes sense to have a timeout even if this is not the root cause.

## Checklist

- [ ] Tested the change ingame
- [ ] Provided screenshots if it is a visual change
- [ ] Tested in combination with possibly related configuration options
- [ ] Written a unit test if it works standalone, system.c especially
- [ ] Considered possible null pointers and out of bounds array indexing
- [ ] Changed no physics that affect existing maps
- [ ] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional)


Co-authored-by: def <dennis@felsin9.de>
2022-05-31 08:01:38 +00:00
bors[bot] f03d89f206
Merge #5277
5277: penalty tiles can be used to get a time of 00:00:01, this is fixed by letting the tees die, before that happens r=def- a=C0D3D3V

Also map gets reloaded if the server tick overflows. We could add a warning, that the server reloads soon, or save all players and load them after map reload. But I think that is such a rare event, we can just reload the map without these nice things.

fixes #5170

we should check the following maps for cheated times:
- just every fly
- puzzle partners
- time shop

## Checklist

- [x] Tested the change ingame See https://youtu.be/lQPU60XN8Nk
- [ ] Provided screenshots if it is a visual change
- [ ] Tested in combination with possibly related configuration options
- [ ] Written a unit test if it works standalone, system.c especially
- [x] Considered possible null pointers and out of bounds array indexing
- [x] Changed no physics that affect existing maps
- [ ] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional)


Co-authored-by: c0d3d3v <c0d3d3v@mag-keinen-spam.de>
2022-05-30 21:03:40 +00:00
c0d3d3v 19ae17366d
penalty tiles can be used to get a time of 0:00:01, this is fixed by
letting the tees die, before that happens
2022-05-30 20:53:04 +02:00
c0d3d3v 5065bab8b5
fix swap does not swap no collision and no hook
- remove duplicated variable for no collision and no hook
2022-05-30 19:33:42 +02:00
Robert Müller 91d2ba1865 Organize game-client includes 2022-05-29 21:24:43 +02:00
Robert Müller 06cd4e9ab3 Organize game-server includes 2022-05-29 21:24:43 +02:00
Robert Müller 0101e94a63 Organize engine-server includes 2022-05-29 21:24:43 +02:00
Robert Müller 4b36584ca1 Organize engine-client includes 2022-05-29 21:24:43 +02:00
Robert Müller c2f92c1e13 Organize game-shared includes 2022-05-29 20:02:22 +02:00
Robert Müller 31533d5e2a Organize engine-shared includes 2022-05-29 20:02:22 +02:00
Robert Müller 0af146eb3b Remove unused includes from base 2022-05-29 19:49:38 +02:00
def 3e60cd83d0 Time out for POST requests too (hopefully fixes #5198) 2022-05-29 19:15:36 +02:00
Robert Müller a3a594b2d8 Remove unused include from test 2022-05-29 13:10:49 +02:00
Robert Müller f632758381 Remove unused includes from tools 2022-05-29 13:10:49 +02:00
bors[bot] 1abe73c2ec
Merge #5272
5272: Handle failed socket creation (fixes #5267) r=heinrich5991 a=def-

by returning nullpointer, as the calling functions expect

Broken in 471bb441a1

<!-- What is the motivation for the changes of this pull request -->

## Checklist

- [x] Tested the change ingame
- [ ] Provided screenshots if it is a visual change
- [ ] Tested in combination with possibly related configuration options
- [ ] Written a unit test if it works standalone, system.c especially
- [ ] Considered possible null pointers and out of bounds array indexing
- [ ] Changed no physics that affect existing maps
- [ ] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional)


Co-authored-by: def <dennis@felsin9.de>
2022-05-29 08:50:00 +00:00
def d6c1c7790c Handle failed socket creation (fixes #5267)
by returning nullpointer, as the calling functions expect

Broken in 471bb441a1
2022-05-29 00:43:07 +02:00
bors[bot] 9e6ee21545
Merge #5269
5269: Introduce and use constexpr CCharacterCore::PhysicalSize r=def- a=Kaffeine

Add `Collision()` getter to server CEntity to make it easier to sync the server and prediction implementations (e.g. `IsGrounded()` imps are now identical).

## Checklist

- [x] Tested the change ingame
- [ ] Provided screenshots if it is a visual change
- [ ] Tested in combination with possibly related configuration options
- [ ] Written a unit test if it works standalone, system.c especially
- [ ] Considered possible null pointers and out of bounds array indexing
- [ ] Changed no physics that affect existing maps
- [ ] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional)


Co-authored-by: Alexander Akulich <akulichalexander@gmail.com>
2022-05-28 22:23:20 +00:00
bors[bot] 5fdb94e479
Merge #5268
5268: Execute the dragger_beam tick one tick earlier. And stop it one tick earlier r=def- a=C0D3D3V

fixes #5263

`@bencie`  could you please confirm it fixes the problem?

## Checklist

- [x] Tested the change ingame
- [ ] Provided screenshots if it is a visual change
- [ ] Tested in combination with possibly related configuration options
- [ ] Written a unit test if it works standalone, system.c especially
- [x] Considered possible null pointers and out of bounds array indexing
- [x] Changed no physics that affect existing maps
- [x] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional)


Co-authored-by: c0d3d3v <c0d3d3v@mag-keinen-spam.de>
2022-05-28 21:17:38 +00:00
Alexander Akulich a39bbc702b Introduce and use constexpr CCharacterCore::PhysicalSize 2022-05-28 21:46:44 +03:00
Alexander Akulich deb2e8752f Sync prediction impl with server CCharacter::IsGrounded() 2022-05-28 21:46:07 +03:00
Alexander Akulich f057dd33a2 server/character: Use CEntity::Collision() instead of GameServer() one
Rationalize: make prediction and server code closer to each other.
2022-05-28 21:46:07 +03:00
Alexander Akulich f934882e51 server/entity: Add CCollision() getter
The main idea is to sync prediction and server CEntity APIs.
2022-05-28 21:46:07 +03:00
Alexander Akulich a023671ecd prediction/entity: Sync constructor signature, add GetProximityRadius() 2022-05-28 21:28:47 +03:00
Alexander Akulich a5f4c66fd5 vmath: Make vector2_base() constructors constexpr 2022-05-28 20:58:22 +03:00
bors[bot] 719e3e4385
Merge #5264 #5266
5264: Prevent users from setting port 1-1023 r=Jupeyy a=def-

Following user report that they set cl_port 1 and it didn't work

<!-- What is the motivation for the changes of this pull request -->

## Checklist

- [x] Tested the change ingame
- [ ] Provided screenshots if it is a visual change
- [ ] Tested in combination with possibly related configuration options
- [ ] Written a unit test if it works standalone, system.c especially
- [ ] Considered possible null pointers and out of bounds array indexing
- [ ] Changed no physics that affect existing maps
- [ ] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional)


5266: Use std::make_unique (fixes #5166) r=Jupeyy a=def-

No idea why clang-tidy's modernize-... didn't work

<!-- What is the motivation for the changes of this pull request -->

## Checklist

- [ ] Tested the change ingame
- [ ] Provided screenshots if it is a visual change
- [ ] Tested in combination with possibly related configuration options
- [ ] Written a unit test if it works standalone, system.c especially
- [ ] Considered possible null pointers and out of bounds array indexing
- [ ] Changed no physics that affect existing maps
- [ ] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional)


Co-authored-by: def <dennis@felsin9.de>
2022-05-28 16:01:32 +00:00
c0d3d3v 556b32270d
Execute the dragger_beam tick one tick earlier. And stop it one tick
earlier
2022-05-28 17:27:10 +02:00
bors[bot] ab28267e30
Merge #5265
5265: Cleanup prediction entity handling a little r=def- a=trml

I looked over the remaining code for creating/removing entities in the prediction, and only ended up making some smaller changes:
- More consistent use of InsertEntity/RemoveEntity/Destroy
- Fixed one instance in gameclient.cpp where an entity was removed but not deleted (could potentially have been a memory leak)
- Removed some old code for retaining information about the characters after they left the snapshot (the client should only rely on the snapshot for prediction of players)

## Checklist

- [x] Tested the change ingame
- [ ] Provided screenshots if it is a visual change
- [ ] Tested in combination with possibly related configuration options
- [ ] Written a unit test if it works standalone, system.c especially
- [x] Considered possible null pointers and out of bounds array indexing
- [x] Changed no physics that affect existing maps
- [x] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional)


Co-authored-by: trml <trml@users.noreply.github.com>
2022-05-28 12:48:10 +00:00
def 19dcd44fbe Use std::make_unique (fixes #5166)
No idea why clang-tidy's modernize-... didn't work
2022-05-28 14:46:55 +02:00
def a3c1a4c540 Prevent users from setting port 1-1023
Following user report that they set cl_port 1 and it didn't work
2022-05-28 13:42:28 +02:00
trml c5595209fe Fix and slightly cleanup creation/destruction/insertion of predicted entities 2022-05-28 13:37:59 +02:00
bors[bot] ccf0622984
Merge #5252
5252: Use std::vector instead of array, remove base/tl/array.h, algorithm.h, allocator.h, range.h r=def- a=Robyt3

Replaces all usages of `array` with `std::vector`.

I adjusted variable names of variables I changed to use the `v` prefix. Not so in the editor however, as there are already many changes due to clang-tidy enforcing the use of for-each loops.

This allows us to remove all remaining `base/tl` headers except `threading.h`.

Clang-tidy now finds `clang-analyzer-cplusplus.NewDelete` (Use of memory after it is freed), which is also fixed here, though it appears to be a false-positive.

This last remaining usages of `goto` are also removed.

## Checklist

- [X] Tested the change ingame
- [ ] Provided screenshots if it is a visual change
- [ ] Tested in combination with possibly related configuration options
- [ ] Written a unit test if it works standalone, system.c especially
- [ ] Considered possible null pointers and out of bounds array indexing
- [ ] Changed no physics that affect existing maps
- [ ] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional)


Co-authored-by: Robert Müller <robytemueller@gmail.com>
2022-05-28 10:56:21 +00:00
Robert Müller c60931427a Use std::any_of instead of for-each loops 2022-05-28 10:45:15 +02:00
Jupeyy 23683a701e Remove alpha threshold from map_optmize 2022-05-28 09:15:08 +02:00
Chairn 39e3f52bf3 clang-format 2022-05-28 02:22:43 +02:00
Chairn 4cba284b68 Fix possible misuse of comma 2022-05-28 02:15:42 +02:00
Dennis Felsing 174b855774 Enable -Wthread-safety-negative (as suggested by Chairn) 2022-05-28 02:14:46 +02:00
bors[bot] ce9b16d6f6
Merge #5259
5259: reintroduce shotgun bug r=def- a=C0D3D3V

fixes #5258
bug got fixed by the math changes in 68bcd21eff

This fix introduces a hard coded velocity that the player would get like before. (It could be that this has slightly other behaviour, because before the produced NaN values where converted to ints in CCharacterCore::Quantize (so some other logic may be confronted with the NaN values before), but it should most likely not be noticeable because it is fast enough)

We could now make this bug optional, by adding it to our mapbugs, or adding a server setting for it.

## Checklist

- [x] Tested the change ingame
- [ ] Provided screenshots if it is a visual change
- [ ] Tested in combination with possibly related configuration options
- [ ] Written a unit test if it works standalone, system.c especially
- [x] Considered possible null pointers and out of bounds array indexing
- [x] Changed no physics that affect existing maps
- [x] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional)


Co-authored-by: c0d3d3v <c0d3d3v@mag-keinen-spam.de>
2022-05-27 23:23:37 +00:00
bors[bot] 4b3b0938fd
Merge #5255
5255: fix windows server crash on client spawn r=def- a=C0D3D3V

The continuation  of removing mem_zero over CCharacterCore.

I have tested the server in a Windows VM -> no crash

## Checklist

- [x] Tested the change ingame
- [ ] Provided screenshots if it is a visual change
- [ ] Tested in combination with possibly related configuration options
- [ ] Written a unit test if it works standalone, system.c especially
- [x] Considered possible null pointers and out of bounds array indexing
- [x] Changed no physics that affect existing maps
- [ ] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional)


Co-authored-by: c0d3d3v <c0d3d3v@mag-keinen-spam.de>
2022-05-27 23:08:53 +00:00
c0d3d3v 04f1bbf59f
reintroduce shotgun bug 2022-05-28 00:58:33 +02:00
trml 85e86772b2 Don't keep track of characters in the predicted gameworld that are not in the snapshot and require pred characters to be alive 2022-05-28 00:07:31 +02:00
bors[bot] 59acac221c
Merge #5254 #5257
5254: Fix ingame menu button behavior when holding mouse button r=def- a=Robyt3

Fixes the following behavior:

1. Player is ingame and the ingame menu is opened with Esc
2. A mouse button is held down on one of the ingame menu buttons (e.g. the spectate button)
3. The ingame menu is closed without moving the mouse away from the button
4. The mouse button is released while ingame
5. The menu is opened again
    - Current behavior: The hovered button is immediately activated, as soon as the menu opens, due to the released mouse state being handled as a click.
    - Fixed behavior: The button is not activated. Instead another call to `FinishCheck` is added so it's also called when the menu is not active, to clear the active UI item in that case.

As well as the following:

1. The menu is closed while the mouse cursor is hovering over a button.
2. The mouse button is pressed and held while the menu is closed.
3. The menu is opened again.
   - Current behavior: The menu button is already held down and when the player releases the mouse button it will immediately be activated.
   - Fixed behavior: The button is not activated immediately, by clearing the hot item and next hot item variables in `FinishCheck`.

The latter behavior can still occur when entering the editor instead of closing the ingame menu.

Closes #3560. Closes #5229.

The first two commits are identical to upstream https://github.com/teeworlds/teeworlds/pull/3158, where those issues also exist. The last commit adapts upstream behavior so buttons can only become hot when the mouse is not pressed.

## Checklist

- [X] Tested the change ingame
- [ ] Provided screenshots if it is a visual change
- [ ] Tested in combination with possibly related configuration options
- [ ] Written a unit test if it works standalone, system.c especially
- [ ] Considered possible null pointers and out of bounds array indexing
- [ ] Changed no physics that affect existing maps
- [ ] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional)


5257: Refactoring: Move CMenus::UseMouseButtons to CUI::SetEnabled, extract CRenderTools::RenderCursor r=def- a=Robyt3

Adopt changes from upstream.

## Checklist

- [X] Tested the change ingame
- [ ] Provided screenshots if it is a visual change
- [ ] Tested in combination with possibly related configuration options
- [ ] Written a unit test if it works standalone, system.c especially
- [ ] Considered possible null pointers and out of bounds array indexing
- [ ] Changed no physics that affect existing maps
- [ ] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional)


Co-authored-by: Robert Müller <robytemueller@gmail.com>
2022-05-27 18:37:17 +00:00
bors[bot] 862faa255a
Merge #5256
5256: Use double for traffic calculations r=def- a=Jupeyy

fixes #5207

Not going to rewrite rn since it relies on normilization of the time.
Hope this is enough, floats probs struggle with time_freq and time differences being so huge

## Checklist

- [ ] Tested the change ingame
- [ ] Provided screenshots if it is a visual change
- [ ] Tested in combination with possibly related configuration options
- [ ] Written a unit test if it works standalone, system.c especially
- [ ] Considered possible null pointers and out of bounds array indexing
- [ ] Changed no physics that affect existing maps
- [ ] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional)


Co-authored-by: Jupeyy <jupjopjap@gmail.com>
2022-05-27 18:19:38 +00:00
Robert Müller fccfbd5b70 Extract CRenderTools::RenderCursor 2022-05-27 19:43:12 +02:00
Robert Müller caa23bcfdd Move CMenus::UseMouseButtons to CUI::SetEnabled 2022-05-27 19:43:12 +02:00
Jupeyy d4b1bec6fe Use double for traffic calculations 2022-05-27 19:40:27 +02:00
c0d3d3v 55671e483a
fix windows server crash on client spawn 2022-05-27 19:21:43 +02:00
Robert Müller 31930951f0 Only allow buttons to be become hot while the mouse is not pressed 2022-05-27 19:07:56 +02:00
Robert Müller 910f01cbf2 Fix ingame menu buttons when mouse is held ingame and released in menu 2022-05-27 19:07:56 +02:00
Jupeyy d7cdc14819 Don't ever skip any frame 2022-05-27 17:54:58 +02:00
Robert Müller a0a0fa1322 Fix ingame menu buttons when mouse is held and released ingame 2022-05-27 17:45:30 +02:00
Robert Müller 6a72c5c38b Fix clang-analyzer-cplusplus.NewDelete (Use of memory after it is freed) 2022-05-27 16:41:14 +02:00
Robert Müller a2465605df Remove base/tl/range.h 2022-05-27 16:36:40 +02:00
Robert Müller f9d49bd53e Remove base/tl/allocator.h 2022-05-27 16:36:40 +02:00
Robert Müller 47098daa42 Remove base/tl/algorithm.h 2022-05-27 16:36:40 +02:00
Robert Müller ca309d6ef8 Remove base/tl/array.h 2022-05-27 16:36:39 +02:00
Robert Müller 0c69495522 Use std::vector instead of array in editor 2022-05-27 16:36:39 +02:00
Robert Müller 3f8fb732a3 Use std::vector<CKey> instead of array 2022-05-27 16:31:18 +02:00
Robert Müller c6e195a399 Use std::vector<CNameBan> instead of array 2022-05-27 16:31:18 +02:00
Robert Müller 4a023342b7 Use std::vector<CName> instead of array, adjust variable name 2022-05-27 16:31:18 +02:00
Robert Müller ce54a0d075 Use std::vector<CMenuImage> instead of array 2022-05-27 16:31:18 +02:00
Robert Müller 24ad383211 Use std::vector<CSourceQueueEntry> instead of array 2022-05-27 16:31:18 +02:00
Robert Müller d3eb9d6fe7 Use std::vector<std::string> instead of array 2022-05-27 16:31:18 +02:00
Robert Müller 0f097a0490 Use std::vector<char *> instead of array in gamecontext 2022-05-27 12:13:30 +02:00
Robert Müller 80103888ea Use std::vector<char *> instead of array in config_store 2022-05-27 12:13:30 +02:00
Robert Müller b9c52f7e31 Use SetActiveItem(nullptr) instead of SetActiveItem(0) 2022-05-27 11:59:14 +02:00
Robert Müller 2b02bd449b Prevent lock of UI
Co-authored-by: oy <tom_adams@web.de>
2022-05-27 11:53:05 +02:00
bors[bot] 7348bf4d56
Merge #5246
5246: Use std::vector instead of sorted_array, remove base/tl/sorted_array.h r=def- a=heinrich5991

This replaces all usages of `sorted_array` with `std::vector`. This requires the following general changes:

- `add_unsorted` is replaced with `push_back`.
- `add` is replaced with `push_back` and subsequent `sort` or `stable_sort` must be ensured.
  - In some cases, immediately sorting the entire list after adding an item was unavoidable. Previously items were added at the correct position, which was O(N) because all items after the inserted one had to be moved in any case.
- `sort_range` is replaced with `sort` or `stable_sort`.
- `size` returns a `size_t` instead of `int`, so to fix sign comparison warnings, casts are added where necessary or types of loop variables are changed to `size_t` where possible. For-each loops are also used where possible / where required by clang-tidy.
- `find_binary` is replaced with `std::equal_range`. This can only find items of the same type, so some wrappers, that only have the relevant fields set, need to be created for searching.

In terms of behavior, this should not change anything, except maybe `CLocalizationDatabase` for the better. As far as I understand it, at lot of the code there was not doing anything. It assumes that binary search can return a range of multiple entries, but the equality/comparison function is based on hash and context hash. This means that any item in this range will match the given hash and context hash already, so all of the following checks are redundant. I changed this to first do a lookup with the hash and context hash and if that fails do another lookup with the default context hash.

I have also already replaced `base/tl/array.h` with `std::vector`, removing all of `base/tl` except `threading.h`. I'll make a separate PR later because this caused a lot more changes especially in the editor that I first want to test and review myself.

Naming of `array`/`sorted_array`/`std::vector` variables was rather inconsistent (sometimes prefix `a` or `l` is used), so ~~I chose to not use any prefix for all new `std::vector`s~~ heinrich5991 left them as-is.

## Checklist

- [X] Tested the change ingame
- [ ] Provided screenshots if it is a visual change
- [ ] Tested in combination with possibly related configuration options
- [ ] Written a unit test if it works standalone, system.c especially
- [ ] Considered possible null pointers and out of bounds array indexing
- [ ] Changed no physics that affect existing maps
- [ ] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional)

Co-authored-by: Robert Müller <robytemueller@gmail.com>
2022-05-27 08:51:55 +00:00
bors[bot] 61c81fa0f2
Merge #5240
5240: Fix crash when graphics init failed (fixes #5237) r=heinrich5991 a=def-

## Checklist

- [x] Tested the change ingame
- [ ] Provided screenshots if it is a visual change
- [ ] Tested in combination with possibly related configuration options
- [ ] Written a unit test if it works standalone, system.c especially
- [ ] Considered possible null pointers and out of bounds array indexing
- [ ] Changed no physics that affect existing maps
- [ ] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional)


Co-authored-by: Dennis Felsing <dennis@felsin9.de>
2022-05-26 22:17:15 +00:00
Robert Müller de1de5e7bd Use emplace_back for CFriendItem 2022-05-27 00:14:07 +02:00
Robert Müller 476af1286d Use emplace_back for CCommand, fix member variable names 2022-05-27 00:13:26 +02:00
Robert Müller d0b5d096f5 Use emplace_back for CString 2022-05-27 00:03:13 +02:00
Robert Müller bea74f3d4f Remove base/tl/sorted_array.h 2022-05-27 00:03:13 +02:00
Robert Müller a76cdb254e Use std::vector<CDownloadSkin> instead of sorted_array 2022-05-27 00:03:13 +02:00
Robert Müller 0859da7e6a Use std::vector<CSkin> instead of sorted_array 2022-05-27 00:03:13 +02:00
Robert Müller ae8f5e87c7 Use std::vector<CNameIndexed> instead of sorted_array 2022-05-27 00:03:13 +02:00
Robert Müller 5cc76d286f Use std::vector<CGhostItem> instead of sorted_array 2022-05-27 00:03:13 +02:00
Robert Müller b24f318450 Use std::vector<CFriendItem> instead of sorted_array 2022-05-27 00:03:13 +02:00
Robert Müller de23bf912d Use std::vector<CString> instead of sorted_array, improve string search 2022-05-27 00:03:13 +02:00
Robert Müller 359093cab8 Use std::vector<CDemoItem> instead of sorted_array 2022-05-27 00:03:13 +02:00
Robert Müller 96c97d5bb7 Use std::vector for assets menu list items instead of sorted_array 2022-05-26 23:49:30 +02:00
Robert Müller 2ea0c49f8b Use std::vector<CCommand> instead of sorted_array 2022-05-26 23:49:30 +02:00
Robert Müller 662cb58132 Use std::vector<CFilelistItem> instead of sorted_array 2022-05-26 23:49:30 +02:00
Robert Müller 0032f6f2c2 Use std::vector<CCountryFlag> instead of sorted_array 2022-05-26 23:49:27 +02:00
Robert Müller 295c395c8c Use std::vector<CUISkin> instead of sorted_array 2022-05-26 23:47:37 +02:00
Robert Müller 97dd8105fd Use std::vector<CLanguage> instead of sorted_array 2022-05-26 23:42:06 +02:00
Robert Müller 9dece943e7 Use std::vector<CMapNameItem> instead of sorted_array 2022-05-26 23:42:06 +02:00
Robert Müller 9b2f0fe3c4 Remove unused includes of base/tl/array.h and sorted_array.h 2022-05-26 23:42:06 +02:00
bors[bot] 0648f22d7a
Merge #5236
5236: Don't enable colors when stdout is redirected to a file (fixes #5233) r=heinrich5991 a=def-

<!-- What is the motivation for the changes of this pull request -->

## Checklist

- [x] Tested the change ingame
- [ ] Provided screenshots if it is a visual change
- [ ] Tested in combination with possibly related configuration options
- [ ] Written a unit test if it works standalone, system.c especially
- [ ] Considered possible null pointers and out of bounds array indexing
- [ ] Changed no physics that affect existing maps
- [ ] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional)


Co-authored-by: Dennis Felsing <dennis@felsin9.de>
2022-05-26 21:24:38 +00:00
bors[bot] e63b8e2bb5
Merge #5183
5183: render allways the nameplate of a specchar (or the real player) r=def- a=C0D3D3V

fokkonaut uses spec chars in addition to normal players in his mod, so the names should also be displayed in addition to the player name

## Checklist

- [x] Tested the change ingame
- [ ] Provided screenshots if it is a visual change
- [ ] Tested in combination with possibly related configuration options
- [ ] Written a unit test if it works standalone, system.c especially
- [x] Considered possible null pointers and out of bounds array indexing
- [x] Changed no physics that affect existing maps
- [ ] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional)


Co-authored-by: c0d3d3v <c0d3d3v@mag-keinen-spam.de>
2022-05-26 21:06:19 +00:00
bors[bot] 74b94b3e71
Merge #5245
5245: disable dragger beams soon, not only every 150ms r=def- a=C0D3D3V

The check whether a dragger is active, I somehow forgot in the dragger beams. Sorry! Actually, I should have noticed this during testing. But when I tested Fall into the Future today, it seemed strange to me (already at the first part). I should have noticed it when I tested it. I have compared that in any case with 15.9.1 and looked at the code again and saw that there the check is made every tick.


## Checklist

- [x] Tested the change ingame
- [ ] Provided screenshots if it is a visual change
- [ ] Tested in combination with possibly related configuration options
- [ ] Written a unit test if it works standalone, system.c especially
- [x] Considered possible null pointers and out of bounds array indexing
- [x] Changed no physics that affect existing maps
- [x] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional)


Co-authored-by: c0d3d3v <c0d3d3v@mag-keinen-spam.de>
2022-05-26 20:47:48 +00:00
c0d3d3v 62c99515d5
disable dragger beams soon, not only every 150ms 2022-05-26 19:49:51 +02:00
trml 2402edcb8a Remove predicted character from gameworld before calling base class destructor 2022-05-26 19:08:46 +02:00
Dennis Felsing ac2657bfce Fix crash when graphics init failed (fixes #5237) 2022-05-26 13:04:39 +02:00
Dennis Felsing d2e9a78483 Don't enable colors when stdout is redirected to a file (fixes #5233) 2022-05-26 12:32:24 +02:00
bors[bot] 3b81157013
Merge #5231
5231: Fix windows crash r=def- a=C0D3D3V

Fixes #5226

I tested it in a Windows VM.
`@sjrc6` is it correct that `TempCore` is this way zero initialized, can you check that maybe in the debugger? I do not want to change the behaviour, even tho the core is read in two lines later with `TempCore.ReadCharacter(pCharacter);`

## Checklist

- [x] Tested the change ingame
- [ ] Provided screenshots if it is a visual change
- [ ] Tested in combination with possibly related configuration options
- [ ] Written a unit test if it works standalone, system.c especially
- [x] Considered possible null pointers and out of bounds array indexing
- [x] Changed no physics that affect existing maps
- [ ] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional)


Co-authored-by: c0d3d3v <c0d3d3v@mag-keinen-spam.de>
2022-05-26 08:57:22 +00:00
c0d3d3v 62cad6ba51
use value initialization in Evolve lambda 2022-05-26 08:26:27 +02:00
c0d3d3v cf03ada052
revert to SetHookedPlayer in ReadCharacterCore 2022-05-26 07:45:34 +02:00
Dennis Felsing 68bcd21eff asan+ubsan clean 2022-05-26 01:22:14 +02:00
Dennis Felsing 604142da3a Try other fix for tautological 2022-05-26 00:37:33 +02:00
Dennis Felsing 3a231b07e1 Fix new Obj-C deprecation warnings
src/macos/server.mm:74:29: warning: 'NSOKButton' is deprecated: first deprecated in macOS 10.10 [-Wdeprecated-declarations]
                        if([openDlg runModal] != NSOKButton)
                                                 ^~~~~~~~~~
                                                 NSModalResponseOK
/Library/Developer/CommandLineTools/SDKs/MacOSX12.3.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSPanel.h:51:5: note: 'NSOKButton' has been explicitly marked deprecated here
    NSOKButton API_DEPRECATED_WITH_REPLACEMENT("NSModalResponseOK", macos(10.0,10.10)) = NSModalResponseOK,
    ^
src/macos/server.mm:90:14: warning: 'NSTitledWindowMask' is deprecated: first deprecated in macOS 10.12 [-Wdeprecated-declarations]
                styleMask: NSTitledWindowMask
                           ^~~~~~~~~~~~~~~~~~
                           NSWindowStyleMaskTitled
/Library/Developer/CommandLineTools/SDKs/MacOSX12.3.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSWindow.h:885:32: note: 'NSTitledWindowMask' has been explicitly marked deprecated here
static const NSWindowStyleMask NSTitledWindowMask API_DEPRECATED_WITH_REPLACEMENT("NSWindowStyleMaskTitled", macos(10.0,10.12)) = NSWindowStyleMaskTitled;
                               ^
src/macos/server.mm:91:5: warning: 'NSClosableWindowMask' is deprecated: first deprecated in macOS 10.12 [-Wdeprecated-declarations]
                | NSClosableWindowMask
                  ^~~~~~~~~~~~~~~~~~~~
                  NSWindowStyleMaskClosable
/Library/Developer/CommandLineTools/SDKs/MacOSX12.3.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSWindow.h:886:32: note: 'NSClosableWindowMask' has been explicitly marked deprecated here
static const NSWindowStyleMask NSClosableWindowMask API_DEPRECATED_WITH_REPLACEMENT("NSWindowStyleMaskClosable", macos(10.0,10.12)) = NSWindowStyleMaskClosable;
                               ^
src/macos/server.mm:92:5: warning: 'NSMiniaturizableWindowMask' is deprecated: first deprecated in macOS 10.12 [-Wdeprecated-declarations]
                | NSMiniaturizableWindowMask
                  ^~~~~~~~~~~~~~~~~~~~~~~~~~
                  NSWindowStyleMaskMiniaturizable
/Library/Developer/CommandLineTools/SDKs/MacOSX12.3.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSWindow.h:887:32: note: 'NSMiniaturizableWindowMask' has been explicitly marked deprecated here
static const NSWindowStyleMask NSMiniaturizableWindowMask API_DEPRECATED_WITH_REPLACEMENT("NSWindowStyleMaskMiniaturizable", macos(10.0,10.12)) = NSWindowStyleMaskMiniaturizable;
                               ^
4 warnings generated.
2022-05-26 00:37:33 +02:00
Zwelf 93ece6f090 Only record swap in teehistorian if active 2022-05-25 19:35:37 +02:00
bors[bot] 1ca4220adf
Merge #5222
5222: Fix crash because of hooks on non ddnet server r=def- a=C0D3D3V

Reported by `@Ясно` Понятно 
on non ddnet server, this code gets run to detect strong-weak ids:
6a5673aa04/src/game/client/gameclient.cpp (L2540-L2541)
which causes a crash because this CCharacterCore is not bound to a gameworld 
the check for m_pWorld failed because m_pWorld is fill of random data
ac15943e85/src/game/gamecore.cpp (L625)
So I would also like to initialize it with a nullpointer 

## Checklist

- [x] Tested the change ingame
- [ ] Provided screenshots if it is a visual change
- [ ] Tested in combination with possibly related configuration options
- [ ] Written a unit test if it works standalone, system.c especially
- [x] Considered possible null pointers and out of bounds array indexing
- [x] Changed no physics that affect existing maps
- [x] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional)


Co-authored-by: c0d3d3v <c0d3d3v@mag-keinen-spam.de>
2022-05-25 15:51:43 +00:00
c0d3d3v a5cf35576d
init m_pWorld with nullptr 2022-05-25 17:42:44 +02:00
c0d3d3v 6a5673aa04
fix crash on non ddnet server if hook is in view 2022-05-25 17:33:59 +02:00
bors[bot] ac15943e85
Merge #5218
5218: do not snap dragger beam, if the target is out of reach r=def- a=C0D3D3V

fixes #5216

## Checklist

- [x] Tested the change ingame
- [ ] Provided screenshots if it is a visual change
- [ ] Tested in combination with possibly related configuration options
- [ ] Written a unit test if it works standalone, system.c especially
- [x] Considered possible null pointers and out of bounds array indexing
- [x] Changed no physics that affect existing maps
- [x] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional)


Co-authored-by: c0d3d3v <c0d3d3v@mag-keinen-spam.de>
2022-05-25 15:08:27 +00:00
bors[bot] 00c167148d
Merge #5194
5194: Revert Ellipsis (alternative to #5193) r=heinrich5991 a=def-

<!-- What is the motivation for the changes of this pull request -->

## Checklist

- [x] Tested the change ingame
- [ ] Provided screenshots if it is a visual change
- [ ] Tested in combination with possibly related configuration options
- [ ] Written a unit test if it works standalone, system.c especially
- [ ] Considered possible null pointers and out of bounds array indexing
- [ ] Changed no physics that affect existing maps
- [ ] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional)


Co-authored-by: def <dennis@felsin9.de>
2022-05-25 14:46:16 +00:00
c0d3d3v 82a0354f97
do not dragger beam snap, if the target is out of reach 2022-05-25 16:43:05 +02:00
Dennis Felsing 049a249944 Crash fix (fixes #5217) 2022-05-25 16:28:00 +02:00
Chairn 0076edf499 Remove useless setting 2022-05-25 00:12:38 +02:00
bors[bot] 03f95108b4
Merge #5063
5063: Reworked Draggers and Turrets AND show always hooks if they are in the field of view  r=def- a=C0D3D3V

Fixes #3622, #4723 #4798 and #5054

Here you can find a comparison video with 16.0.3: https://youtu.be/bYwLB1cEMI8

This now also includes the changes from https://github.com/ddnet/ddnet/pull/4980 
So please also see my monologue here: https://github.com/ddnet/ddnet/pull/4980

Physic that got changed by this PR:
- Solo players are not included in the calculation of the next team players to the dragger/turrets. This does not affect any map.
- Turrets get switched correctly if players are solo
- Plasma bullets fired by turrets on solo player only explode for solo players and the other way around (except if they unsolo)
- Plasma bullets can no longer be intercepted by other teams 
- Turrets can shot now independently at the speed of sv_plasma_per_sec for  every team and every solo player


This should be tested by some more players before it get merged!

This reduces the use of snap id's tested here: https://youtu.be/G3nVtdH0--Q 
from 16000 to 69
test with the new dragger: https://youtu.be/mzNrDHP7HQs
I did not add the terminal of the server because you basically see no change in the used snap ids 
The videos are with cl_predict off

Comparison of the new turrets: https://streamable.com/8us8lk
left old turrets, right the new ones

We should delete ranks on (that where made after 13 Jun 2019):
https://ddnet.tw/maps/Increase-32-Your-32-Speed
https://ddnet.tw/maps/Fall-32-into-32-the-32-Future
https://ddnet.tw/maps/turboSeks

## Checklist

- [x] Tested the change ingame
- [x] Provided screenshots if it is a visual change
- [ ] Tested in combination with possibly related configuration options
- [ ] Written a unit test if it works standalone, system.c especially
- [x] Considered possible null pointers and out of bounds array indexing
- [only on 3 maps] Changed no physics that affect existing maps
- [x] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional)


Co-authored-by: c0d3d3v <c0d3d3v@mag-keinen-spam.de>
2022-05-24 18:26:08 +00:00
bors[bot] c929ef44e9
Merge #5204
5204: Fix pos1 only scrolling up one page in console r=heinrich5991 a=Robyt3

Holding down the pos1 key will still make the console text flash though.

Fixing that would require to first calculate the total number of pages in a separate pass before rendering the current page.

## Checklist

- [X] Tested the change ingame
- [ ] Provided screenshots if it is a visual change
- [ ] Tested in combination with possibly related configuration options
- [ ] Written a unit test if it works standalone, system.c especially
- [ ] Considered possible null pointers and out of bounds array indexing
- [ ] Changed no physics that affect existing maps
- [ ] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional)


Co-authored-by: Robert Müller <robytemueller@gmail.com>
2022-05-23 18:13:43 +00:00
Robert Müller 0c518baef4 Fix pos1 only scrolling up one page in console 2022-05-23 19:24:56 +02:00
heinrich5991 c93658f929 Make sure we don't accidentally initialize libcurl in a thread 2022-05-23 17:21:27 +02:00
heinrich5991 76ed324b66 Call HttpInit in server
Otherwise `curl_global_init` would be called from the first
`curl_easy_init`, but `curl_global_init` isn't threadsafe.

Fixes #5195.
2022-05-23 17:20:45 +02:00
c0d3d3v bf2d3d59ff
do not render freezebar if you are not freezed 2022-05-23 12:12:46 +02:00
bors[bot] 064dc2c0c5
Merge #5196
5196: Break early out of loop r=heinrich5991 a=ChillerDragon



Co-authored-by: ChillerDragon <ChillerDragon@gmail.com>
2022-05-23 07:31:34 +00:00
bors[bot] 847454f3be
Merge #5189
5189: Fix 0 byte malloc in register.cpp (fixes #5187) r=heinrich5991 a=def-

<!-- What is the motivation for the changes of this pull request -->

## Checklist

- [ ] Tested the change ingame
- [ ] Provided screenshots if it is a visual change
- [ ] Tested in combination with possibly related configuration options
- [ ] Written a unit test if it works standalone, system.c especially
- [ ] Considered possible null pointers and out of bounds array indexing
- [ ] Changed no physics that affect existing maps
- [ ] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional)


Co-authored-by: def <dennis@felsin9.de>
2022-05-23 07:15:54 +00:00
ChillerDragon e54f0ee97b Break early out of loop 2022-05-23 08:32:00 +02:00
def 76efcc616b Fix 0 byte malloc in register.cpp (fixes #5187) 2022-05-23 00:24:22 +02:00
def 0c8bf5c3aa Revert "Ellipsis at end in scoreboard and hud"
This reverts commit f278399bd1.
2022-05-22 23:04:32 +02:00
def 590eb2c5d1 Revert "Render full text when it still fits"
This reverts commit c4bcf3d628.
2022-05-22 23:01:00 +02:00
c0d3d3v 60a95c6e4e
mark virtual methods in dragger_beam as overwritten 2022-05-22 22:01:07 +02:00
c0d3d3v 5175734432
Iterate over m_AttachedPlayers instead of MAX_CLIENTS 2022-05-22 21:59:52 +02:00
c0d3d3v f07d773492
Add a set of Players that are attached to a Tee 2022-05-22 21:59:51 +02:00
c0d3d3v 71c9a49776
revert to double explotion plasma bullets if the bullet hits obstacle
and player at the same time
2022-05-22 21:59:51 +02:00
c0d3d3v 9180fa70e4
revert change of dragger range 2022-05-22 21:59:50 +02:00
c0d3d3v 8d644d0638
Snap characters also when a hook is attached to them that is in the field of view 2022-05-22 21:59:49 +02:00
c0d3d3v c251b3d37c
fix server options in comments 2022-05-22 21:59:49 +02:00
c0d3d3v 8fc34ae7b9
Add Comments with Specifications to Turrets and Dragger
- Make Plasma Bullets explode only once if they hit a character and a
  obstacle
- Make turrets fire speed independend from teams and solo players
- Make draggers keep dragging the same tee, also if a closer tee exist
2022-05-22 21:59:48 +02:00
c0d3d3v ab37f95bb4
Do not clip players with hook in the field of view 2022-05-22 21:59:48 +02:00
c0d3d3v d64445d983
Rework Turrets
- Make the code look similar to the code of the draggers
- Make correct switching for solo players, as described here: https://github.com/ddnet/ddnet/pull/4980
- Remove NetworkClipping Bug
- Added intentionally the "Feature" to only explode at one tee
- Make plasma bullets only explode for solo tees if they are solo, not
  for the rest of the team
2022-05-22 21:59:47 +02:00
c0d3d3v 917d12e26c
use TeamMask() instead of Teams()->TeamMask(...) in projectile.cpp and laser.cpp 2022-05-22 21:59:47 +02:00
c0d3d3v 459a845373
use TeamMask() instead of Teams()->TeamMask(...) 2022-05-22 21:59:46 +02:00
c0d3d3v b8cbd8120c
Add ProximityRadius of a tee to the dragger range 2022-05-22 21:59:46 +02:00
c0d3d3v b5166f4048
Simplification of NetworkClippedLine 2022-05-22 21:59:45 +02:00
c0d3d3v 0a6902acae
Optimization of the closest_point_on_line function 2022-05-22 21:59:44 +02:00
c0d3d3v 87893ceca7
Move MapScreenToGroup from 3 classes to render.cpp; Rename MapscreenToWorld to MapScreenToWorld 2022-05-22 21:59:43 +02:00
c0d3d3v b751a2e098
Reworked Draggers 2022-05-22 21:59:33 +02:00
bors[bot] 344eeaf8aa
Merge #5192
5192: Add missing nanosecond conversions r=def- a=Jupeyy

fixes #5191

## Checklist

- [ ] Tested the change ingame
- [ ] Provided screenshots if it is a visual change
- [ ] Tested in combination with possibly related configuration options
- [ ] Written a unit test if it works standalone, system.c especially
- [ ] Considered possible null pointers and out of bounds array indexing
- [ ] Changed no physics that affect existing maps
- [ ] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional)


Co-authored-by: Jupeyy <jupjopjap@gmail.com>
2022-05-22 18:27:57 +00:00
bors[bot] 85ce4fc0a8
Merge #5185
5185:  Fix pickups moving on their own (fixes #5137) r=C0D3D3V a=def-

Supersedes #5181 

Objects should be initialized fully, otherwise they are super easy to misuse and get weird undefined behavior that happens rarely.

## Checklist

- [x] Tested the change ingame
- [ ] Provided screenshots if it is a visual change
- [ ] Tested in combination with possibly related configuration options
- [ ] Written a unit test if it works standalone, system.c especially
- [ ] Considered possible null pointers and out of bounds array indexing
- [ ] Changed no physics that affect existing maps
- [ ] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional)


Co-authored-by: def <dennis@felsin9.de>
2022-05-22 14:32:21 +00:00
Jupeyy 2677949e58 Add missing nanosecond conversions 2022-05-22 16:08:11 +02:00
Jupeyy 1e6df0c7a9 Lower max allowed FSAA on OpenGL 2022-05-22 14:42:21 +02:00
def 3116494f6e Fix some uninitialized variables, found with valgrind 2022-05-22 12:18:49 +02:00
def c4377bb7d9 Always initialize vec2/3/4
Because no tools can detect it uninitialized well, tried Memory
Sanitizer (needs all libs including libc++ compiled with it), valgrind
(only detects in LTO build), compiler warnings. Might be related to
unions.
2022-05-22 12:18:32 +02:00
bors[bot] 1738b0d51b
Merge #5032
5032: Make input handling teehistorian friendly r=def- a=Zwelf

Makes input handling more reproducible during respawn. Still WIP, because I haven't tested this particular patch (only a different one with the same effect).

## Checklist

- [x] Tested the change ingame
- [ ] Provided screenshots if it is a visual change
- [x] Tested in combination with possibly related configuration options
  - [x] swap
  - [x] using timeout protection
  - [x] reconnecting
  - [x] respawning
  - [x] chat keeps movement
  - [x] pause keeps movement
- [x] Written a unit test if it works standalone, system.c especially
- [x] Considered possible null pointers and out of bounds array indexing
- [x] Changed no physics that affect existing maps
- [x] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional)


Co-authored-by: Zwelf <zwelf@strct.cc>
2022-05-22 09:57:44 +00:00
Zwelf 4a39c846c3 Fix comments 2022-05-22 10:39:18 +02:00
bors[bot] 38c8b5b019
Merge #5182
5182: Fix chat prediction r=def- a=C0D3D3V

reported by nori 
https://cdn.discordapp.com/attachments/293493549758939136/977531792389177364/recording.mp4

I have somehow made the condition wrong xD although I had written correctly in the PR what it should do.

also i noticed that teeworlds does not allow you to hold the hook while chatting, but we have allowed this since 2014....

## Checklist

- [x] Tested the change ingame
- [ ] Provided screenshots if it is a visual change
- [ ] Tested in combination with possibly related configuration options
- [ ] Written a unit test if it works standalone, system.c especially
- [x] Considered possible null pointers and out of bounds array indexing
- [x] Changed no physics that affect existing maps
- [x] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional)


Co-authored-by: c0d3d3v <c0d3d3v@mag-keinen-spam.de>
2022-05-21 20:50:20 +00:00
Zwelf bc17b29100 Simplify chat check after rearranging player input 2022-05-21 21:40:11 +02:00
Zwelf 44e94ee75a Keep last input on respawn when chatting or pausing 2022-05-21 21:37:17 +02:00
Zwelf 86f57289c6 Record player switch in teehistorian 2022-05-21 21:37:17 +02:00
Zwelf 416af01e0a Sync chat/pause input with weapon and movement input 2022-05-21 21:37:15 +02:00
Zwelf 38c7a921d5 Already use second input 2022-05-21 21:34:30 +02:00
Zwelf b99d8dc259 Always apply last sent input
Makes teehistorian during spawn more reproduceable.
Currently during respawn the first applied input doesn't get recorded.
Always appliying the last sent input fixes this.
2022-05-21 21:34:30 +02:00
Zwelf 5e4722e8ba Bump teehistorian minor version due to different input handling 2022-05-21 21:34:30 +02:00
c0d3d3v ad06a05d7b
render allways the nameplate of a specchar 2022-05-21 19:22:50 +02:00
c0d3d3v 71669e3427
release hook in mods that do not allow inputs while chatting 2022-05-21 18:52:14 +02:00
c0d3d3v 2cb47583b8
fix condition of BugDDRaceInput, do only reset innputs on non ddnet mods 2022-05-21 18:17:10 +02:00
def c4bcf3d628 Render full text when it still fits 2022-05-21 12:12:00 +02:00
def 38b2a8d592 Add loglevel config (fixes #5178, fixes #5174) 2022-05-21 12:06:54 +02:00
def 2818c6e17c Fix HUD rebase (thanks to bencie for report) 2022-05-21 11:37:46 +02:00
bors[bot] a04079324d
Merge #5173
5173: revert to ground jump at the same tick r=def- a=C0D3D3V

Sorry I did make a mistake in #5172  I tricked myself, the code block I moved back down below the jumping physic (where it original was):
79f377b133/src/game/gamecore.cpp (L216-L221)
did not prevent instant ground jump, i somehow thought wrong and maybe combined it wrong with my new condition.

i tested everything again with 15.9.1 (and 16.0.3) and looked at the old code and noticed that it was allowed to make a ground jump directly in the same tick as you have contact with the ground. Therefore I revert this herewith (by fixing the condition)

xD is really a tricky thing to make changes at the gamecore, and keeping everything as it should be
Sorry!!

## Checklist

- [x] Tested the change ingame
- [ ] Provided screenshots if it is a visual change
- [ ] Tested in combination with possibly related configuration options
- [ ] Written a unit test if it works standalone, system.c especially
- [x] Considered possible null pointers and out of bounds array indexing
- [x] Changed no physics that affect existing maps
- [x] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional)


Co-authored-by: c0d3d3v <c0d3d3v@mag-keinen-spam.de>
2022-05-20 21:57:26 +00:00
c0d3d3v 82ef97f549
revert to ground jump at the same tick 2022-05-20 23:05:16 +02:00
bors[bot] 79f377b133
Merge #5171
5171: Extract CConsole::TraverseChain, fix toggle with multiple chains r=def- a=Robyt3

Extract `CConsole::TraverseChain` (https://github.com/teeworlds/teeworlds/pull/2933).

Fix `toggle`/`+toggle` commands with commands which are chained multiple times.

## Checklist

- [X] Tested the change ingame
- [ ] Provided screenshots if it is a visual change
- [ ] Tested in combination with possibly related configuration options
- [ ] Written a unit test if it works standalone, system.c especially
- [ ] Considered possible null pointers and out of bounds array indexing
- [ ] Changed no physics that affect existing maps
- [ ] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional)


Co-authored-by: Robert Müller <robytemueller@gmail.com>
2022-05-20 20:25:09 +00:00
c0d3d3v 9c97995679
Fix Spezial Jumps for players with 0, 1 and -1 Jumps
- Add some more documentation to the code
- reverted early ground jump to keep physics
2022-05-20 21:37:05 +02:00
Robert Müller fade4d2984 Extract CConsole::TraverseChain, fix toggle with multiple chains 2022-05-20 19:41:31 +02:00
bors[bot] e7140caf8b
Merge #5064
5064: Add HTTP masterserver registering and HTTP masterserver r=def- a=heinrich5991

Registering
-----------

The idea is that game servers push their server info to the
masterservers every 15 seconds or when the server info changes, but not
more than once per second.

The game servers do not support the old registering protocol anymore,
the backward compatibility is handled by the masterserver.

The register call is a HTTP POST to a URL like
`https://master1.ddnet.tw/ddnet/15/register` and looks like this:
```http
POST /ddnet/15/register HTTP/1.1
Address: tw-0.6+udp://connecting-address.invalid:8303
Secret: 81fa3955-6f83-4290-818d-31c0906b1118
Challenge-Secret: 81fa3955-6f83-4290-818d-31c0906b1118:tw0.6/ipv6
Info-Serial: 0

{
	"max_clients": 64,
	"max_players": 64,
	"passworded": false,
	"game_type": "TestDDraceNetwork",
	"name": "My DDNet server",
	"map": {
		"name": "dm1",
		"sha256": "0b0c481d77519c32fbe85624ef16ec0fa9991aec7367ad538bd280f28d8c26cf",
		"size": 5805
	},
	"version": "0.6.4, 16.0.3",
	"clients": []
}
```

The `Address` header declares that the server wants to register itself as
a `tw-0.6+udp` server, i.e. a server speaking a Teeworlds-0.6-compatible
protocol.

The free-form `Secret` header is used as a server identity, the server
list will be deduplicated via this secret.

The free-form `Challenge-Secret` is sent back via UDP for a port forward
check.  This might have security implications as the masterserver can be
asked to send a UDP packet containing some user-controlled bytes. This
is somewhat mitigated by the fact that it can only go to an
attacker-controlled IP address.

The `Info-Serial` header is an integer field that should increase each
time the server info (in the body) changes. The masterserver uses that
field to ensure that it doesn't use old server infos.

The body is a free-form JSON object set by the game server. It should
contain certain keys in the correct form to be accepted by clients. The
body is optional if the masterserver already confirmed the reception of
the info with the given `Info-Serial`.

Not shown in this payload is the `Connless-Token` header that is used
for Teeworlds 0.7 style communication.

Also not shown is the `Challenge-Token` that should be included once the
server receives the challenge token via UDP.

The masterserver responds with a `200 OK` with a body like this:

```
{"status":"success"}
```

The `status` field can be `success` if the server was successfully
registered on the masterserver, `need_challenge` if the masterserver
wants the correct `Challenge-Token` header before the register process
is successful, `need_info` if the server sent an empty body but the
masterserver doesn't actually know the server info.

It can also be `error` if the request was malformed, only in this case
an HTTP status code except `200 OK` is sent.

Synchronization
---------------

The masterserver keeps state and outputs JSON files every second.

```json
{
	"servers": [
		{
			"addresses": [
				"tw-0.6+udp://127.0.0.1:8303",
				"tw-0.6+udp://[::1]:8303"
			],
			"info_serial": 0,
			"info": {
				"max_clients": 64,
				"max_players": 64,
				"passworded": false,
				"game_type": "TestDDraceNetwork",
				"name": "My DDNet server",
				"map": {
					"name": "dm1",
					"sha256": "0b0c481d77519c32fbe85624ef16ec0fa9991aec7367ad538bd280f28d8c26cf",
					"size": 5805
				},
				"version": "0.6.4, 16.0.3",
				"clients": []
			}
		}
	]
}
```

`servers.json` (or configured by `--out`) is a server list that is
compatible with DDNet 15.5+ clients. It is a JSON object containing a
single key `servers` with a list of game servers. Each game server is
represented by a JSON object with an `addresses` key containing a list
of all known addresses of the server and an `info` key containing the
free-form server info sent by the game server. The free-form `info` JSON
object re-encoded by the master server and thus canonicalized and
stripped of any whitespace characters outside strings.

```json
{
	"kind": "mastersrv",
	"now": 1816002,
	"secrets": {
		"tw-0.6+udp://127.0.0.1:8303": {
			"ping_time": 1811999,
			"secret": "42d8f991-f2fa-46e5-a9ae-ebcc93846feb"
		},
		"tw-0.6+udp://[::1]:8303": {
			"ping_time": 1811999,
			"secret": "42d8f991-f2fa-46e5-a9ae-ebcc93846feb"
		}
	},
	"servers": {
		"42d8f991-f2fa-46e5-a9ae-ebcc93846feb": {
			"info_serial": 0,
			"info": {
				"max_clients": 64,
				"max_players": 64,
				"passworded": false,
				"game_type": "TestDDraceNetwork",
				"name": "My DDNet server",
				"map": {
					"name": "dm1",
					"sha256": "0b0c481d77519c32fbe85624ef16ec0fa9991aec7367ad538bd280f28d8c26cf",
					"size": 5805
				},
				"version": "0.6.4, 16.0.3",
				"clients": []
			}
		}
	}
}
```

`--write-dump` outputs a JSON file compatible with `--read-dump-dir`,
this can be used to synchronize servers across different masterservers.
`--read-dump-dir` is also used to ingest servers from the backward
compatibility layer that pings each server for their server info using
the old protocol.

The `kind` field describe that this is `mastersrv` output and not from a
`backcompat`. This is used for prioritizing `mastersrv` information over
`backcompat` information.

The `now` field contains an integer describing the current time in
milliseconds relative an unspecified epoch that is fixed for each JSON
file. This is done instead of using the current time as the epoch for
better compression of non-changing data.

`secrets` is a map from each server address and to a JSON object
containing the last ping time (`ping_time`) in milliseconds relative to
the same epoch as before, and the server secret (`secret`) that is used
to unify server infos from different addresses of the same logical
server.

`servers` is a map from the aforementioned `secret`s to the
corresponding `info_serial` and `info`.

```json
[
	"tw-0.6+udp://127.0.0.1:8303",
	"tw-0.6+udp://[::1]:8303"
]
```

`--write-addresses` outputs a JSON file containing all addresses
corresponding to servers that are registered to HTTP masterservers. It
does not contain the servers that are obtained via backward
compatibility measures.

This file can be used by an old-style masterserver to also list
new-style servers without the game servers having to register there.

An implementation of this can be found at
https://github.com/heinrich5991/teeworlds/tree/mastersrv_6_backcompat
for Teeworlds 0.5/0.6 masterservers and at
https://github.com/heinrich5991/teeworlds/tree/mastersrv_7_backcompat
for Teeworlds 0.7 masterservers.

All these JSON files can be sent over the network in an efficient way
using https://github.com/heinrich5991/twmaster-collect. It establishes a
zstd-compressed TCP connection authenticated by a string token that is
sent in plain-text. It watches the specified file and transmits it every
time it changes. Due to the zstd-compression, the data sent over the
network is similar to the size of a diff.

Implementation
--------------

The masterserver implementation was done in Rust.

The current gameserver register implementation doesn't support more than
one masterserver for registering.

Co-authored-by: heinrich5991 <heinrich5991@gmail.com>
2022-05-20 17:01:20 +00:00
c0d3d3v bd9a04b1d2
fix HUD assets Tab 2022-05-20 17:35:22 +02:00
heinrich5991 ee8896d014 Make mastersrv compile with Rust 1.48.0 2022-05-20 16:29:01 +02:00
heinrich5991 6b65ccb945 Add HTTP masterserver registering and HTTP masterserver
Registering
-----------

The idea is that game servers push their server info to the
masterservers every 15 seconds or when the server info changes, but not
more than once per second.

The game servers do not support the old registering protocol anymore,
the backward compatibility is handled by the masterserver.

The register call is a HTTP POST to a URL like
`https://master1.ddnet.tw/ddnet/15/register` and looks like this:
```json
POST /ddnet/15/register HTTP/1.1
Address: tw-0.6+udp://connecting-address.invalid:8303
Secret: 81fa3955-6f83-4290-818d-31c0906b1118
Challenge-Secret: 81fa3955-6f83-4290-818d-31c0906b1118:tw0.6/ipv6
Info-Serial: 0

{
	"max_clients": 64,
	"max_players": 64,
	"passworded": false,
	"game_type": "TestDDraceNetwork",
	"name": "My DDNet server",
	"map": {
		"name": "dm1",
		"sha256": "0b0c481d77519c32fbe85624ef16ec0fa9991aec7367ad538bd280f28d8c26cf",
		"size": 5805
	},
	"version": "0.6.4, 16.0.3",
	"clients": []
}
```

The `Address` header declares that the server wants to register itself as
a `tw-0.6+udp` server, i.e. a server speaking a Teeworlds-0.6-compatible
protocol.

The free-form `Secret` header is used as a server identity, the server
list will be deduplicated via this secret.

The free-form `Challenge-Secret` is sent back via UDP for a port forward
check.  This might have security implications as the masterserver can be
asked to send a UDP packet containing some user-controlled bytes. This
is somewhat mitigated by the fact that it can only go to an
attacker-controlled IP address.

The `Info-Serial` header is an integer field that should increase each
time the server info (in the body) changes. The masterserver uses that
field to ensure that it doesn't use old server infos.

The body is a free-form JSON object set by the game server. It should
contain certain keys in the correct form to be accepted by clients. The
body is optional if the masterserver already confirmed the reception of
the info with the given `Info-Serial`.

Not shown in this payload is the `Connless-Token` header that is used
for Teeworlds 0.7 style communication.

Also not shown is the `Challenge-Token` that should be included once the
server receives the challenge token via UDP.

The masterserver responds with a `200 OK` with a body like this:

```
{"status":"success"}
```

The `status` field can be `success` if the server was successfully
registered on the masterserver, `need_challenge` if the masterserver
wants the correct `Challenge-Token` header before the register process
is successful, `need_info` if the server sent an empty body but the
masterserver doesn't actually know the server info.

It can also be `error` if the request was malformed, only in this case
an HTTP status code except `200 OK` is sent.

Synchronization
---------------

The masterserver keeps state and outputs JSON files every second.

```json
{
	"servers": [
		{
			"addresses": [
				"tw-0.6+udp://127.0.0.1:8303",
				"tw-0.6+udp://[::1]:8303"
			],
			"info_serial": 0,
			"info": {
				"max_clients": 64,
				"max_players": 64,
				"passworded": false,
				"game_type": "TestDDraceNetwork",
				"name": "My DDNet server",
				"map": {
					"name": "dm1",
					"sha256": "0b0c481d77519c32fbe85624ef16ec0fa9991aec7367ad538bd280f28d8c26cf",
					"size": 5805
				},
				"version": "0.6.4, 16.0.3",
				"clients": []
			}
		}
	]
}
```

`servers.json` (or configured by `--out`) is a server list that is
compatible with DDNet 15.5+ clients. It is a JSON object containing a
single key `servers` with a list of game servers. Each game server is
represented by a JSON object with an `addresses` key containing a list
of all known addresses of the server and an `info` key containing the
free-form server info sent by the game server. The free-form `info` JSON
object re-encoded by the master server and thus canonicalized and
stripped of any whitespace characters outside strings.

```json
{
	"kind": "mastersrv",
	"now": 1816002,
	"secrets": {
		"tw-0.6+udp://127.0.0.1:8303": {
			"ping_time": 1811999,
			"secret": "42d8f991-f2fa-46e5-a9ae-ebcc93846feb"
		},
		"tw-0.6+udp://[::1]:8303": {
			"ping_time": 1811999,
			"secret": "42d8f991-f2fa-46e5-a9ae-ebcc93846feb"
		}
	},
	"servers": {
		"42d8f991-f2fa-46e5-a9ae-ebcc93846feb": {
			"info_serial": 0,
			"info": {
				"max_clients": 64,
				"max_players": 64,
				"passworded": false,
				"game_type": "TestDDraceNetwork",
				"name": "My DDNet server",
				"map": {
					"name": "dm1",
					"sha256": "0b0c481d77519c32fbe85624ef16ec0fa9991aec7367ad538bd280f28d8c26cf",
					"size": 5805
				},
				"version": "0.6.4, 16.0.3",
				"clients": []
			}
		}
	}
}
```

`--write-dump` outputs a JSON file compatible with `--read-dump-dir`,
this can be used to synchronize servers across different masterservers.
`--read-dump-dir` is also used to ingest servers from the backward
compatibility layer that pings each server for their server info using
the old protocol.

The `kind` field describe that this is `mastersrv` output and not from a
`backcompat`. This is used for prioritizing `mastersrv` information over
`backcompat` information.

The `now` field contains an integer describing the current time in
milliseconds relative an unspecified epoch that is fixed for each JSON
file. This is done instead of using the current time as the epoch for
better compression of non-changing data.

`secrets` is a map from each server address and to a JSON object
containing the last ping time (`ping_time`) in milliseconds relative to
the same epoch as before, and the server secret (`secret`) that is used
to unify server infos from different addresses of the same logical
server.

`servers` is a map from the aforementioned `secret`s to the
corresponding `info_serial` and `info`.

```json
[
	"tw-0.6+udp://127.0.0.1:8303",
	"tw-0.6+udp://[::1]:8303"
]
```

`--write-addresses` outputs a JSON file containing all addresses
corresponding to servers that are registered to HTTP masterservers. It
does not contain the servers that are obtained via backward
compatibility measures.

This file can be used by an old-style masterserver to also list
new-style servers without the game servers having to register there.

An implementation of this can be found at
https://github.com/heinrich5991/teeworlds/tree/mastersrv_6_backcompat
for Teeworlds 0.5/0.6 masterservers and at
https://github.com/heinrich5991/teeworlds/tree/mastersrv_7_backcompat
for Teeworlds 0.7 masterservers.

All these JSON files can be sent over the network in an efficient way
using https://github.com/heinrich5991/twmaster-collect. It establishes a
zstd-compressed TCP connection authenticated by a string token that is
sent in plain-text. It watches the specified file and transmits it every
time it changes. Due to the zstd-compression, the data sent over the
network is similar to the size of a diff.

Implementation
--------------

The masterserver implementation was done in Rust.

The current gameserver register implementation doesn't support more than
one masterserver for registering.
2022-05-20 08:58:32 +02:00
bors[bot] 8b31dbb108
Merge #5155
5155: Remove cl_show_console and -c / --console command line options, attach to existing console r=heinrich5991 a=Robyt3

Alternative to #5154. 

Closes #5150.

If you want to open the client with a console window, instead create a new shortcut with the following target:

```
cmd /c "C:\path\to\your\DDNet.exe"
```

You can change the icon of the shortcut to the DDNet icon in the properties of the shortcut file.

## Checklist

- [X] Tested the change ingame
- [ ] Provided screenshots if it is a visual change
- [ ] Tested in combination with possibly related configuration options
- [ ] Written a unit test if it works standalone, system.c especially
- [ ] Considered possible null pointers and out of bounds array indexing
- [ ] Changed no physics that affect existing maps
- [ ] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional)


Co-authored-by: Robert Müller <robytemueller@gmail.com>
2022-05-20 06:49:41 +00:00
bors[bot] 0fbfcad242
Merge #5153
5153: keep input if chat is closed r=heinrich5991 a=C0D3D3V

fixes #4653

## Checklist

- [x] Tested the change ingame
- [ ] Provided screenshots if it is a visual change
- [ ] Tested in combination with possibly related configuration options
- [ ] Written a unit test if it works standalone, system.c especially
- [x] Considered possible null pointers and out of bounds array indexing
- [?] Changed no physics that affect existing maps
- [x] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional)


Co-authored-by: c0d3d3v <c0d3d3v@mag-keinen-spam.de>
2022-05-20 06:32:44 +00:00
Dennis Felsing 7e5049e656 Version 16.1 2022-05-20 01:26:17 +02:00
c0d3d3v f5ff227561
fix inputs on vanilla server if chat is open 2022-05-19 23:18:14 +02:00
Robert Müller d1acb3644d Try attaching to existing console 2022-05-19 21:24:46 +02:00
Robert Müller 2ebaa76194 Remove cl_show_console and -c / --console cmdline options 2022-05-19 21:24:19 +02:00
heinrich5991 96f1fbcc70 Make dbg_curl 1 use the normal logging 2022-05-19 21:06:05 +02:00
heinrich5991 177cdfdde9 Fix memleak of multiply chained console commands 2022-05-19 21:06:05 +02:00
c0d3d3v 789d7d81fc
keep input if chat is closed 2022-05-19 19:50:51 +02:00
Dennis Felsing 4b72f7d95c Minor clang-tidy fix with -DWEBSOCKETS=ON -DUPNP=ON 2022-05-19 18:57:49 +02:00
bors[bot] cd16459e9b
Merge #5147
5147: Use `check_cxx_compiler_flag` instead of `check_c_compiler_flag` r=def- a=heinrich5991

We only have C++ source files left, take advantage of this and check
whether the C++ compiler supports the flags, not the C compiler. GCC for
example warns about `-Wsuggest-override` in C mode, but supports it in
C++ mode.

## Checklist

- [ ] Tested the change ingame
- [ ] Provided screenshots if it is a visual change
- [ ] Tested in combination with possibly related configuration options
- [ ] Written a unit test if it works standalone, system.c especially
- [ ] Considered possible null pointers and out of bounds array indexing
- [ ] Changed no physics that affect existing maps
- [ ] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional)


Co-authored-by: heinrich5991 <heinrich5991@gmail.com>
2022-05-19 12:34:27 +00:00
bors[bot] 8ff87f6e6f
Merge #5001
5001: Ellipsis at end in scoreboard and hud r=heinrich5991 a=def-

Looks nicer to have consistent length in HUD, more clear that something is cut off with the ellipsis.
![screenshot_2022-04-18_12-57-22](https://user-images.githubusercontent.com/2335377/163799128-89788d67-cf3e-4215-b716-7ee0a348f1b2.png)
Thoughts on kill message?
## Checklist

- [x] Tested the change ingame
- [x] Provided screenshots if it is a visual change
- [ ] Tested in combination with possibly related configuration options
- [ ] Written a unit test if it works standalone, system.c especially
- [ ] Considered possible null pointers and out of bounds array indexing
- [ ] Changed no physics that affect existing maps
- [ ] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional)


Co-authored-by: def <dennis@felsin9.de>
2022-05-19 09:18:11 +00:00
heinrich5991 2b7e1c629e Make Objective-C file Objective-C++
This removes the last C file we have, allows us to set C++ options
unilaterally.
2022-05-19 11:16:03 +02:00
Dennis Felsing d1eba47cf8 Add override in mysql code too (fixes #5139) 2022-05-19 10:35:24 +02:00
def f278399bd1 Ellipsis at end in scoreboard and hud 2022-05-18 23:46:11 +02:00
bors[bot] 609987730c
Merge #5075
5075: Switch to nanoseconds r=def- a=Jupeyy

Modern hardware is too fast, updates sometimes take less than a few microseconds.
It's easier in the long run if we use a bigger range to avoid calculation problems.

possibly f i x e s #5051 (needs testing from bencie for the main bug, but fixes what `@sjrc6` found)

Also took the moment to use more chrono so we can at some point switch to a typesafe time.

Hopefully I didnt miss any value ^^

## Checklist

- [x] Tested the change ingame
- [ ] Provided screenshots if it is a visual change
- [ ] Tested in combination with possibly related configuration options
- [ ] Written a unit test if it works standalone, system.c especially
- [ ] Considered possible null pointers and out of bounds array indexing
- [ ] Changed no physics that affect existing maps
- [ ] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional)


Co-authored-by: Jupeyy <jupjopjap@gmail.com>
Co-authored-by: Dennis Felsing <dennis@felsin9.de>
2022-05-18 16:59:36 +00:00
Dennis Felsing a1fc561434 No more system.h include in client.m 2022-05-18 18:58:31 +02:00
Jupeyy a7bc8781a9 Put assert for text containers after printing all non empty text containers 2022-05-18 18:25:48 +02:00
Jupeyy 3c597aff95 Switch to nanoseconds 2022-05-18 18:05:41 +02:00
bors[bot] 53d77e86b2
Merge #5119
5119: Use STUN to determine UDP connectivity and show diagnostics r=def- a=heinrich5991

These diagnostics are supposed to guide the user to problem resolution.
They're displayed if no packet is received from the server within one
second of connecting.

No message if we don't have STUN servers.

"Trying to determine UDP connectivity..." if no answer has been received
from the STUN server yet and it hasn't timed out yet.

"UDP seems to be filtered." if the STUN request has timed out.

"UDP and TCP IP addresses seem to be different. Try disabling VPN,
proxy or network accelerators." if the STUN request has returned an IP
address different from the one obtained via HTTP from info2.ddnet.tw.

"No answer from server yet." otherwise, if the STUN request has returned
no interesting data, indicating that it's likely the game server's
fault.

## Checklist

- [x] Tested the change ingame
- [x] Provided screenshots if it is a visual change
- [ ] Tested in combination with possibly related configuration options
- [ ] Written a unit test if it works standalone, system.c especially
- [ ] Considered possible null pointers and out of bounds array indexing
- [ ] Changed no physics that affect existing maps
- [ ] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional)


Co-authored-by: heinrich5991 <heinrich5991@gmail.com>
2022-05-18 07:43:55 +00:00
heinrich5991 4fb050ccb7 Use STUN to determine UDP connectivity and show diagnostics
These diagnostics are supposed to guide the user to problem resolution.
They're displayed if no packet is received from the server within one
second of connecting.

No message if we don't have STUN servers.

"Trying to determine UDP connectivity..." if no answer has been received
from the STUN server yet and it hasn't timed out yet.

"UDP seems to be filtered." if the STUN request has timed out.

"UDP and TCP IP addresses seem to be different. Try disabling VPN,
proxy or network accelerators." if the STUN request has returned an IP
address different from the one obtained via HTTP from info2.ddnet.tw.

"No answer from server yet." otherwise, if the STUN request has returned
no interesting data, indicating that it's likely the game server's
fault.
2022-05-18 09:21:31 +02:00
heinrich5991 ec45a7338a Add bare-bones STUN protocol support
Implemented according to RFC 5389.
2022-05-18 09:20:54 +02:00
heinrich5991 407644deef Change IClient::ServerAddress to give the actual server address
Previously, it'd take the string entered by the user, before applying
its transformations. Add `IClient::ConnectAddressString` for the old
behavior.
2022-05-18 09:20:53 +02:00
heinrich5991 6977bdc782 Make NETADDR forward-declarable 2022-05-18 09:16:08 +02:00
bors[bot] 3d6e683fdd
Merge #5133 #5138
5133: Fix IPO build problems r=heinrich5991 a=def-

`@Kaffeine` 

Windows x86-64 with MinGW worked, previously:
```
-rwxr-xr-x 1 deen deen 755K May 15 11:38 config_retrieve.exe*
-rwxr-xr-x 1 deen deen 756K May 15 11:38 config_store.exe*
-rwxr-xr-x 1 deen deen 2.8M May 15 11:38 DDNet.exe*
-rwxr-xr-x 1 deen deen 2.1M May 15 11:38 DDNet-Server.exe*
-rwxr-xr-x 1 deen deen 761K May 15 11:38 dilate.exe*
-rwxr-xr-x 1 deen deen 763K May 15 11:38 map_convert_07.exe*
-rwxr-xr-x 1 deen deen 756K May 15 11:38 map_diff.exe*
-rwxr-xr-x 1 deen deen 761K May 15 11:38 map_extract.exe*
```
Now:
```
-rwxr-xr-x 1 deen deen 256K May 16 00:26 config_retrieve.exe*
-rwxr-xr-x 1 deen deen 282K May 16 00:26 config_store.exe*
-rwxr-xr-x 1 deen deen 2.8M May 16 00:26 DDNet.exe*
-rwxr-xr-x 1 deen deen 2.0M May 16 00:26 DDNet-Server.exe*
-rwxr-xr-x 1 deen deen 271K May 16 00:26 dilate.exe*
-rwxr-xr-x 1 deen deen 289K May 16 00:26 map_convert_07.exe*
-rwxr-xr-x 1 deen deen 261K May 16 00:26 map_diff.exe*
-rwxr-xr-x 1 deen deen 278K May 16 00:26 map_extract.exe*
```

## Checklist

- [ ] Tested the change ingame
- [ ] Provided screenshots if it is a visual change
- [ ] Tested in combination with possibly related configuration options
- [ ] Written a unit test if it works standalone, system.c especially
- [ ] Considered possible null pointers and out of bounds array indexing
- [ ] Changed no physics that affect existing maps
- [ ] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional)


5138: No gold preference (fixes #5136) r=heinrich5991 a=def-

`@Kaffeine` lld is used on some systems, we also have instructions for mold in readme, both are faster than gold.

## Checklist

- [ ] Tested the change ingame
- [ ] Provided screenshots if it is a visual change
- [ ] Tested in combination with possibly related configuration options
- [ ] Written a unit test if it works standalone, system.c especially
- [ ] Considered possible null pointers and out of bounds array indexing
- [ ] Changed no physics that affect existing maps
- [ ] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional)


Co-authored-by: def <dennis@felsin9.de>
Co-authored-by: Dennis Felsing <dennis@felsin9.de>
2022-05-18 07:12:29 +00:00
bors[bot] bae4324ea1
Merge #5140
5140: Enable clang-tidy's modernize-use-override (fixes #5139) r=heinrich5991 a=def-

<!-- What is the motivation for the changes of this pull request -->

## Checklist

- [ ] Tested the change ingame
- [ ] Provided screenshots if it is a visual change
- [ ] Tested in combination with possibly related configuration options
- [ ] Written a unit test if it works standalone, system.c especially
- [ ] Considered possible null pointers and out of bounds array indexing
- [ ] Changed no physics that affect existing maps
- [ ] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional)


Co-authored-by: Dennis Felsing <dennis@felsin9.de>
Co-authored-by: Chairn <chairn.nq@hotmail.fr>
2022-05-18 06:50:23 +00:00
Dennis Felsing 402cccf8f2 Add override in code behind CONF_DISCORD, disable clang-tidy check 2022-05-18 01:19:35 +02:00
Chairn 583d6e6c01 Mark virtual function as override using a script:
while IFS= read -r line; do file=${line%%:*}; lineno=$(echo $line | cut
-d':' -f2); echo "Treating $file line $lineno"; sed -i -e
"${lineno}s/virtual //" -e "${lineno}s/);\$/) override;/" -e
"${lineno}s/)\$/) override/" -e "${lineno}s/const\$/const override/" -e
"${lineno}s/) {/) override {/" -e "${lineno}s/) const {/) const override
{/" -e "${lineno}s/const;$/const override;/" "$file"; done < a
2022-05-17 23:47:32 +02:00
Robert Müller 4036cda4e3 Handle file/pipe stdout and add fallback on Windows 2022-05-17 22:37:43 +02:00
Dennis Felsing 8d5693d483 Enable clang-tidy's modernize-use-override (fixes #5139)
except for destructors
2022-05-17 20:33:29 +02:00
Dennis Felsing 5947755c99 Fix unread variable clang-tidy warning on macOS
src/engine/client/backend_sdl.cpp:580:3: warning: Value stored to 'RetBackendType' is never read [clang-analyzer-deadcode.DeadStores]
                RetBackendType = BACKEND_TYPE_OPENGL_ES;
                ^                ~~~~
2022-05-17 20:31:25 +02:00
bors[bot] 47874fb57f
Merge #5085
5085: New DDRace HUD r=def- a=C0D3D3V

If you want to test this PR, you have to test it on a Server that includes this PR too.

Textures are made by Ravie 

Here a showcase video with most parts shown: https://youtu.be/gPTVj-s3pgc 

Added to the new HUD
- A display of the weapons available to the player
- The weapon the player is carrying is highlighted
- Indicators for the special abilities of the player (Endless Hook, Endless Jumps, Jetpack, Teleport Weapons)
- Indicators for abilities taken away from the player (Deep/Life Freeze, No Hook, No Weapons collision, No Collision)
- Control indicators for dummy controls (dummy hammer, dummy copy) (bottom right)
- Jump indicator (max 10 jumps ar displayed, and greyed out as soon as a jump is used) 
- Ninja status bar that indicates how long a player is capable of using ninja (next to the ninja sword)
- Freeze status bar that indicates the thawing time of a player (below player)
- Movement Information can be displayed in a clean way above the mini score HUD (Position, Speed, Target Angle)
- Indicator if you are in practice mode

The complete HUD also works for players you spectate

I Added a new NetObj since the predicted values are not perfect and would make the display of the information a lot less good: DDNetCharacterDisplayInfo that contains the following information
```
NetIntRange("m_JumpedTotal", -2, 255),
NetTick("m_NinjaActivationTick"),
NetTick("m_FreezeTick"),
NetBool("m_IsInFreeze"),
NetBool("m_IsInPracticeMode"),

NetIntAny("m_TargetX"),  # used for the Movement Information display
NetIntAny("m_TargetY"),
NetIntAny("m_RampValue"),
```
So if someone has an idea what data we could also need in the client for making the display more nice, now is the right moment to add more data to this network object.

A few screenshots:
Assets Tab:
![grafik](https://user-images.githubusercontent.com/14315968/167703792-f0fa86be-159d-4e11-baf4-9539cee38aae.png)
HUD Settings:
![grafik](https://user-images.githubusercontent.com/14315968/167704336-dc7a314e-5603-40a2-98b4-9c03377906dd.png)
Mini Debug HUD:
![grafik](https://user-images.githubusercontent.com/14315968/168302791-c377d93e-33a2-4eb2-9d8d-b78f0808a009.png)
Speed.X is calculated using the players ramp vaule


## Checklist

- [x] Tested the change ingame
- [x] Provided screenshots if it is a visual change
- [ ] Tested in combination with possibly related configuration options
- [ ] Written a unit test if it works standalone, system.c especially
- [x] Considered possible null pointers and out of bounds array indexing
- [x] Changed no physics that affect existing maps
- [x] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional)


Co-authored-by: c0d3d3v <c0d3d3v@mag-keinen-spam.de>
Co-authored-by: Jupeyy <jupjopjap@gmail.com>
2022-05-16 22:23:08 +00:00
c0d3d3v d6833b6fd6
fix jump display 2022-05-16 23:17:19 +02:00
c0d3d3v 796b2add95
Fix Weapon Shields rendering and Clean up Sprite Offsets in items.cpp 2022-05-16 15:31:46 +02:00
def dc03f410ad Disable IPO on mingw win32
/usr/lib/gcc/i686-w64-mingw32/11.2.0/../../../../i686-w64-mingw32/bin/ld: /usr/lib/gcc/i686-w64-mingw32/11.2.0/../../../../i686-w64-mingw32/bin/ld: DWARF error: could not find variable specification at offset 378
/usr/lib/gcc/i686-w64-mingw32/11.2.0/../../../../i686-w64-mingw32/lib/../lib/libstdc++.a(string-inst.o): in function `ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructIPcEEvT_S7_St20forward_iterator_tag':
/build/mingw-w64-gcc/src/build-i686-w64-mingw32/i686-w64-mingw32/libstdc++-v3/include/bits/basic_string.tcc:206: multiple definition of `void std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_construct<char*>(char*, char*, std::forward_iterator_tag)';
glsl_shader_compiler.cpp.obj (symbol from plugin):(.gnu.linkonce.t._ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructIPcEEvT_S7_St20forward_iterator_tag+0x0): first defined here
...
2022-05-16 10:12:43 +02:00
def bbb1b42bb5 Fix -Walloc-size-larger-than= in maplayers.cpp
Fails on Linux x86 with IPO:

In member function '_ZN10CMapLayers17STileLayerVisuals4InitEjj.part.18',
    inlined from 'OnMapLoad' at /ddnet-source-steam/src/game/client/components/maplayers.cpp:301:6:
/ddnet-source-steam/src/game/client/components/maplayers.cpp:312:74: warning: argument 1 value '4294967295'
 exceeds maximum object size 2147483647 [-Walloc-size-larger-than=]
   m_pBorderTop = new CMapLayers::STileLayerVisuals::STileVisual[Width - 2];
                                                                          ^
2022-05-16 00:53:55 +02:00
bors[bot] a041ff8aed
Merge #5069
5069: Some HTTP fixes factored out of the HTTP masterserver PR r=def- a=heinrich5991

CC #5064

Co-authored-by: heinrich5991 <heinrich5991@gmail.com>
2022-05-15 22:20:11 +00:00
bors[bot] fadcb344e4
Merge #5132
5132: Refactoring: Use std::swap in editor r=heinrich5991 a=Robyt3

<!-- What is the motivation for the changes of this pull request -->

## Checklist

- [ ] Tested the change ingame
- [ ] Provided screenshots if it is a visual change
- [ ] Tested in combination with possibly related configuration options
- [ ] Written a unit test if it works standalone, system.c especially
- [ ] Considered possible null pointers and out of bounds array indexing
- [ ] Changed no physics that affect existing maps
- [ ] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional)


Co-authored-by: Robert Müller <robytemueller@gmail.com>
2022-05-15 20:31:11 +00:00
bors[bot] 61cca6ca16
Merge #5131
5131: Remove base/tl/base.h r=heinrich5991 a=Robyt3



## Checklist

- [ ] Tested the change ingame
- [ ] Provided screenshots if it is a visual change
- [ ] Tested in combination with possibly related configuration options
- [ ] Written a unit test if it works standalone, system.c especially
- [ ] Considered possible null pointers and out of bounds array indexing
- [ ] Changed no physics that affect existing maps
- [ ] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional)


Co-authored-by: Robert Müller <robytemueller@gmail.com>
2022-05-15 20:11:13 +00:00
Robert Müller f0df8ad85a Use std::swap in editor 2022-05-15 21:00:14 +02:00
Robert Müller aeb8790649 Remove base/tl/base.h 2022-05-15 20:36:16 +02:00
Robert Müller f634f66008 Fix memory leaks in auto stat CSV output, refactoring
And fix stringop-overflow warning:

In function 'str_copy',
    inlined from 'FormatStats' at src\game\client\components\statboard.cpp:541:10:
src\base\system.cpp:2524:16: warning: 'strncat' specified bound depends on the length of the source argument [-Wstringop-overflow=]
 2524 |         strncat(dst, src, dst_size - 1);
      |                ^
src\game\client\components\statboard.cpp: In member function 'FormatStats':
src\base\system.cpp:2557:27: note: length computed here
 2557 |         return (int)strlen(str);
      |                           ^
2022-05-15 20:24:26 +02:00
Robert Müller 53f4001fb1 Fix stringop-overflow warning
In function 'str_copy',
    inlined from 'GetServerInfo' at src\engine\client\client.cpp:951:11,
    inlined from 'GetServerInfo' at src\engine\client\client.cpp:946:6:
src\base\system.cpp:2524:16: warning: 'strncat' specified bound 13 equals source length [-Wstringop-overflow=]
 2524 |         strncat(dst, src, dst_size - 1);
      |                ^
2022-05-15 19:45:14 +02:00
Robert Müller 52100dbbe7 Use qualified std::swap only 2022-05-15 19:25:36 +02:00
Robert Müller 535fbd28fa Replace usages of tl_assert with dbg_assert 2022-05-15 19:25:18 +02:00
bors[bot] f3e8984bfc
Merge #5126
5126: Fix /cmdlist output not being shown in chat r=def- a=ChillerDragon

## Checklist

- [x] Tested the change ingame
- [ ] Provided screenshots if it is a visual change
- [ ] Tested in combination with possibly related configuration options
- [ ] Written a unit test if it works standalone, system.c especially
- [ ] Considered possible null pointers and out of bounds array indexing
- [ ] Changed no physics that affect existing maps
- [ ] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional)


Co-authored-by: ChillerDragon <ChillerDragon@gmail.com>
2022-05-15 11:40:50 +00:00
ChillerDragon 2693eff72e Show "No such command" and "Invalid arguments" 2022-05-15 13:37:30 +02:00
ChillerDragon 0ff129a19e Fix /cmdlist output not being shown in chat 2022-05-15 13:24:57 +02:00
bors[bot] e346e3e186
Merge #5072
5072: Updated unicode script generation (fixes https://github.com/ddnet/ddnet/issues/5017) r=def- a=Chairn

I also updated the version to 15.0.0. However, confusables are still from version 14 as https://www.unicode.org/Public/security/15.0.0/ is empty.

CC `@heinrich5991` 

## Checklist

- [ ] Tested the change ingame
- [ ] Provided screenshots if it is a visual change
- [ ] Tested in combination with possibly related configuration options
- [ ] Written a unit test if it works standalone, system.c especially
- [ ] Considered possible null pointers and out of bounds array indexing
- [ ] Changed no physics that affect existing maps
- [ ] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional)


Co-authored-by: Chairn <chairn.nq@hotmail.fr>
2022-05-15 11:17:15 +00:00
bors[bot] 450e6a53f7
Merge #5125
5125: Fix server loading map twice on startup r=def- a=Zwelf

Fixes creating two teehistorian files. And probably increases performance :). Fixes #5121 

## Checklist

- [x] Tested the change ingame
- [ ] Provided screenshots if it is a visual change
- [ ] Tested in combination with possibly related configuration options
- [ ] Written a unit test if it works standalone, system.c especially
- [ ] Considered possible null pointers and out of bounds array indexing
- [x] Changed no physics that affect existing maps
- [ ] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional)


Co-authored-by: Zwelf <zwelf@strct.cc>
2022-05-14 19:58:21 +00:00
Zwelf 8385726a5f Fix server loading map twice on startup 2022-05-14 21:50:03 +02:00
bors[bot] 1110e1592a
Merge #5123
5123: Add Cellegen, srdante, Nouaa to credits r=heinrich5991 a=def-

<!-- What is the motivation for the changes of this pull request -->

## Checklist

- [ ] Tested the change ingame
- [ ] Provided screenshots if it is a visual change
- [ ] Tested in combination with possibly related configuration options
- [ ] Written a unit test if it works standalone, system.c especially
- [ ] Considered possible null pointers and out of bounds array indexing
- [ ] Changed no physics that affect existing maps
- [ ] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional)


Co-authored-by: def <dennis@felsin9.de>
2022-05-14 18:47:39 +00:00
def 17fe0ec8e3 Add Cellegen, srdante, Nouaa to credits 2022-05-14 19:56:08 +02:00
bors[bot] 3d244b728d
Merge #5122
5122: Cleanup CRenderTools r=heinrich5991 a=Robyt3



## Checklist

- [X] Tested the change ingame
- [ ] Provided screenshots if it is a visual change
- [ ] Tested in combination with possibly related configuration options
- [ ] Written a unit test if it works standalone, system.c especially
- [ ] Considered possible null pointers and out of bounds array indexing
- [ ] Changed no physics that affect existing maps
- [ ] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional)


Co-authored-by: Robert Müller <robytemueller@gmail.com>
2022-05-14 17:41:04 +00:00
Robert Müller 51d0d76e11 Rename parameters id -> Id 2022-05-14 19:08:43 +02:00
bors[bot] 92be4a67d7
Merge #4959
4959: Revert "CGameClient::LoadMapSettings: Load the default tuning params … r=heinrich5991 a=def-

…by default"

This reverts commit 754562ce0b.

This breaks rendering for ddnet mode, thanks to cheeser0613 for report

`@Kaffeine` I'd prefer to have it working with DDNet instead of vanilla. A fix that doesn't break DDNet demos would be welcome.

## Checklist

- [ ] Tested the change ingame
- [ ] Provided screenshots if it is a visual change
- [ ] Tested in combination with possibly related configuration options
- [ ] Written a unit test if it works standalone, system.c especially
- [ ] Considered possible null pointers and out of bounds array indexing
- [ ] Changed no physics that affect existing maps
- [ ] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional)


Co-authored-by: Dennis Felsing <dennis@felsin9.de>
2022-05-14 16:31:54 +00:00
bors[bot] 6eab58fa24
Merge #5120
5120: Add basic driver version parsing for Vulkan r=def- a=Jupeyy

From 5c3986798a/includes/functions.php (L364)

I dunno how reliable that is, but https://gpuinfo.org is quite good, so probs reliable enough for our needs :D

Similar to how OpenGL also prints the driver version in the GL_VERSION string. Can be quite useful and is easier for the end user

## Checklist

- [x] Tested the change ingame
- [ ] Provided screenshots if it is a visual change
- [ ] Tested in combination with possibly related configuration options
- [ ] Written a unit test if it works standalone, system.c especially
- [ ] Considered possible null pointers and out of bounds array indexing
- [ ] Changed no physics that affect existing maps
- [ ] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional)


Co-authored-by: Jupeyy <jupjopjap@gmail.com>
2022-05-14 15:34:11 +00:00
Jupeyy 77196ed571 Add basic driver version parsing for Vulkan 2022-05-14 14:06:06 +02:00
Robert Müller 25c4270cb4 Fix comments 2022-05-14 13:44:12 +02:00
Robert Müller 485d61d4f8 Use std::swap 2022-05-14 13:43:26 +02:00
Robert Müller 1690a9703d Rename variable cs -> ColorScale 2022-05-14 13:40:46 +02:00
Robert Müller 3708abe8e0 Remove CRenderTools' pointers to CUI and CGameClient 2022-05-14 13:31:07 +02:00
bors[bot] ec75563dad
Merge #5109 #5110 #5112 #5115 #5117
5109: Only print zone messages when there is one r=heinrich5991 a=def-

```
src/game/server/entities/character.cpp: In member function ‘void CCharacter::SendZoneMsgs()’:
src/game/server/entities/character.cpp:2013:78: warning: the address of ‘CGameContext::m_aaZoneLeaveMsg’ will never be NULL [-Waddress]
 2013 |         if(m_TuneZoneOld >= 0 && GameServer()->m_aaZoneLeaveMsg[m_TuneZoneOld])
      |                                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
In file included from src/game/server/entities/character.cpp:7:
src/game/server/gamecontext.h:179:14: note: ‘CGameContext::m_aaZoneLeaveMsg’ declared here
  179 |         char m_aaZoneLeaveMsg[NUM_TUNEZONES][256];
      |              ^~~~~~~~~~~~~~~~
src/game/server/entities/character.cpp:2028:53: warning: the address of ‘CGameContext::m_aaZoneEnterMsg’ will never be NULL [-Waddress]
 2028 |         if(GameServer()->m_aaZoneEnterMsg[m_TuneZone])
      |            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
src/game/server/gamecontext.h:178:14: note: ‘CGameContext::m_aaZoneEnterMsg’ declared here
  178 |         char m_aaZoneEnterMsg[NUM_TUNEZONES][256]; // 0 is used for switching from or to area without tunings
      |              ^~~~~~~~~~~~~~~~
```
<!-- What is the motivation for the changes of this pull request -->

## Checklist

- [ ] Tested the change ingame
- [ ] Provided screenshots if it is a visual change
- [ ] Tested in combination with possibly related configuration options
- [ ] Written a unit test if it works standalone, system.c especially
- [ ] Considered possible null pointers and out of bounds array indexing
- [ ] Changed no physics that affect existing maps
- [ ] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional)


5110: Assert client id in SetSolo r=heinrich5991 a=def-

I could not find a way that an invalid client ID is used here, but
compiler warns anyway:
```
In member function ‘void CTeamsCore::SetSolo(int, bool)’,
    inlined from ‘void CCharacter::SetSolo(bool)’ at src/game/client/prediction/entities/character.cpp:29:22,
    inlined from ‘void CCharacter::HandleTiles(int)’ at src/game/client/prediction/entities/character.cpp:882:10:
src/game/teamscore.h:45:34: warning: array subscript [0, 63] is outside array bounds of ‘bool [64]’ [-Warray-bounds]
   45 |                 m_IsSolo[ClientID] = Value;
      |                 ~~~~~~~~~~~~~~~~~^
src/game/teamscore.h: In member function ‘void CCharacter::HandleTiles(int)’:
src/game/teamscore.h:27:14: note: while referencing ‘CTeamsCore::m_IsSolo’
   27 |         bool m_IsSolo[MAX_CLIENTS];
      |              ^~~~~~~~
```
<!-- What is the motivation for the changes of this pull request -->

## Checklist

- [x] Tested the change ingame
- [ ] Provided screenshots if it is a visual change
- [ ] Tested in combination with possibly related configuration options
- [ ] Written a unit test if it works standalone, system.c especially
- [ ] Considered possible null pointers and out of bounds array indexing
- [ ] Changed no physics that affect existing maps
- [ ] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional)


5112: Update traditional_chinese.txt r=def- a=Cheeser0613

<!-- What is the motivation for the changes of this pull request -->

## Checklist

- [ ] Tested the change ingame
- [ ] Provided screenshots if it is a visual change
- [ ] Tested in combination with possibly related configuration options
- [ ] Written a unit test if it works standalone, system.c especially
- [ ] Considered possible null pointers and out of bounds array indexing
- [ ] Changed no physics that affect existing maps
- [ ] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional)


5115: Update simplified_chinese.txt r=def- a=Cheeser0613

<!-- What is the motivation for the changes of this pull request -->

## Checklist

- [ ] Tested the change ingame
- [ ] Provided screenshots if it is a visual change
- [ ] Tested in combination with possibly related configuration options
- [ ] Written a unit test if it works standalone, system.c especially
- [ ] Considered possible null pointers and out of bounds array indexing
- [ ] Changed no physics that affect existing maps
- [ ] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional)


5117: Update tooltip text after changing language r=Jupeyy a=def-

Thanks to cheeser0613 for report

<!-- What is the motivation for the changes of this pull request -->

## Checklist

- [x] Tested the change ingame
- [ ] Provided screenshots if it is a visual change
- [ ] Tested in combination with possibly related configuration options
- [ ] Written a unit test if it works standalone, system.c especially
- [ ] Considered possible null pointers and out of bounds array indexing
- [ ] Changed no physics that affect existing maps
- [ ] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional)


Co-authored-by: def <dennis@felsin9.de>
Co-authored-by: Cheeser0613 <54943099+Cheeser0613@users.noreply.github.com>
2022-05-14 11:15:03 +00:00
bors[bot] 8fa59061ce
Merge #5116
5116: Move create/destroy window ntf dbg_msg to log_debug r=def- a=Jupeyy

Most messages in the backend are warnings.
At least these two are send every time you minimize/maximize the window, so kinda annoying 


## Checklist

- [x] Tested the change ingame
- [ ] Provided screenshots if it is a visual change
- [ ] Tested in combination with possibly related configuration options
- [ ] Written a unit test if it works standalone, system.c especially
- [ ] Considered possible null pointers and out of bounds array indexing
- [ ] Changed no physics that affect existing maps
- [ ] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional)


Co-authored-by: Jupeyy <jupjopjap@gmail.com>
2022-05-14 10:50:55 +00:00
def 0f2d464dbf Update tooltip text after changing language
Thanks to cheeser0613 for report
2022-05-14 12:49:12 +02:00
Jupeyy 4268f891fc Move create/destroy window ntf dbg_msg to log_debug 2022-05-14 12:48:41 +02:00
def 2f68b50fe1 Assert client id in SetSolo
I could not find a way that an invalid client ID is used here, but
compiler warns anyway:

In member function ‘void CTeamsCore::SetSolo(int, bool)’,
    inlined from ‘void CCharacter::SetSolo(bool)’ at src/game/client/prediction/entities/character.cpp:29:22,
    inlined from ‘void CCharacter::HandleTiles(int)’ at src/game/client/prediction/entities/character.cpp:882:10:
src/game/teamscore.h:45:34: warning: array subscript [0, 63] is outside array bounds of ‘bool [64]’ [-Warray-bounds]
   45 |                 m_IsSolo[ClientID] = Value;
      |                 ~~~~~~~~~~~~~~~~~^
src/game/teamscore.h: In member function ‘void CCharacter::HandleTiles(int)’:
src/game/teamscore.h:27:14: note: while referencing ‘CTeamsCore::m_IsSolo’
   27 |         bool m_IsSolo[MAX_CLIENTS];
      |              ^~~~~~~~
2022-05-14 11:28:01 +02:00
def b557e25650 Only print zone messages when there is one
src/game/server/entities/character.cpp: In member function ‘void CCharacter::SendZoneMsgs()’:
src/game/server/entities/character.cpp:2013:78: warning: the address of ‘CGameContext::m_aaZoneLeaveMsg’ will never be NULL [-Waddress]
 2013 |         if(m_TuneZoneOld >= 0 && GameServer()->m_aaZoneLeaveMsg[m_TuneZoneOld])
      |                                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
In file included from src/game/server/entities/character.cpp:7:
src/game/server/gamecontext.h:179:14: note: ‘CGameContext::m_aaZoneLeaveMsg’ declared here
  179 |         char m_aaZoneLeaveMsg[NUM_TUNEZONES][256];
      |              ^~~~~~~~~~~~~~~~
src/game/server/entities/character.cpp:2028:53: warning: the address of ‘CGameContext::m_aaZoneEnterMsg’ will never be NULL [-Waddress]
 2028 |         if(GameServer()->m_aaZoneEnterMsg[m_TuneZone])
      |            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
src/game/server/gamecontext.h:178:14: note: ‘CGameContext::m_aaZoneEnterMsg’ declared here
  178 |         char m_aaZoneEnterMsg[NUM_TUNEZONES][256]; // 0 is used for switching from or to area without tunings
      |              ^~~~~~~~~~~~~~~~
2022-05-14 11:18:08 +02:00
def cfe8cce91d Add translation string "Adjust the opacity..."
Reported by cheeser0613
2022-05-14 11:05:32 +02:00
Tater 3380fd8122 Fix dummy intended tick sent to server 2022-05-14 01:07:36 -05:00
bors[bot] e9b59e72ff
Merge #5103
5103: Remove unused DoButtonLogic pText argument r=def- a=Robyt3

<!-- What is the motivation for the changes of this pull request -->

## Checklist

- [ ] Tested the change ingame
- [ ] Provided screenshots if it is a visual change
- [ ] Tested in combination with possibly related configuration options
- [ ] Written a unit test if it works standalone, system.c especially
- [ ] Considered possible null pointers and out of bounds array indexing
- [ ] Changed no physics that affect existing maps
- [ ] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional)


Co-authored-by: Robert Müller <robytemueller@gmail.com>
2022-05-13 23:02:29 +00:00
bors[bot] 497d47044a
Merge #5102
5102: Enhance teehistorian test output a bit r=def- a=Zwelf

Looks cleaner now, e.g. for TeamPractice:

```
[ RUN      ] TeeHistorian.TeamPractice
pOutput = {
	0x41, 0x00, 0x4a, 0x57, 0x92, 0x83, 0x4e, 0x81, 0xd1, 0x34
	0xc9, 0xa2, 0x9b, 0xb5, 0xff, 0x25, 0xda, 0xc3, 0xbc, 0x02
	0x17, 0x01, 0x41, 0x00, 0x4a, 0x57, 0x92, 0x83, 0x4e, 0x81
	0xd1, 0x34, 0xc9, 0xa2, 0x9b, 0xb5, 0xff, 0x25, 0xda, 0xc3
	0xbc, 0x02, 0x01, 0x01, 0x4a, 0x57, 0x92, 0x83, 0x4e, 0x81
	0xd1, 0x34, 0xc9, 0xa2, 0x9b, 0xb5, 0xff, 0x25, 0xda, 0xc3
	0xbc, 0x02, 0x17, 0x00, 0x40
}
[       OK ] TeeHistorian.TeamPractice (0 ms)
```

## Checklist

- [ ] Tested the change ingame
- [ ] Provided screenshots if it is a visual change
- [ ] Tested in combination with possibly related configuration options
- [ ] Written a unit test if it works standalone, system.c especially
- [ ] Considered possible null pointers and out of bounds array indexing
- [ ] Changed no physics that affect existing maps
- [ ] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional)


Co-authored-by: Zwelf <zwelf@strct.cc>
2022-05-13 22:45:12 +00:00
Robert Müller fc93ba0539 Remove unused DoButtonLogic pText argument 2022-05-14 00:26:15 +02:00
Zwelf 7ada897478 Enhance teehistorian test output a bit
Looks cleaner now, e.g. for TeamPractice:

```
[ RUN      ] TeeHistorian.TeamPractice
pOutput = {
	0x41, 0x00, 0x4a, 0x57, 0x92, 0x83, 0x4e, 0x81, 0xd1, 0x34
	0xc9, 0xa2, 0x9b, 0xb5, 0xff, 0x25, 0xda, 0xc3, 0xbc, 0x02
	0x17, 0x01, 0x41, 0x00, 0x4a, 0x57, 0x92, 0x83, 0x4e, 0x81
	0xd1, 0x34, 0xc9, 0xa2, 0x9b, 0xb5, 0xff, 0x25, 0xda, 0xc3
	0xbc, 0x02, 0x01, 0x01, 0x4a, 0x57, 0x92, 0x83, 0x4e, 0x81
	0xd1, 0x34, 0xc9, 0xa2, 0x9b, 0xb5, 0xff, 0x25, 0xda, 0xc3
	0xbc, 0x02, 0x17, 0x00, 0x40
}
[       OK ] TeeHistorian.TeamPractice (0 ms)
```
2022-05-13 23:36:05 +02:00
Robert Müller ca091d87b2 Support nesting editboxes, pickers and scrollbars in clipping areas 2022-05-13 21:39:25 +02:00
Robert Müller 1e8278ca95 Smooth clipping when scrolling in controls settings 2022-05-13 21:38:02 +02:00
Robert Müller 8c7cdb5936 Rename UiDoGetButtons to DoSettingsControlsButtons 2022-05-13 21:38:01 +02:00
Robert Müller 60347fde1a Use MouseHovered instead of clipping manually 2022-05-13 21:38:01 +02:00
Robert Müller 7bda9d4118 Fix variable spelling CheckAble -> Checkable 2022-05-13 20:46:54 +02:00
Robert Müller 8d12529f1e Move variable declaration 2022-05-13 20:46:54 +02:00
Robert Müller cae2b49ed6 Reuse MouseInside variable 2022-05-13 20:46:54 +02:00
Robert Müller 0f6572ebf6 Rename static variables ButtonUsed -> s_ButtonUsed 2022-05-13 20:46:54 +02:00
Robert Müller 6241c8483d Use bool instead of int with MouseInside 2022-05-13 20:46:50 +02:00
Robert Müller a248822ea5 Add CUI:MouseHovered and MouseInsideClip 2022-05-13 20:24:10 +02:00
Robert Müller 1855b4aea1 Support nested CUI clipping regions 2022-05-13 20:20:04 +02:00
heinrich5991 8049d64964 Add @Learath2's suggestion about buffer size handling 2022-05-13 13:57:35 +02:00
bors[bot] d87edb9b41
Merge #5089
5089: Render tees in skin selector with default emote r=def- a=sjrc6

suggested in https://github.com/ddnet/ddnet/issues/5057
works for player and dummy

![image](https://user-images.githubusercontent.com/22122579/167973498-bccaac07-756e-4e59-a19d-66d3e24542d0.png)

## Checklist

- [x] Tested the change ingame
- [x] Provided screenshots if it is a visual change
- [ ] Tested in combination with possibly related configuration options
- [ ] Written a unit test if it works standalone, system.c especially
- [ ] Considered possible null pointers and out of bounds array indexing
- [ ] Changed no physics that affect existing maps
- [ ] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional)


Co-authored-by: Tater <Mr.Potatooh@gmail.com>
2022-05-13 08:24:15 +00:00
bors[bot] bab2defc26
Merge #5093
5093: Fix /practice chat responses and a few others r=Learath2 a=heinrich5991

Fixes #5087.

Co-authored-by: heinrich5991 <heinrich5991@gmail.com>
2022-05-13 07:58:07 +00:00
bors[bot] e4ed71f3ef
Merge #5088
5088: do not assert on entities without snap id r=heinrich5991 a=C0D3D3V

fixes #5054

## Checklist

- [ ] Tested the change ingame
- [ ] Provided screenshots if it is a visual change
- [ ] Tested in combination with possibly related configuration options
- [ ] Written a unit test if it works standalone, system.c especially
- [ ] Considered possible null pointers and out of bounds array indexing
- [ ] Changed no physics that affect existing maps
- [ ] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional)


Co-authored-by: c0d3d3v <c0d3d3v@mag-keinen-spam.de>
2022-05-13 07:34:22 +00:00
heinrich5991 15e3a0193f Fix version number for curl bug workaround
0x076800 corresponds to version 0x7.0x68.0x0 = 7.104.0, not 7.68.0 =
0x7.0x44.0x0, so we need 0x074400 instead.
2022-05-13 09:16:15 +02:00
heinrich5991 c9136121f2 Add HTTP header and plain HTTP post feature 2022-05-13 09:16:15 +02:00
heinrich5991 40bd85b552 Refactor HTTP code to no longer use inheritance
This gives us the same API interface for all different request types
(HEAD, GET, POST).
2022-05-13 09:16:15 +02:00
heinrich5991 0c2bb5a549 Fix /practice chat responses and a few others
Fixes #5087.
2022-05-13 09:14:05 +02:00
heinrich5991 b9e255a7a1 Mark dbg_break as [[noreturn]] 2022-05-13 09:04:39 +02:00
heinrich5991 246f213905 Remove a couple of game/-includes from the engine code 2022-05-13 09:04:39 +02:00
heinrich5991 1b233ab95c Add the HTTP client methods to the server 2022-05-13 09:04:39 +02:00
heinrich5991 14803d7605 Remove HTTP include from demoedit 2022-05-13 09:00:48 +02:00
heinrich5991 52d0dc8b5b Add functions to encode/decode base64 2022-05-13 09:00:48 +02:00
Tater b6a9389fe8 Render tees in skin selector with default emote 2022-05-12 17:17:19 -05:00
Zwelf 30f67573f4 Output corresponding array to EXPECTED in teehistorian test cases 2022-05-12 16:21:13 +02:00
c0d3d3v ed03945685
do not assert on entities without snap id 2022-05-12 11:28:21 +02:00
Jupeyy 915a27d803 Use dynamically allocated memory for the CacheChunk 2022-05-11 17:32:03 +02:00
c0d3d3v fa2ac1bb64
Merge branch 'master' into New_HUD
* master: (87 commits)
  Remove base/tl/string.h
  Replace remaining usage of base/tl/string with std::string
  Remove unused includes of base/tl/string.h
  Store localized strings in a CHeap instead of using tl/string.h
  Mark methods as const
  Add CHeap::StoreString method
  Rules are chat responses too
  Add margins to demo slice popup, decrease error font size, UI scaling
  Remove redundant parameters which are overridden later
  Use Margin instead of both VMargin and HMargin
  Move variable declaration
  Only output messages intended for chat to the user of a chat command
  Remove unused chat response variables
  Don't print the first "Waiting for score threads to complete"
  fix usage of undefined behavior for default eyes
  remove duplicate HOOK_RETRACTED assignment
  do not send swap request notification to complete team 0
  make swap messages more personal
  Move ninja shield to other position (fixes #5047)
  do not release the hooks if you swap
  ...
2022-05-10 19:03:09 +02:00
c0d3d3v 0c4dfb694c
Add Options for new HUD
- Change FontSize of MovementInfo to 6 and add a little morre padding at
  the sides
2022-05-10 18:41:46 +02:00
Chairn 2cb4a4d8f5 Changed file names to match classic source.c include header.h 2022-05-07 00:54:29 +02:00
Robert Müller 22562094bd Remove base/tl/string.h 2022-05-07 00:17:29 +02:00
Robert Müller a1d092be27 Replace remaining usage of base/tl/string with std::string 2022-05-07 00:17:29 +02:00
Robert Müller dee7393555 Remove unused includes of base/tl/string.h 2022-05-07 00:02:43 +02:00
Robert Müller 3e1cfcd306 Store localized strings in a CHeap instead of using tl/string.h 2022-05-07 00:02:43 +02:00
Robert Müller e2a049f0ca Mark methods as const 2022-05-06 23:24:58 +02:00
Robert Müller bc5f46e136 Add CHeap::StoreString method 2022-05-06 23:21:26 +02:00
Chairn 5925181acc Updated unicode script generation 2022-05-06 20:31:24 +02:00
Dennis Felsing b42fad604e Rules are chat responses too
Thanks to bencie for report
2022-05-06 00:12:03 +02:00
bors[bot] 14927684eb
Merge #5060
5060: Only output messages intended for chat to the user of a chat command r=def- a=heinrich5991

Fixes #5052.

The problem seems to be that there are two different concepts tangled up
in console/logging. One is actual logging as in other programs. The
other is "responses to the user of the command that was just entered",
like for rcon or chat commands. This issue isn't fixed by this commit.

## Checklist

- [x] Tested the change ingame
- [ ] Provided screenshots if it is a visual change
- [ ] Tested in combination with possibly related configuration options
- [ ] Written a unit test if it works standalone, system.c especially
- [ ] Considered possible null pointers and out of bounds array indexing
- [ ] Changed no physics that affect existing maps
- [ ] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional)


Co-authored-by: heinrich5991 <heinrich5991@gmail.com>
2022-05-01 15:01:02 +00:00
bors[bot] 21433f7553
Merge #5061
5061: Improve demo slice popup, minor refactoring of UI/menus r=def- a=Robyt3

Improve demo slice popup:
- add more margins
- decrease font size of error message slightly
- correct handling of all allowed UI scale values:
   - fix overlapping elements on some UI scales by laying out all CUIRects (except the buttons) from top to bottom
   - make `New name:` label scaled

Refactoring:
- Use `CUI::Margin` instead of both `HMargin` and `VMargin`, when the margin value is identical.
- Pass 0 instead of CUIRect pointer in some cases where the value is never used, i.e. never read and overridden in the next line.

Before:

![screenshot_2022-05-01_00-18-26](https://user-images.githubusercontent.com/23437060/166140703-1050b122-bb8f-49a4-b398-f7b0b6e677a7.png)

After:

![screenshot_2022-05-01_12-05-00](https://user-images.githubusercontent.com/23437060/166141455-50876142-13f9-4563-af0f-9f78a519ed60.png)

Tested with `ui_scale 50/90/100/110/150`.

## Checklist

- [X] Tested the change ingame
- [X] Provided screenshots if it is a visual change
- [X] Tested in combination with possibly related configuration options
- [ ] Written a unit test if it works standalone, system.c especially
- [ ] Considered possible null pointers and out of bounds array indexing
- [ ] Changed no physics that affect existing maps
- [ ] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional)


Co-authored-by: Robert Müller <robytemueller@gmail.com>
2022-05-01 10:28:41 +00:00
bors[bot] 68b6027114
Merge #5037
5037: Add logging macros `log_{error,warn,info,debug,trace}` r=def- a=heinrich5991

This makes it almost as short to log as with `dbg_msg` (one to two more
characters), and much shorter than
`Console()->Print(IConsole::OUTPUT_LEVEL_{STANDARD,ADDINFO,DEBUG})`.

Co-authored-by: heinrich5991 <heinrich5991@gmail.com>
2022-05-01 10:10:22 +00:00
Robert Müller cc9ed7e9d3 Add margins to demo slice popup, decrease error font size, UI scaling 2022-05-01 12:03:56 +02:00
Robert Müller f4642472b2 Remove redundant parameters which are overridden later 2022-05-01 11:40:26 +02:00
Robert Müller a1614e4709 Use Margin instead of both VMargin and HMargin 2022-05-01 11:40:21 +02:00
Robert Müller e291a3a70c Move variable declaration 2022-05-01 11:38:58 +02:00
heinrich5991 d5f8bc2783 Only output messages intended for chat to the user of a chat command
Fixes #5052.

The problem seems to be that there are two different concepts tangled up
in console/logging. One is actual logging as in other programs. The
other is "responses to the user of the command that was just entered",
like for rcon or chat commands. This issue isn't fixed by this commit.
2022-05-01 11:18:22 +02:00
heinrich5991 4061069b73 Remove unused chat response variables 2022-05-01 11:18:22 +02:00
heinrich5991 23ef309d0a Don't print the first "Waiting for score threads to complete"
Looks nicer IMO if you don't show the message if there's no actual
waiting.
2022-05-01 11:10:15 +02:00
Tater 488b781f79 fix usage of undefined behavior for default eyes
fix using the same buffer as dest and source.
2022-05-01 03:04:10 -05:00
bors[bot] 567aeb7d9e
Merge #5049
5049: do not release the hooks if you swap r=C0D3D3V a=C0D3D3V

Needs more testing, but first test looks good
https://streamable.com/ypra11

## Checklist

- [x] Tested the change ingame
- [x] Provided screenshots if it is a visual change
- [ ] Tested in combination with possibly related configuration options
- [ ] Written a unit test if it works standalone, system.c especially
- [x] Considered possible null pointers and out of bounds array indexing
- [ ] Changed no physics that affect existing maps
- [x] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional)


Co-authored-by: c0d3d3v <c0d3d3v@mag-keinen-spam.de>
2022-04-30 20:09:20 +00:00
c0d3d3v a289503411
remove duplicate HOOK_RETRACTED assignment 2022-04-30 21:41:13 +02:00
c0d3d3v eae74fe91e
do not send swap request notification to complete team 0 2022-04-30 21:24:25 +02:00
c0d3d3v 808526bdd8
make swap messages more personal 2022-04-30 12:16:38 +02:00
c0d3d3v 0ea811f70e
do not release the hooks if you swap 2022-04-30 10:21:38 +02:00
Edgar 4b25f8d63e
fix tooltips rendering when they shouldn't, fixes #5035 2022-04-30 10:05:28 +02:00
Dennis Felsing 1376dc2aa7 Revert "Get rid of optional, not available on Debian9 build"
This reverts commit 4e3d5c5626.

Should work again with clang++-7 and libc++-7. See
2534d627ac
2022-04-30 01:01:39 +02:00
Robert Müller da44ecd6eb Fix flashing colors in console when scrolling up continuously 2022-04-29 17:51:10 +02:00
bors[bot] ca4b6222da
Merge #5013
5013: Unify logging infrastructure between `IConsole` and `dbg_msg` r=def- a=heinrich5991

This makes the "black console window" less important on Windows (or
anywhere else, for that matter), lets you see logs from other threads in
the f1 console, and removes the distinction between `IConsole::Print`
and `dbg_msg`.

Co-authored-by: heinrich5991 <heinrich5991@gmail.com>
2022-04-29 14:17:07 +00:00
Jupeyy 53cb36bbe7 Fix wrong quad offset for (not caused by transparent) flushes 2022-04-29 15:51:25 +02:00
heinrich5991 b20f16059d Add logging macros log_{error,warn,info,debug,trace}
This makes it almost as short to log as with `dbg_msg` (one to two more
characters), and much shorter than
`Console()->Print(IConsole::OUTPUT_LEVEL_{STANDARD,ADDINFO,DEBUG})`.
2022-04-29 15:32:42 +02:00
heinrich5991 fa4bcd5ec0 Unify logging infrastructure between IConsole and dbg_msg
This makes the "black console window" less important on Windows (or
anywhere else, for that matter), lets you see logs from other threads in
the f1 console, and removes the distinction between `IConsole::Print`
and `dbg_msg`.
2022-04-29 15:21:26 +02:00
Edgar 2fca2872b4
Merge branch 'master' into pr/system/documentation 2022-04-29 10:26:45 +02:00
bors[bot] 98bf721587
Merge #4726 #4727 #4728 #4880 #5022
4726: Display super with "super" string in scoreboard (fixes #4724) r=heinrich5991 a=def-

instead of showing the number 64

Alternative to https://github.com/ddnet/ddnet/pull/4725

<!-- What is the motivation for the changes of this pull request -->

## Checklist

- [ ] Tested the change ingame
- [ ] Provided screenshots if it is a visual change
- [ ] Tested in combination with possibly related configuration options
- [ ] Written a unit test if it works standalone, system.c especially
- [ ] Considered possible null pointers and out of bounds array indexing
- [ ] Changed no physics that affect existing maps
- [ ] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional)


4727: Increase MAX_IDS to 32k (fixes #4723) r=heinrich5991 a=def-

Not sure I like it, otherwise we have to edit Game City.

Maybe we should fail this in map editor already instead of allowing to
create a map which requires > MAX_IDS

<!-- What is the motivation for the changes of this pull request -->

## Checklist

- [x] Tested the change ingame
- [ ] Provided screenshots if it is a visual change
- [ ] Tested in combination with possibly related configuration options
- [ ] Written a unit test if it works standalone, system.c especially
- [ ] Considered possible null pointers and out of bounds array indexing
- [ ] Changed no physics that affect existing maps
- [ ] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional)


4728: Implement shields that remove specific weapon (fixes #4572) r=heinrich5991 a=def-

Thanks to Cellegen for graphics.

Functionality works, still a bit buggy sprite display (see screenshot), maybe someone can
quickly spot what I'm doing wrong

<img width="898" alt="Screenshot 2022-02-18 at 00 50 14" src="https://user-images.githubusercontent.com/2335377/154591108-d89cb475-daaf-4a6a-9748-17160a1e71a2.png">

## Checklist

- [x] Tested the change ingame
- [x] Provided screenshots if it is a visual change
- [ ] Tested in combination with possibly related configuration options
- [ ] Written a unit test if it works standalone, system.c especially
- [ ] Considered possible null pointers and out of bounds array indexing
- [ ] Changed no physics that affect existing maps
- [ ] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional)


4880: Add mysql to github workflow in ubuntu 20.04 r=heinrich5991 a=def-

<!-- What is the motivation for the changes of this pull request -->

## Checklist

- [ ] Tested the change ingame
- [ ] Provided screenshots if it is a visual change
- [ ] Tested in combination with possibly related configuration options
- [ ] Written a unit test if it works standalone, system.c especially
- [ ] Considered possible null pointers and out of bounds array indexing
- [ ] Changed no physics that affect existing maps
- [ ] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional)


5022: Use std::clamp r=heinrich5991 a=def-

Not sure if we want to, there are some easy functions like this we could
take from stdlib now

<!-- What is the motivation for the changes of this pull request -->

## Checklist

- [ ] Tested the change ingame
- [ ] Provided screenshots if it is a visual change
- [ ] Tested in combination with possibly related configuration options
- [ ] Written a unit test if it works standalone, system.c especially
- [ ] Considered possible null pointers and out of bounds array indexing
- [ ] Changed no physics that affect existing maps
- [ ] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional)


Co-authored-by: Dennis Felsing <dennis@felsin9.de>
Co-authored-by: Jupeyy <jupjopjap@gmail.com>
2022-04-29 00:30:17 +00:00
bors[bot] 90c61b0812
Merge #4692
4692: Allow sv_show_others_default in map settings r=heinrich5991 a=def-

for tutorial map

<!-- What is the motivation for the changes of this pull request -->

## Checklist

- [ ] Tested the change ingame
- [ ] Provided screenshots if it is a visual change
- [ ] Tested in combination with possibly related configuration options
- [ ] Written a unit test if it works standalone, system.c especially
- [ ] Considered possible null pointers and out of bounds array indexing
- [ ] Changed no physics that affect existing maps
- [ ] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional)


Co-authored-by: Dennis Felsing <dennis@felsin9.de>
2022-04-29 00:10:02 +00:00
Dennis Felsing ae1c63f33d Try adding mysql to github workflow in ubuntu 20.04
Remove my_bool, has been removed in MySQL 8.0
2022-04-28 18:23:23 +02:00
Dennis Felsing 6a7c7ff4cc Use std::gcd 2022-04-28 17:01:53 +02:00
Dennis Felsing 67286a4971 Remove unused sign() (C++11 has signbit) 2022-04-28 17:01:51 +02:00
Dennis Felsing af0fcf8773 Use std::clamp
Not sure if we want to, there are some easy functions like this we could
take from stdlib now
2022-04-28 17:01:30 +02:00
Jupeyy b8da817716 Return the quad offset of the first added quad, when adding new quads 2022-04-28 16:50:18 +02:00
Dennis Felsing 298287fb4e Implement shields that remove specific weapon (fixes #4572)
Thanks to Cellegen for graphics.

Functionality works, still a bit buggy sprite display, maybe someone can
quickly spot what I'm doing wrong
2022-04-28 16:49:32 +02:00
Dennis Felsing 15b8dc8d64 Remove dots in tooltip texts 2022-04-28 16:46:18 +02:00
Dennis Felsing 3ca86ee128 Display super with "super" string in scoreboard (fixes #4724)
instead of showing the number 64
2022-04-28 16:40:20 +02:00
def 487abbe1b7 Enable swapping in team 0 2022-04-28 16:35:46 +02:00
bors[bot] a8b842277a
Merge #5019
5019: remove cl_predict_ddrace r=heinrich5991 a=C0D3D3V

Since most of the predict code is only ddrace relevant anyway, I would suggest removing the cl_predict_ddrace option instead of checking if m_WorldConfig.m_PredictDDRace is set everywhere ddrace stuff is predicted. 

in case of conflicts with physics from other mods, the check on m_WorldConfig.m_PredictDDRace must however be implemented in the appropriate places (for example for the freeze and unfreeze functions). But since there are currently no conflicts apparently, this is sufficient for now.

fixes the bug I reported here: https://discord.com/channels/252358080522747904/293493549758939136/968114944878989363

`@trml`  what do you think about this?

## Checklist

- [x] Tested the change ingame
- [ ] Provided screenshots if it is a visual change
- [ ] Tested in combination with possibly related configuration options
- [ ] Written a unit test if it works standalone, system.c especially
- [x] Considered possible null pointers and out of bounds array indexing
- [x] Changed no physics that affect existing maps
- [x] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional)


Co-authored-by: c0d3d3v <c0d3d3v@mag-keinen-spam.de>
2022-04-28 12:34:04 +00:00
bors[bot] 6cce22d056
Merge #4813 #4905
4813: Don't allow infinite shotgun bounce (fixes #4809) r=heinrich5991 a=def-

I hope this kind of physic isn't used anywhere, I couldn't trigger it without being stuck in wall.

## Checklist

- [x] Tested the change ingame
- [ ] Provided screenshots if it is a visual change
- [ ] Tested in combination with possibly related configuration options
- [ ] Written a unit test if it works standalone, system.c especially
- [ ] Considered possible null pointers and out of bounds array indexing
- [ ] Changed no physics that affect existing maps
- [ ] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional)


4905: Fix move_sqlite (fixes #4902) r=heinrich5991 a=def-

<!-- What is the motivation for the changes of this pull request -->

## Checklist

- [ ] Tested the change ingame
- [ ] Provided screenshots if it is a visual change
- [ ] Tested in combination with possibly related configuration options
- [ ] Written a unit test if it works standalone, system.c especially
- [ ] Considered possible null pointers and out of bounds array indexing
- [ ] Changed no physics that affect existing maps
- [ ] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional)


Co-authored-by: def <dennis@felsin9.de>
2022-04-28 12:11:05 +00:00
bors[bot] 7a7e291dcf
Merge #4509
4509: Switch new players to DDNet config dir, support Teeworlds as fallback r=heinrich5991 a=def-

This way new players will get DDNet directory, old ones can switch
directory if they want, or keep using the old one.

If we ever enforce a switch in a future version, this will make it
easier since older DDNet versions will also support the DDNet directory
already.

<!-- What is the motivation for the changes of this pull request -->

## Checklist

- [x] Tested the change ingame
- [ ] Provided screenshots if it is a visual change
- [ ] Tested in combination with possibly related configuration options
- [ ] Written a unit test if it works standalone, system.c especially
- [ ] Considered possible null pointers and out of bounds array indexing
- [ ] Changed no physics that affect existing maps
- [ ] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional)


Co-authored-by: def <dennis@felsin9.de>
Co-authored-by: Dennis Felsing <dennis@felsin9.de>
2022-04-28 11:53:12 +00:00
c0d3d3v 1a162c08be
remove unnecessary loop over the possible modifier combinations 2022-04-28 08:45:25 +02:00
bors[bot] e3eeec762d
Merge #4997
4997: Add option to change default eyes when joining server r=def- a=sjrc6

Risky Feat suggested this idea to me, I also thought it was good so I implemented it. 

If you press one of the eyes in the settings it will change which eyes you get when you join a server.

It saves a separate variable for dummy/player.

It will also change your eyes anytime you press one of them, but only if you are playing as the same Tee whose eyes you are trying to change. If someone could figure out the best way to make it change the opposite Tees eyes as well that would be nice but I don't think it's necessary. 

It also changes the "Your Skin:" Tee eyes on the left if you have one selected. 

I had to change the cl_run_on_join code a bit, I tested and I don't think it should ever break anything but it might be good for someone to double check. 

![image](https://user-images.githubusercontent.com/22122579/163762410-ec7aa67d-6417-433d-8707-e21cda2bcd5f.png)



## Checklist

- [x] Tested the change ingame
- [x] Provided screenshots if it is a visual change
- [x] Tested in combination with possibly related configuration options
- [ ] Written a unit test if it works standalone, system.c especially
- [ ] Considered possible null pointers and out of bounds array indexing
- [ ] Changed no physics that affect existing maps
- [ ] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional)


Co-authored-by: Tater <Mr.Potatooh@gmail.com>
2022-04-27 07:42:59 +00:00
bors[bot] 3d183fc16d
Merge #5027
5027: Fix tooltip locations after window resize (fixes #5026) r=edg-l a=def-

<!-- What is the motivation for the changes of this pull request -->

## Checklist

- [ ] Tested the change ingame
- [ ] Provided screenshots if it is a visual change
- [ ] Tested in combination with possibly related configuration options
- [ ] Written a unit test if it works standalone, system.c especially
- [ ] Considered possible null pointers and out of bounds array indexing
- [ ] Changed no physics that affect existing maps
- [ ] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional)


Co-authored-by: Dennis Felsing <dennis@felsin9.de>
2022-04-27 06:05:59 +00:00
Tater 70311d5d4f Add option for default eyes when joining server 2022-04-26 19:47:38 -05:00
Dennis Felsing c174274edc Fix tooltip locations after window resize (fixes #5026) 2022-04-27 01:00:23 +02:00
Jupeyy b23e60c077 Allow onfly FSAA change under Vulkan 2022-04-26 21:09:55 +02:00
bors[bot] d815fdfa03
Merge #5023
5023: fix WalkTime for negativ positions r=def- a=C0D3D3V

I am not sure if there is a more elegant solution, the problem is that fmod in cpp does not return a positive value. maybe we can just use a mod function that always returns positive values.

## Checklist

- [x] Tested the change ingame
- [ ] Provided screenshots if it is a visual change
- [ ] Tested in combination with possibly related configuration options
- [ ] Written a unit test if it works standalone, system.c especially
- [x] Considered possible null pointers and out of bounds array indexing
- [x] Changed no physics that affect existing maps
- [x] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional)


Co-authored-by: c0d3d3v <c0d3d3v@mag-keinen-spam.de>
2022-04-26 08:49:02 +00:00
c0d3d3v bc80d83ec9
fix WalkTime for negativ positions 2022-04-26 09:58:31 +02:00
bors[bot] 6270b1c11d
Merge #5021
5021: fix clamp of m_ThreadCount r=def- a=Jupeyy

fixes #5020

## Checklist

- [ ] Tested the change ingame
- [ ] Provided screenshots if it is a visual change
- [ ] Tested in combination with possibly related configuration options
- [ ] Written a unit test if it works standalone, system.c especially
- [ ] Considered possible null pointers and out of bounds array indexing
- [ ] Changed no physics that affect existing maps
- [ ] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional)


Co-authored-by: Jupeyy <jupjopjap@gmail.com>
2022-04-25 16:32:28 +00:00
bors[bot] 9e227006c0
Merge #4986
4986: Free some opengl2 pointers r=Jupeyy a=ChillerDragon

Fixes these memory leaks on my system (default opengl 3.0.3 renderer debian 11)

```
Direct leak of 72 byte(s) in 1 object(s) allocated from:
    #0 0x4eac0d in operator new(unsigned long) (/home/chiller/Desktop/git/ddnet/asan/DDNet+0x4eac0d)
    #1 0x537ebc in CCommandProcessorFragment_OpenGL2::Cmd_Init(CCommandProcessorFragment_GLBase::SCommand_Init const*) /home/chiller/Desktop/git/ddnet/src/engine/client/backend/opengl/backend_opengl.cpp:1672:21
    #2 0x51f4ed in CCommandProcessorFragment_OpenGL::RunCommand(CCommandBuffer::SCommand const*) /home/chiller/Desktop/git/ddnet/src/engine/client/backend/opengl/backend_opengl.cpp:1061:3
    #3 0x9e9d5e in CCommandProcessor_SDL_GL::RunBuffer(CCommandBuffer*) /home/chiller/Desktop/git/ddnet/src/engine/client/backend_sdl.cpp:250:20
    #4 0x9e57ab in CGraphicsBackend_Threaded::ThreadFunc(void*) /home/chiller/Desktop/git/ddnet/src/engine/client/backend_sdl.cpp:80:25
    #5 0x1d49c45 in thread_run(void*) /home/chiller/Desktop/git/ddnet/src/base/system.cpp:867:2
    #6 0x7fe2a3b8fea6 in start_thread nptl/pthread_create.c:477:8

Direct leak of 72 byte(s) in 1 object(s) allocated from:
    #0 0x4eac0d in operator new(unsigned long) (/home/chiller/Desktop/git/ddnet/asan/DDNet+0x4eac0d)
    #1 0x537ff6 in CCommandProcessorFragment_OpenGL2::Cmd_Init(CCommandProcessorFragment_GLBase::SCommand_Init const*) /home/chiller/Desktop/git/ddnet/src/engine/client/backend/opengl/backend_opengl.cpp:1673:29
    #2 0x51f4ed in CCommandProcessorFragment_OpenGL::RunCommand(CCommandBuffer::SCommand const*) /home/chiller/Desktop/git/ddnet/src/engine/client/backend/opengl/backend_opengl.cpp:1061:3
    #3 0x9e9d5e in CCommandProcessor_SDL_GL::RunBuffer(CCommandBuffer*) /home/chiller/Desktop/git/ddnet/src/engine/client/backend_sdl.cpp:250:20
    #4 0x9e57ab in CGraphicsBackend_Threaded::ThreadFunc(void*) /home/chiller/Desktop/git/ddnet/src/engine/client/backend_sdl.cpp:80:25
    #5 0x1d49c45 in thread_run(void*) /home/chiller/Desktop/git/ddnet/src/base/system.cpp:867:2
    #6 0x7fe2a3b8fea6 in start_thread nptl/pthread_create.c:477:8

Direct leak of 48 byte(s) in 1 object(s) allocated from:
    #0 0x4eac0d in operator new(unsigned long) (/home/chiller/Desktop/git/ddnet/asan/DDNet+0x4eac0d)
    #1 0x53826a in CCommandProcessorFragment_OpenGL2::Cmd_Init(CCommandProcessorFragment_GLBase::SCommand_Init const*) /home/chiller/Desktop/git/ddnet/src/engine/client/backend/opengl/backend_opengl.cpp:1675:36
    #2 0x51f4ed in CCommandProcessorFragment_OpenGL::RunCommand(CCommandBuffer::SCommand const*) /home/chiller/Desktop/git/ddnet/src/engine/client/backend/opengl/backend_opengl.cpp:1061:3
    #3 0x9e9d5e in CCommandProcessor_SDL_GL::RunBuffer(CCommandBuffer*) /home/chiller/Desktop/git/ddnet/src/engine/client/backend_sdl.cpp:250:20
    #4 0x9e57ab in CGraphicsBackend_Threaded::ThreadFunc(void*) /home/chiller/Desktop/git/ddnet/src/engine/client/backend_sdl.cpp:80:25
    #5 0x1d49c45 in thread_run(void*) /home/chiller/Desktop/git/ddnet/src/base/system.cpp:867:2
    #6 0x7fe2a3b8fea6 in start_thread nptl/pthread_create.c:477:8

Direct leak of 48 byte(s) in 1 object(s) allocated from:
    #0 0x4eac0d in operator new(unsigned long) (/home/chiller/Desktop/git/ddnet/asan/DDNet+0x4eac0d)
    #1 0x538130 in CCommandProcessorFragment_OpenGL2::Cmd_Init(CCommandProcessorFragment_GLBase::SCommand_Init const*) /home/chiller/Desktop/git/ddnet/src/engine/client/backend/opengl/backend_opengl.cpp:1674:28
    #2 0x51f4ed in CCommandProcessorFragment_OpenGL::RunCommand(CCommandBuffer::SCommand const*) /home/chiller/Desktop/git/ddnet/src/engine/client/backend/opengl/backend_opengl.cpp:1061:3
    #3 0x9e9d5e in CCommandProcessor_SDL_GL::RunBuffer(CCommandBuffer*) /home/chiller/Desktop/git/ddnet/src/engine/client/backend_sdl.cpp:250:20
    #4 0x9e57ab in CGraphicsBackend_Threaded::ThreadFunc(void*) /home/chiller/Desktop/git/ddnet/src/engine/client/backend_sdl.cpp:80:25
    #5 0x1d49c45 in thread_run(void*) /home/chiller/Desktop/git/ddnet/src/base/system.cpp:867:2
    #6 0x7fe2a3b8fea6 in start_thread nptl/pthread_create.c:477:8
```

## Checklist

- [x] Tested the change ingame
- [ ] Provided screenshots if it is a visual change
- [ ] Tested in combination with possibly related configuration options
- [ ] Written a unit test if it works standalone, system.c especially
- [ ] Considered possible null pointers and out of bounds array indexing
- [ ] Changed no physics that affect existing maps
- [x] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional)


Co-authored-by: ChillerDrgon <ChillerDragon@gmail.com>
2022-04-25 16:07:05 +00:00
ChillerDrgon d364c63b69 Free some opengl2 pointers 2022-04-25 18:06:21 +02:00
Jupeyy 428c1ca4a8 fix clamp of m_ThreadCount 2022-04-25 17:37:15 +02:00
c0d3d3v 68036e6a19
remove cl_predict_ddrace 2022-04-25 15:57:10 +02:00
bors[bot] 1dea02d456
Merge #5018
5018: fix dummy hammer interval, this became incorrect after a few days r=def- a=C0D3D3V

Reported by Konsti here: https://discord.com/channels/252358080522747904/293493549758939136/967073772836376586
I have tested the change on Justfly with my dummy :D since it is exactly the same interval as before it should not change any Physics. 

## Checklist

- [x] Tested the change ingame
- [ ] Provided screenshots if it is a visual change
- [ ] Tested in combination with possibly related configuration options
- [ ] Written a unit test if it works standalone, system.c especially
- [x] Considered possible null pointers and out of bounds array indexing
- [x] Changed no physics that affect existing maps
- [x] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional)


Co-authored-by: c0d3d3v <c0d3d3v@mag-keinen-spam.de>
2022-04-25 13:17:01 +00:00
c0d3d3v 2f4ccb94de
fix dummy hammer interval, this became incorrect after a few days 2022-04-25 14:10:32 +02:00
def 2c0565b85e Fix creating storage directory recursively 2022-04-25 09:50:46 +02:00
Dennis Felsing 50e9e4c8c4 Use XDG_DATA_HOME 2022-04-25 09:50:46 +02:00
def 790c1cc0aa Switch new players to DDNet config dir, support Teeworlds as fallback
This way new players will get DDNet directory, old ones can switch
directory if they want, or keep using the old one.

If we ever enforce a switch in a future version, this will make it
easier since older DDNet versions will also support the DDNet directory
already.
2022-04-25 09:50:45 +02:00
bors[bot] 9be59a990b
Merge #4678
4678: Ignore F5 key press when ingame menu is open r=heinrich5991 a=def-

Since ghost menu and browser use F5 already to refresh, and having a
bind on it, would cause both actions at once.

I believe it makes sense to have this special handling only for F5,
other F-keys don't have this problem since we don't use them in any
menus.

<!-- What is the motivation for the changes of this pull request -->

## Checklist

- [x] Tested the change ingame
- [ ] Provided screenshots if it is a visual change
- [ ] Tested in combination with possibly related configuration options
- [ ] Written a unit test if it works standalone, system.c especially
- [ ] Considered possible null pointers and out of bounds array indexing
- [ ] Changed no physics that affect existing maps
- [ ] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional)


Co-authored-by: Dennis Felsing <dennis@felsin9.de>
2022-04-24 23:04:58 +00:00
Dennis Felsing 394b2a02e0 Remove cl_show_quads bind 2022-04-24 12:28:04 +02:00
heinrich5991 103b663662 Rename ActCur, some "actual" → "current"
Seems like it got introduced by means of the false friend "actual" ≠
"aktuell" = "current".
2022-04-23 00:42:37 +02:00
Jupeyy 0b5122d751 Fix wrongly used viewport parameters 2022-04-19 17:26:05 +02:00
bors[bot] e06b3d9579
Merge #5007
5007: Get rid of optional, not available on Debian9 build r=edg-l a=def-

Since we don't have full C++17 support with the GCC version there.

## Checklist

- [ ] Tested the change ingame
- [ ] Provided screenshots if it is a visual change
- [ ] Tested in combination with possibly related configuration options
- [ ] Written a unit test if it works standalone, system.c especially
- [ ] Considered possible null pointers and out of bounds array indexing
- [ ] Changed no physics that affect existing maps
- [ ] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional)


Co-authored-by: Dennis Felsing <dennis@felsin9.de>
2022-04-19 07:57:40 +00:00
Dennis Felsing 4e3d5c5626 Get rid of optional, not available on Debian9 build 2022-04-19 09:56:28 +02:00
bors[bot] 08f856d741
Merge #5004
5004: add livefreeze commands to rcon r=def- a=edg-l

<!-- What is the motivation for the changes of this pull request -->

## Checklist

- [x] Tested the change ingame
- [ ] Provided screenshots if it is a visual change
- [ ] Tested in combination with possibly related configuration options
- [ ] Written a unit test if it works standalone, system.c especially
- [ ] Considered possible null pointers and out of bounds array indexing
- [ ] Changed no physics that affect existing maps
- [ ] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional)


Co-authored-by: Edgar Luque <git@edgarluque.com>
Co-authored-by: Edgar <git@edgarluque.com>
2022-04-19 07:35:42 +00:00
Edgar 6b15abeeae
put it above left up down 2022-04-19 08:58:26 +02:00
Edgar 50e6744d91
fix typo 2022-04-18 16:38:17 +02:00
Edgar b9fc6bc8a4
add livefreeze commands to rcon 2022-04-18 16:37:35 +02:00
Edgar 646162eb09
make super ignore livefreeze, fix #4973 2022-04-18 15:40:39 +02:00
bors[bot] c39448ca53
Merge #5000
5000: Inform about client restart when changing GPU r=Jupeyy a=def-

<!-- What is the motivation for the changes of this pull request -->

## Checklist

- [x] Tested the change ingame
- [ ] Provided screenshots if it is a visual change
- [ ] Tested in combination with possibly related configuration options
- [ ] Written a unit test if it works standalone, system.c especially
- [ ] Considered possible null pointers and out of bounds array indexing
- [ ] Changed no physics that affect existing maps
- [ ] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional)


Co-authored-by: def <dennis@felsin9.de>
2022-04-18 08:22:18 +00:00
def 87b7550a4a Inform about client restart when changing GPU 2022-04-18 10:16:24 +02:00
bors[bot] fdcb1576bd
Merge #4946 #4993 #4998 #4999
4946: Better forced viewport handling r=def- a=Jupeyy

For #4939

For the performance warnings refering `vkCmdClearAttachments` ignore them, because this function is only called when:
- clear color is changed(open/close editor, switch between entities) to directly flush a clear with the new color
- ~~a viewport is used that is "worse" than 5:4 (I don't really want to switch to non renderpass clear completly, since it *can* improve performance -- https://community.arm.com/arm-community-blogs/b/graphics-gaming-and-vr-blog/posts/vulkan-samples "Therefore, avoid using LOAD_OP_LOAD and vkCmdClearAttachments and use LOAD_OP_CLEAR or LOAD_OP_DONT_CARE whenever possible.")~~
thinking about it, maybe i can also drop this call now, since its dynamic viewport anyway

## Checklist

- [x] Tested the change ingame
- [ ] Provided screenshots if it is a visual change
- [ ] Tested in combination with possibly related configuration options
- [ ] Written a unit test if it works standalone, system.c especially
- [ ] Considered possible null pointers and out of bounds array indexing
- [ ] Changed no physics that affect existing maps
- [ ] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional)


4993: Unselect text after ctrl-u r=Jupeyy a=def-

<!-- What is the motivation for the changes of this pull request -->

## Checklist

- [x] Tested the change ingame
- [ ] Provided screenshots if it is a visual change
- [ ] Tested in combination with possibly related configuration options
- [ ] Written a unit test if it works standalone, system.c especially
- [ ] Considered possible null pointers and out of bounds array indexing
- [ ] Changed no physics that affect existing maps
- [ ] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional)


4998: Refactor tooltips and add some more r=def- a=edg-l

Refactored tooltips so they render last, otherwise stuff rendered after the call is overlapped.

Also renamed "Alpha" to "Opacity" which is more clear to non-devs.

## Checklist

- [x] Tested the change ingame
- [ ] Provided screenshots if it is a visual change
- [ ] Tested in combination with possibly related configuration options
- [ ] Written a unit test if it works standalone, system.c especially
- [ ] Considered possible null pointers and out of bounds array indexing
- [ ] Changed no physics that affect existing maps
- [ ] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional)


4999: Respect GPU type better r=def- a=Jupeyy

fixes #4994

## Checklist

- [ ] Tested the change ingame
- [ ] Provided screenshots if it is a visual change
- [ ] Tested in combination with possibly related configuration options
- [ ] Written a unit test if it works standalone, system.c especially
- [ ] Considered possible null pointers and out of bounds array indexing
- [ ] Changed no physics that affect existing maps
- [ ] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional)


Co-authored-by: Jupeyy <jupjopjap@gmail.com>
Co-authored-by: def <dennis@felsin9.de>
Co-authored-by: Edgar Luque <git@edgarluque.com>
2022-04-18 08:06:49 +00:00
Edgar eba7a14cb4
add missing end new lines 2022-04-18 09:55:50 +02:00
Jupeyy d770913c11 Don't force clear anymore for forced viewports 2022-04-18 09:50:26 +02:00
Jupeyy 0312346d1a Use a forced dynamic viewport for unsupported resolutions instead 2022-04-18 09:50:26 +02:00
Jupeyy 50f9aa88d3 Prepare graphics for dynamic viewport changes 2022-04-18 09:50:19 +02:00
Edgar fbbcbb6d2f
remove designated initializers because we live in 2017 2022-04-18 09:44:13 +02:00
Jupeyy 2a71e381ea Respect GPU type better 2022-04-18 09:44:11 +02:00
Edgar 74286d1dd4
format code 2022-04-18 09:34:21 +02:00
Edgar faab2ded74
Refactor tooltips to render last, add some tooltips 2022-04-18 09:34:05 +02:00
def 041c565534 Unselect text after ctrl-u 2022-04-18 00:22:11 +02:00
Zwelf 887e6673fe Initialize CCharacter::m_NumInputs of game server 2022-04-17 23:06:35 +02:00
bors[bot] d4dcaa2471
Merge #4989
4989: Add null backend r=def- a=ChillerDragon

Thanks to `@Jupeyy` for the idea.

Replacing graphics_threaded_null.h with a null backend
makes code maintenance and memory cleanup easier.

Fixes these memory leaks in headless client (https://github.com/ddnet/ddnet/pull/4970)

```
Direct leak of 1048576 byte(s) in 1 object(s) allocated from:
    #0 0x4b6f6d in malloc (/home/runner/work/ddnet/ddnet/san/DDNet+0x4b6f6d)
    #1 0xd92ffb in CTextRender::InitTextures(int, int, IGraphics::CTextureHandle (&) [2], unsigned char* (&) [2]) /home/runner/work/ddnet/ddnet/src/engine/client/text.cpp:325:24
    #2 0xd53795 in CTextRender::LoadFont(char const*, unsigned char const*, unsigned long) /home/runner/work/ddnet/ddnet/src/engine/client/text.cpp:729:3
    #3 0xade5cd in CClient::LoadFont() /home/runner/work/ddnet/ddnet/src/engine/client/client.cpp:4070:32
    #4 0x155b3de in CGameClient::OnInit() /home/runner/work/ddnet/ddnet/src/game/client/gameclient.cpp:246:12
    #5 0xa8ecfe in CClient::Run() /home/runner/work/ddnet/ddnet/src/engine/client/client.cpp:2933:16
    #6 0xaf6726 in main /home/runner/work/ddnet/ddnet/src/engine/client/client.cpp:4458:11
    #7 0x7fadd9e610b2 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x240b2)
```

## Checklist

- [x] Tested the change ingame
- [ ] Provided screenshots if it is a visual change
- [ ] Tested in combination with possibly related configuration options
- [ ] Written a unit test if it works standalone, system.c especially
- [ ] Considered possible null pointers and out of bounds array indexing
- [ ] Changed no physics that affect existing maps
- [x] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional)


Co-authored-by: ChillerDrgon <ChillerDragon@gmail.com>
2022-04-16 20:15:13 +00:00
Noa 482d45484b fix gun sounds for blockworlds servers 2022-04-16 19:36:25 +02:00
ChillerDrgon 9ee3534ec6 Add null backend
Thanks to @Jupeyy for the idea.

Replacing graphics_threaded_null.h with a null backend
makes code maintenance and memory cleanup easier.
2022-04-16 12:31:28 +02:00
bors[bot] e81ebfb0bb
Merge #4964 #4984 #4985
4964: allow freecam to center on world border r=def- a=C0D3D3V

fixes #4953

I think the 200 units or 6.25 blocks more should not bother anyone. 
![fix 2022-04-09_15-14](https://user-images.githubusercontent.com/14315968/162576159-7d73eb8c-b9c9-471b-bed0-7477568376d6.png)
under some circumstances, it will only move to x=1 (or in blocks 0.03) but this should be negligible.  

## Checklist

- [x] Tested the change ingame
- [x] Provided screenshots if it is a visual change
- [ ] Tested in combination with possibly related configuration options
- [ ] Written a unit test if it works standalone, system.c especially
- [ ] Considered possible null pointers and out of bounds array indexing
- [x] Changed no physics that affect existing maps
- [x] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional)


4984: Don't read from backend if Init failed r=def- a=Jupeyy

fixes #4981 

This `bug` should not create any uninitended behavior, since these values get reinitialized after the backend creation worked

## Checklist

- [ ] Tested the change ingame
- [ ] Provided screenshots if it is a visual change
- [ ] Tested in combination with possibly related configuration options
- [ ] Written a unit test if it works standalone, system.c especially
- [ ] Considered possible null pointers and out of bounds array indexing
- [ ] Changed no physics that affect existing maps
- [ ] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional)


4985: Close sockets r=def- a=ChillerDragon

https://github.com/ddnet/ddnet/pull/4970

Fixes

```
 Direct leak of 205848 byte(s) in 1 object(s) allocated from:
    #0 0x4a200d in malloc (/home/runner/work/ddnet/ddnet/san/DDNet-Server+0x4a200d)
    #1 0xc7fe3f in net_udp_create /home/runner/work/ddnet/ddnet/src/base/system.cpp:1640:41
    #2 0xbf2d0b in CNetServer::Open(NETADDR, CNetBan*, int, int) /home/runner/work/ddnet/ddnet/src/engine/shared/network_server.cpp:55:13
    #3 0x568cdc in CServer::Run() /home/runner/work/ddnet/ddnet/src/engine/server/server.cpp:2448:60
    #4 0x5a922b in main /home/runner/work/ddnet/ddnet/src/engine/server/server.cpp:3718:21
    #5 0x7ff75f52c0b2 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x240b2)
```

## Checklist

- [ ] Tested the change ingame
- [ ] Provided screenshots if it is a visual change
- [ ] Tested in combination with possibly related configuration options
- [ ] Written a unit test if it works standalone, system.c especially
- [ ] Considered possible null pointers and out of bounds array indexing
- [ ] Changed no physics that affect existing maps
- [x] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional)


Co-authored-by: c0d3d3v <c0d3d3v@mag-keinen-spam.de>
Co-authored-by: Jupeyy <jupjopjap@gmail.com>
Co-authored-by: ChillerDrgon <ChillerDragon@gmail.com>
2022-04-15 20:37:18 +00:00
bors[bot] 740a18436d
Merge #4988
4988: Update voting.cpp r=def- a=bencie

fix console help text for callvote parameters

<!-- What is the motivation for the changes of this pull request -->

## Checklist

- [ ] Tested the change ingame
- [ ] Provided screenshots if it is a visual change
- [ ] Tested in combination with possibly related configuration options
- [ ] Written a unit test if it works standalone, system.c especially
- [ ] Considered possible null pointers and out of bounds array indexing
- [ ] Changed no physics that affect existing maps
- [ ] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional)


Co-authored-by: bencie <78111412+bencie@users.noreply.github.com>
2022-04-15 20:18:25 +00:00
bencie 5401364813
Update voting.cpp
fix console help text for callvote parameters
2022-04-15 18:16:28 +02:00
Jupeyy d892de2b03 Fix editor animation offset time being affected by the animation speed factor 2022-04-15 10:05:39 +02:00
c0d3d3v 9dc2141ded
remove shadow variables
fix GetDigitsIndex Parameters
remove unused y addidion in debughud
2022-04-14 14:46:22 +02:00
c0d3d3v a9c8b344a2
Player position, speed and angle can now be displayed in the HUD.
- Added RenderMovementInformation() to the HUD
- Use m_Width instead of recalculating the display width each time in hud.cpp
- Reworked Debug HUD:
    - Display velspeed.x*ramp and velspeed.y instead of velspeed*ramp
    - Show unit of speed
    - The graph for the velspeed.x*ramp behavior (if dbg_tuning is active) is now nicer and usable. A second graph zooming in on the turning point has been added.
    - The velspeed.x*ramp graph will be redrawn only when new tuning parameters are added
- The target angle used to draw the tees is now calculated using the m_TargetX, m_TargetY in DDNetCharacterDisplayInfo if available.
- Added m_TargetX, m_TargetY and m_RampValue to DDNetCharacterDisplayInfo Snap (m_RampValue has a precision of one thousandth)
- Added CGraph::InsertAt() to create static Graphs
- Added "assets/hud" to initial created Directories
- Added Settings to hide Dummy Action HUD and Player Movement HUD cl_showhud_dummy_actions, cl_showhud_player_position, cl_showhud_player_speed, cl_showhud_player_angle
- Added Pointer to m_PrevExtendedDisplayInfo, for calculation of interpolated Angle in Player Rendering
- Added GetDigitsIndex(int Value, float Max); to hud.cpp
2022-04-14 13:42:19 +02:00
c0d3d3v be75b80520
Render Dummy Actions on the right side of the screen
- Render Practice Mode next to the other player effects
- Make Recording Notification Position more symetric
2022-04-14 13:40:45 +02:00
c0d3d3v 940047fb8e
Add Practice Mode Symbol next to the timer
- Add new hud.png
- expand DDNetCharacterDisplayInfo with m_IsInPracticeMode
2022-04-14 13:40:45 +02:00
c0d3d3v ef468e8181
remove constant scaling factors and constant y offset
- move weapons above jumps
- move effects up if no jumps are available
2022-04-14 13:40:45 +02:00
c0d3d3v 6159b181e3
use QuadsSetSubsetFree also for freeze bar
- set the proportions of the used area of the end pieces for the progress indicator as constants.
- do not manipulate the position and length within the render function
2022-04-14 13:40:44 +02:00
c0d3d3v 670da66ec1
add vertical ninja bar 2022-04-14 13:40:44 +02:00
c0d3d3v a4b6558ff6
load CNetObj_DDNetCharacterDisplayInfo into CCharacter 2022-04-14 13:40:44 +02:00
c0d3d3v 09bd10666c
increase height of freeze bar
- cut of 10% of top and bottom of progress bar sprites
2022-04-14 13:40:44 +02:00
c0d3d3v e71578e468
Add DDNetCharacterDisplayInfo NetObj
- Show all components of new HUD also in Spectator (Ninja Bar, Freeze
  Bar and Jumps)
- hide freeze bar if you sit in freeze
2022-04-14 13:40:40 +02:00
c0d3d3v b403f474a0
Add Freeze Bar 2022-04-14 13:40:05 +02:00
c0d3d3v 78a0a3d31e
add deep and live frozen display 2022-04-14 13:38:56 +02:00
c0d3d3v 63d4591fe5
Make Ninja Bar Smooth
- Added new version of hud.png
2022-04-14 13:38:56 +02:00
c0d3d3v b942b7a72a
Show weapon no hit only if the tee got the weapon
make ninja sword bigger
show negative jumps correct
move icons up if there is an empty space
2022-04-14 13:38:56 +02:00
c0d3d3v de750e81d4
display ninja Bar 2022-04-14 13:38:55 +02:00
c0d3d3v 3957a7404e
move m_Ninja in Character Core 2022-04-14 13:38:55 +02:00
c0d3d3v 320e9e030f
Rename Read() function to avoid equal naming 2022-04-14 13:38:55 +02:00
c0d3d3v 5ac46f9bd5
Many new indicators have been added to the HUD
- A display of the weapons available to the player
- The weapon the player is carrying is highlighted
- Indicators for the special abilities of the player
- Indicators for abilities taken away from the player
- Control indicators for dummy controls
- The jump indicator has been slightly adjusted
2022-04-14 13:38:55 +02:00
c0d3d3v 7abeaf0cd7
Preparations for the new HUD
- add pickup sprites to 0.6 data source
- New Enum for the 4 pickup categories
- Remove the unnecessary access to client_data7 for the pickup sprites
- Use the correct sprite set for the HUD sprites
- Read existing weapons into m_Predicted so that this information matches the last snap if the CCharacter is not predicted
- Move m_aWeapons from CCharacter to CCharacterCore for a more consistent data model since it was previously defined twice in the server and client (further so that it can be accessed with m_Predicted)
- Read CNetObj_Character into m_Predicted so that this information matches the last snap if the CCharacter is not predicted.
2022-04-14 13:38:55 +02:00
c0d3d3v b23811b197
show local available and used jumps, in spec only available jumps 2022-04-14 13:38:54 +02:00
c0d3d3v a0164df3da
Small cleanup of HUD + comment on distance calculation at sound 2022-04-14 13:38:54 +02:00
Jupeyy 53e121841e
Return the quad offset of the first added quad, when adding new quads 2022-04-14 13:38:54 +02:00
c0d3d3v 755c260401
Add HUD Sprites, LoadHudSkin() and HUD Assets Tab 2022-04-14 13:38:42 +02:00
ChillerDrgon 18ca71ae55 Close sockets 2022-04-14 11:50:10 +02:00
Jupeyy 3435e3ae04 Don't read from backend if Init failed 2022-04-13 22:06:36 +02:00
bors[bot] f60ae47be1
Merge #4976
4976: fix rendering of nameplates for spectating tees r=def- a=C0D3D3V

bug was introduced by #4870

## Checklist

- [x] Tested the change ingame
- [ ] Provided screenshots if it is a visual change
- [ ] Tested in combination with possibly related configuration options
- [ ] Written a unit test if it works standalone, system.c especially
- [x] Considered possible null pointers and out of bounds array indexing
- [x] Changed no physics that affect existing maps
- [x] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional)


Co-authored-by: c0d3d3v <c0d3d3v@mag-keinen-spam.de>
2022-04-12 21:48:45 +00:00
c0d3d3v e65bfa6350
fix rendering of nameplates for spectating tees (bug introduced by #4870) 2022-04-12 23:30:26 +02:00
bors[bot] c16ad24bec
Merge #4974
4974: Its is not ctrl+leftclick but ctrl+rightclick r=def- a=ChillerDragon

Thanks to `@c0d3d3v` for debugging my left right weakness lmao.

I initially intended left click but that was conflicting with navigation already so I switched it. But not the description.

Co-authored-by: ChillerDrgon <ChillerDragon@gmail.com>
2022-04-11 22:27:17 +00:00
Tater 712b3f041d fix local hookline direction when mouse is exactly center 2022-04-11 06:32:02 -05:00
ChillerDrgon 39be867e7b Its is not ctrl+leftclick but ctrl+rightclick 2022-04-11 11:28:05 +02:00
bors[bot] 0157deae61
Merge #4971
4971: Fix undefined behavior in fixed point number conversion r=def- a=Robyt3

See #4970:

```
/home/runner/work/ddnet/ddnet/src/base/math.h:50:11: runtime error: left shift of negative value -32
    #0 0x198d955 in i2fx(int) /home/runner/work/ddnet/ddnet/src/base/math.h:50:11
    #1 0x197ebdf in CLayerQuads::NewQuad(int, int, int, int) /home/runner/work/ddnet/ddnet/src/game/editor/layer_quads.cpp:47:22
    #2 0x18ef8d3 in CEditor::Init() /home/runner/work/ddnet/ddnet/src/game/editor/editor.cpp:6360:18
    #3 0xa8e5be in CClient::Run() /home/runner/work/ddnet/ddnet/src/engine/client/client.cpp:2917:13
    #4 0xaf6726 in main /home/runner/work/ddnet/ddnet/src/engine/client/client.cpp:4458:11
    #5 0x7fadd9e610b2 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x240b2)
    #6 0x43cefd in _start (/home/runner/work/ddnet/ddnet/san/DDNet+0x43cefd)
```

Upstream https://github.com/teeworlds/teeworlds/pull/3143.

## Checklist

- [X] Tested the change ingame (on upstream)
- [ ] Provided screenshots if it is a visual change
- [ ] Tested in combination with possibly related configuration options
- [ ] Written a unit test if it works standalone, system.c especially
- [ ] Considered possible null pointers and out of bounds array indexing
- [X] Changed no physics that affect existing maps
- [X] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional)


Co-authored-by: Robert Müller <robytemueller@gmail.com>
2022-04-10 21:11:31 +00:00
c0d3d3v 5ba4ddd6dc
fix calculation of m_Angle of CCharacterCore 2022-04-10 19:12:56 +02:00
Robert Müller c14889e18a Code format: use multiple lines for function 2022-04-10 15:41:22 +02:00
Robert Müller 05bc25610b Fix undefined behavior in fixed point number conversion 2022-04-10 15:38:45 +02:00
c0d3d3v aeaaa67581
allow freecam to center on world border
fixes #4953
2022-04-09 15:24:57 +02:00
Robert Müller ee87077207 Move/Merge variable declarations with assignments in CServer 2022-04-08 19:53:22 +02:00
Robert Müller 60230f4eb7 Move/Merge variable declarations with assignments in CClient 2022-04-08 19:49:00 +02:00
Robert Müller 1daefbdeb2 Use bool instead of int 2022-04-08 19:40:28 +02:00
bors[bot] b12d334063
Merge #4960
4960: fix #4956 r=def- a=C0D3D3V

if the snapshots are in a different order than predicted SPEC_FREEVIEW was forced although a different ID is desired in NETOBJTYPE_SPECTATORINFO.


## Checklist

- [x] Tested the change ingame
- [ ] Provided screenshots if it is a visual change
- [ ] Tested in combination with possibly related configuration options
- [x] Considered possible null pointers and out of bounds array indexing
- [ ] Written a unit test if it works standalone, system.c especially
- [x] Changed no physics that affect existing maps
- [x] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional)


Co-authored-by: c0d3d3v <c0d3d3v@mag-keinen-spam.de>
2022-04-08 15:07:40 +00:00
c0d3d3v 97d2de7af8
fix #4956
if the snapshots are in a different order than predicted SPEC_FREEVIEW was forced although a different ID is desired in NETOBJTYPE_SPECTATORINFO.
2022-04-08 16:38:37 +02:00
ChillerDrgon d1798d23da Advertise ctrl+left mouse in tooltip 2022-04-08 15:38:38 +02:00
Dennis Felsing 8ef1f35f89 Revert "CGameClient::LoadMapSettings: Load the default tuning params by default"
This reverts commit 754562ce0b.

This breaks rendering for ddnet mode, thanks to cheeser0613 for report
2022-04-08 15:05:53 +02:00
ChillerDrgon fe712214a9 Editor: ctrl+leftclick tile to select layer 2022-04-08 14:59:33 +02:00
Dennis Felsing 2eb403be93
Merge pull request #4895 from def-/pr-practice-load
Reset practice when loading team (fixes #4894)
2022-04-08 01:37:17 +02:00
Edgar 3c904ffbb4
fix conflict 2022-04-07 09:46:02 +02:00
Edgar 0b8152f6e3
add 1 second delay to tooltips 2022-04-07 09:43:49 +02:00
Edgar 527835e171
fix style 2022-04-07 09:43:49 +02:00
Edgar 17d93f63e3
implement DoTooltip 2022-04-07 09:43:47 +02:00
Dennis Felsing 070975a174 Version 16.0.3 2022-04-05 17:43:31 +02:00
bors[bot] 34993f020c
Merge #4952
4952: Fix missing renamed shadowed variable r=def- a=Jupeyy

Caused by commit 8134f9fa55

Reported by Silex on discord:

https://user-images.githubusercontent.com/6654924/161612015-a04d6479-ac37-465e-929f-2cf5b7264103.mp4



## Checklist

- [x] Tested the change ingame
- [ ] Provided screenshots if it is a visual change
- [ ] Tested in combination with possibly related configuration options
- [ ] Written a unit test if it works standalone, system.c especially
- [ ] Considered possible null pointers and out of bounds array indexing
- [ ] Changed no physics that affect existing maps
- [ ] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional)


Co-authored-by: Jupeyy <jupjopjap@gmail.com>
2022-04-04 20:45:21 +00:00
Jupeyy cd1a34c411 Fix missing renamed shadowed variable 2022-04-04 20:51:19 +02:00
Dennis Felsing 6caa29df7c Only try joining tutorial once we have server list
Otherwise quickly pressing enter you end up not joining tutorial
2022-04-04 10:17:39 +02:00
Jupeyy d397f692f8 Fix multi sampling 2022-04-03 18:49:41 +02:00
bors[bot] 4c1f60acfd
Merge #4854
4854: Replace static const in header with extern r=def- a=Chairn

This should prevent symbols from being demultiplied in different translation unit even if they are not used. Difference in size is as follow using a release build and no option set with cmake. With clang, difference is inferior to 1kB for any executable. With gcc, client size is reduced by 3.5kB.

I couldn't run the test suite (see https://github.com/ddnet/ddnet/issues/4853)

## Checklist

- [ ] Tested the change ingame
- [ ] Provided screenshots if it is a visual change
- [ ] Tested in combination with possibly related configuration options
- [ ] Written a unit test if it works standalone, system.c especially
- [ ] Considered possible null pointers and out of bounds array indexing
- [ ] Changed no physics that affect existing maps
- [ ] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional)


Co-authored-by: Chairn <chairn.nq@hotmail.fr>
2022-04-03 08:34:48 +00:00
Chairn 1f7b3159af ms_Pool* --> gs_Pool* 2022-04-03 01:30:00 +02:00
Chairn 691b0435db Change tolower array name to not conflict with tolower std function 2022-04-03 01:12:27 +02:00
Chairn ae1e3c079d clang-format 2022-04-03 01:12:27 +02:00
Chairn 21e64cbdcb Added external linkage instead of static const 2022-04-03 01:12:27 +02:00
def 04f51a55bb Version 16.0.2 2022-04-02 21:23:47 +02:00
def e4bec352d9 Remove unused bubble sort (finally) 2022-04-02 18:30:03 +02:00
bors[bot] 7546ee715f
Merge #4942
4942: Fix linux x86 compilation r=Jupeyy a=def-

```
src/engine/client/backend/vulkan/backend_vulkan.cpp:1422:108: error: no matching function for call to 'maximum(size_t&, VkDeviceSize)'
```
<!-- What is the motivation for the changes of this pull request -->

## Checklist

- [ ] Tested the change ingame
- [ ] Provided screenshots if it is a visual change
- [ ] Tested in combination with possibly related configuration options
- [ ] Written a unit test if it works standalone, system.c especially
- [ ] Considered possible null pointers and out of bounds array indexing
- [ ] Changed no physics that affect existing maps
- [ ] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional)


Co-authored-by: def <dennis@felsin9.de>
2022-04-02 15:39:19 +00:00
def d19623aceb Fix linux x86 compilation
src/engine/client/backend/vulkan/backend_vulkan.cpp:1422:108: error: no matching function for call to 'maximum(size_t&, VkDeviceSize)'
2022-04-02 17:22:49 +02:00
bors[bot] 2be8dc69cb
Merge #4941
4941: Keep DDNet window responsive for loading tasks r=def- a=Jupeyy

This will keep the DDNet window responsive, especially when loading the client the first time this is important, so that SDL2 events aren't lost.

Menu's RenderLoading allows up to 60 frames per second, so calling it too often cannot really happen.

For reloading (skins&assets) / demo loading etc. it only swaps to the render screen after half a second passed. Even if this might not be the nicest, it's still better than just freezing the window.

I hope this addresses issues from #4936



## Checklist

- [x] Tested the change ingame
- [ ] Provided screenshots if it is a visual change
- [ ] Tested in combination with possibly related configuration options
- [ ] Written a unit test if it works standalone, system.c especially
- [ ] Considered possible null pointers and out of bounds array indexing
- [ ] Changed no physics that affect existing maps
- [ ] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional)


Co-authored-by: Jupeyy <jupjopjap@gmail.com>
2022-04-02 15:19:26 +00:00
Jupeyy f7e3662cd7 Keep DDNet window responsive for loading tasks 2022-04-02 17:03:23 +02:00
Robert Müller 36d9802c8c Move declaration of loop variable 2022-04-02 13:35:24 +02:00
Robert Müller ebb35a8a6f Replace BubbleSort with std::stable_sort 2022-04-02 13:35:24 +02:00
Robert Müller a30991ddd7 Mark CHuffman::Compress and ::Decompress as const 2022-04-02 13:35:24 +02:00
Robert Müller 8020934a26 Make frequency table a static member of CHuffman, use constant 2022-04-02 13:35:24 +02:00
Robert Müller f4ade69b5e Fix comments 2022-04-02 13:35:23 +02:00
Robert Müller c427c04522 Clear members explicitly instead of zeroing entire object 2022-04-02 13:35:23 +02:00
bors[bot] c6a1a1664a
Merge #4934
4934: Use fewer threads on 32-bit to save memory r=def- a=Jupeyy

Guess we should still let eeetadam test this

## Checklist

- [ ] Tested the change ingame
- [ ] Provided screenshots if it is a visual change
- [ ] Tested in combination with possibly related configuration options
- [ ] Written a unit test if it works standalone, system.c especially
- [ ] Considered possible null pointers and out of bounds array indexing
- [ ] Changed no physics that affect existing maps
- [ ] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional)


Co-authored-by: Jupeyy <jupjopjap@gmail.com>
2022-04-02 10:07:54 +00:00
bors[bot] 92b96884a3
Merge #4937
4937: Respect row pitch of temporary image r=def- a=Jupeyy

This fixes screenshots & demo->video rendering on some resolutions

`@Chairn` probs also for you since you probs interested ^^

## Checklist

- [x] Tested the change ingame
- [ ] Provided screenshots if it is a visual change
- [ ] Tested in combination with possibly related configuration options
- [ ] Written a unit test if it works standalone, system.c especially
- [ ] Considered possible null pointers and out of bounds array indexing
- [ ] Changed no physics that affect existing maps
- [ ] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional)


Co-authored-by: Jupeyy <jupjopjap@gmail.com>
2022-04-01 23:48:20 +00:00
c0d3d3v 549fd7c784
fix color of ghost 2022-04-01 23:48:25 +02:00
Jupeyy bdfe2352e7 Respect row pitch of temporary image 2022-04-01 18:50:23 +02:00
bors[bot] a9094e1fc2
Merge #4931
4931: Fix IME issue (fixes #4888) r=Jupeyy a=def-

by terminating string instead of assuming that rest of chars are \0, which was just luckily true before.

## Checklist

- [x] Tested the change ingame
- [ ] Provided screenshots if it is a visual change
- [ ] Tested in combination with possibly related configuration options
- [ ] Written a unit test if it works standalone, system.c especially
- [ ] Considered possible null pointers and out of bounds array indexing
- [ ] Changed no physics that affect existing maps
- [ ] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional)


Co-authored-by: Dennis Felsing <dennis@felsin9.de>
2022-03-31 17:50:19 +00:00
Jupeyy 0b1a801b7e Use fewer threads on 32-bit to save memory 2022-03-31 18:00:33 +02:00
Dennis Felsing 3d51a0715c Remove some comments 2022-03-31 17:30:39 +02:00
Dennis Felsing 623f57d860 Fix container overflow in video renderer (fixes #4932) 2022-03-31 17:30:34 +02:00
Dennis Felsing 27488f042f Fix IME issue (fixes #4888)
by terminating string instead of assuming that rest of chars are \0,
which was just luckily true before.
2022-03-31 12:52:24 +02:00
Dennis Felsing 2c1dfb3684 m_DisplayStr -> m_aDisplayStr 2022-03-31 12:52:24 +02:00
bors[bot] f953a9850e
Merge #4930
4930: Adjustable hook collision line alpha r=def- a=sjrc6

Suggested by louis in https://github.com/ddnet/ddnet/issues/4928


![image](https://user-images.githubusercontent.com/22122579/160996132-68fe36c1-7e64-4b7e-b1d7-f41c11d69e51.png)
![image](https://user-images.githubusercontent.com/22122579/160996410-3447bc23-73e3-4f99-a22e-cfa8486582d1.png)


- [x] Tested the change ingame
- [x] Provided screenshots if it is a visual change
- [ ] Tested in combination with possibly related configuration options
- [ ] Written a unit test if it works standalone, system.c especially
- [ ] Considered possible null pointers and out of bounds array indexing
- [ ] Changed no physics that affect existing maps
- [ ] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional)


Co-authored-by: Tater <Mr.Potatooh@gmail.com>
2022-03-31 07:45:20 +00:00
bors[bot] 11af040689
Merge #4927
4927: Revert "Revert "Update players.cpp"" (fixes #4926) r=Jupeyy a=def-

This reverts commit 36bfe24522.

Tested and couldn't reproduce the original problem with this.

<!-- What is the motivation for the changes of this pull request -->

## Checklist

- [x] Tested the change ingame
- [ ] Provided screenshots if it is a visual change
- [ ] Tested in combination with possibly related configuration options
- [ ] Written a unit test if it works standalone, system.c especially
- [ ] Considered possible null pointers and out of bounds array indexing
- [ ] Changed no physics that affect existing maps
- [ ] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional)


Co-authored-by: Dennis Felsing <dennis@felsin9.de>
2022-03-31 07:08:36 +00:00
Tater 3a197aa3da Hook collision line alpha 2022-03-30 20:15:27 -05:00
bors[bot] ebb092211a
Merge #4924
4924: fix gohst transparency of hook hand and ninja skin r=def- a=C0D3D3V

 https://streamable.com/oquu51
 
 reported by lomination 
fixes #4207 again

## Checklist

- [x] Tested the change ingame
- [x] Provided screenshots if it is a visual change
- [ ] Tested in combination with possibly related configuration options
- [ ] Written a unit test if it works standalone, system.c especially
- [ ] Considered possible null pointers and out of bounds array indexing
- [x] Changed no physics that affect existing maps
- [x] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional)


Co-authored-by: c0d3d3v <c0d3d3v@mag-keinen-spam.de>
2022-03-30 21:35:20 +00:00
Dennis Felsing 68c7044912 Revert "Revert "Update players.cpp"" (fixes #4926)
This reverts commit 36bfe24522.
2022-03-30 23:29:35 +02:00
c0d3d3v 005667b99c
fix gohst transparency of hook hand and ninja skin 2022-03-30 20:40:46 +02:00
bors[bot] d94bc56cca
Merge #4923
4923: Check if the resolution is "really" not supported before applying des… r=def- a=Jupeyy

…ktop resoltution

probably fixes his problems
https://steamcommunity.com/app/412220/discussions/0/3176733964137910697/

## Checklist

- [ ] Tested the change ingame
- [ ] Provided screenshots if it is a visual change
- [ ] Tested in combination with possibly related configuration options
- [ ] Written a unit test if it works standalone, system.c especially
- [ ] Considered possible null pointers and out of bounds array indexing
- [ ] Changed no physics that affect existing maps
- [ ] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional)


Co-authored-by: Jupeyy <jupjopjap@gmail.com>
2022-03-30 17:52:31 +00:00
bors[bot] c592e71353
Merge #4917
4917: Use std::size instead of sizeof(a) / sizeof(a[0]) r=Jupeyy a=def-

<!-- What is the motivation for the changes of this pull request -->

## Checklist

- [x] Tested the change ingame
- [ ] Provided screenshots if it is a visual change
- [ ] Tested in combination with possibly related configuration options
- [ ] Written a unit test if it works standalone, system.c especially
- [ ] Considered possible null pointers and out of bounds array indexing
- [ ] Changed no physics that affect existing maps
- [ ] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional)


Co-authored-by: Dennis Felsing <dennis@felsin9.de>
2022-03-30 17:08:27 +00:00
Jupeyy 7bf967f05f Check if the resolution is "really" not supported before applying desktop resoltution 2022-03-30 19:07:21 +02:00
Dennis Felsing 843acf6a5a Use std::size instead of sizeof(a) / sizeof(a[0]) 2022-03-30 18:55:04 +02:00