Commit graph

16299 commits

Author SHA1 Message Date
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
bors[bot] a7d4be0f2b
Merge #5280
5280: fix swap does not swap no collision and no hook r=def- a=C0D3D3V

- remove duplicated variable for no collision and no hook

fixes https://github.com/ddnet/ddnet/issues/5279

https://youtu.be/3VM64OVNgYM

I chose the no variables because I found them more meaningful than the one without no. Furthermore, the initialisation with false corresponds to the standard initialisation.

## 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-30 20:17:07 +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
bors[bot] cfdb97a422
Merge #5276
5276: Organize includes: Include only what's necessary and only where necessary r=def- a=Robyt3

I used https://github.com/include-what-you-use/include-what-you-use to find unused includes and then manually adjusted their usages.

Why? See https://github.com/include-what-you-use/include-what-you-use/blob/master/docs/WhyIWYU.md. This PR removes unused includes or moves the includes so they are used where necessary, to achieve the first two benefits listed there.
Eventually IWYU could be used to also add all includes that are transitively needed (thereby doing what the tool name implies), so refactoring could be made easier, as the includes of every file would be independent from those of other files.

We can have a separate discussion about organizing the includes further. For example how includes should be grouped and how those groups should be ordered. Right now clang-format just enforces alphabetical ordering for all includes in a group. Also to what extent should forward-declarations be used instead of includes.

IWYU usage after compiling and adding it to the path:

```
mkdir build
cd build
CC="clang" CXX="clang++" cmake -G "Unix Makefiles" -DCMAKE_CXX_INCLUDE_WHAT_YOU_USE="include-what-you-use;-Xiwyu;--no_comments;-Xiwyu;--no_fwd_decls;-Xiwyu;--quoted_includes_first" -B . ..
make 2> iwyu.log
```

Adding IWYU to the CI would likely be too much effort, as the changes that IWYU proposes need to be manually reviewed, as there are some false-positives, especially with conditional includes/usages of includes.

## 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-29 20:39:25 +00: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 8f260caa9f Remove duplicated includes from generated protocol 2022-05-29 13:49:44 +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
bors[bot] fe8275b4da
Merge #5262
5262: Remove alpha threshold from map_optmize r=def- a=Jupeyy

Since it was removed from dilate's copy values, and also makes more sense anyway.
Images should always be identifiable by all visible pixels

## 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-28 10:39:06 +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
bors[bot] 73a099885b
Merge #5261
5261: Fix possible misuse of comma r=def- a=Chairn

Found with -Wcomma using clang.

## 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-28 00:26:25 +00: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
Dennis Felsing f9a05ebb21 Add back compiler warnings on macOS (oops) 2022-05-28 01:52:18 +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