Commit graph

20823 commits

Author SHA1 Message Date
Robert Müller ccfca141d4 Show error message popup on assertion error in client
Add assertion handler function to base system. Set handler in client to show a message box on assertion errors.
2023-05-04 20:03:27 +02:00
Robert Müller 00b7bc5bfd Add IClient::ShowMessageBox
To show an error/warning/information message popup with variable title and message.

This uses the SDL function `SDL_ShowSimpleMessageBox` to show the message box, because it is simpler than implementing this ourself in the base system, especially because we would have to add an additional explicit dependency on GTK3 to show a message dialog on Linux.

This function can be used without SDL being initialized.
2023-05-04 19:47:50 +02:00
Robert Müller c9f68901b7 Extract InitNetworkClient method 2023-05-03 20:46:14 +02:00
bors[bot] b3f384f312
Merge #6557
6557: Add tests for `CPacker` error handling, fix minor bug, minor refactoring r=def- a=Robyt3

Closes #6525.

## Checklist

- [X] Tested the change ingame
- [ ] Provided screenshots if it is a visual change
- [ ] Tested in combination with possibly related configuration options
- [X] Written a unit test (especially base/) or added coverage to integration test
- [ ] 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>
2023-05-03 18:17:49 +00:00
bors[bot] ab83a04348
Merge #6555
6555: Add convenience functions to convert between UTF-8 encoded strings and wide character strings on Windows r=def- a=Robyt3



## Checklist

- [X] Tested the change ingame
- [ ] Provided screenshots if it is a visual change
- [ ] Tested in combination with possibly related configuration options
- [X] Written a unit test (especially base/) or added coverage to integration test
- [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: Robert Müller <robytemueller@gmail.com>
2023-05-03 17:30:08 +00:00
Robert Müller c5e336f5e2 Fix off-by-one error when adding raw data to buffer
One byte too few could be added to packers as raw data. Detected by the new test cases.
2023-05-03 19:13:39 +02:00
Robert Müller 8794cc9f9c Add tests for packer error handling 2023-05-03 19:13:39 +02:00
Robert Müller f6015be263 Add default parameter for CPacker::AddString 2023-05-03 18:17:27 +02:00
Robert Müller fd4491b307 Use bool instead of int 2023-05-03 18:02:38 +02:00
Robert Müller ef48a2fde4 Use sizeof(int) instead of 4 2023-05-03 17:59:36 +02:00
Robert Müller d34ed69c22 Use windows_utf8_to_wide and windows_wide_to_utf8
To reduce duplicate code and simplify usage of the Windows API.
2023-05-02 19:58:28 +02:00
Robert Müller b7a0f1248a Log error message in cases where only GetLastError is logged 2023-05-02 19:58:28 +02:00
Robert Müller bc7c347ad4 Use std::string for windows_format_system_message
To make the function easier to use.
2023-05-02 19:58:28 +02:00
Robert Müller f24d755bb2 Add windows_utf8_to_wide and windows_wide_to_utf8
To convert between UTF-8 encoded strings and wide character strings used with the Windows API.

The functions use `std::wstring` and `std::string`, to simplify the usage and support arguments with arbitrary length.

Also add some tests for the functions.
2023-05-02 19:58:23 +02:00
marmare314 7a0d566ddb combine proof mode buttons 2023-05-01 23:07:58 +02:00
marmare314 02429288f1 move coloring and info to settings 2023-05-01 22:44:03 +02:00
marmare314 9dddc0d8de show current entity type 2023-05-01 18:02:53 +02:00
bors[bot] 0cb8488565
Merge #6553
6553: Fix alpha fading in hud r=Robyt3 a=Jupeyy

fixes #6550

## 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 (especially base/) or added coverage to integration test
- [ ] 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>
2023-05-01 11:56:25 +00:00
Jupeyy 54e013fa1a Fix alpha fading in hud 2023-05-01 12:33:47 +02:00
marmare314 ab20e897a8 add spacing and group unused selector code 2023-04-29 15:07:25 +02:00
marmare314 ae63ea5f9e move unused, entities, goto, border to menu 2023-04-29 14:05:01 +02:00
bors[bot] ab5531f5cb
Merge #6543
6543: adjust corners of Button_Env r=def- a=Marmare314

Before:
![buttons-old](https://user-images.githubusercontent.com/49279081/235272933-a40e8255-67b0-4d11-8e54-bf62f4bc1a76.png)

After:
![buttons-adjusted](https://user-images.githubusercontent.com/49279081/235272940-854fe87e-3916-4e6d-aee4-9a2e1a07667f.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 (especially base/) or added coverage to integration test
- [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: marmare314 <49279081+Marmare314@users.noreply.github.com>
2023-04-29 10:51:30 +00:00
bors[bot] e917c12419
Merge #6545
6545: Use `IsEntitiesLayer` to reduce duplicate code 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 (especially base/) or added coverage to integration test
- [ ] 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>
2023-04-29 10:14:42 +00:00
marmare314 68bbb613c5 adjust corners of Button_Env 2023-04-29 12:10:15 +02:00
Robert Müller 996353a8e4 Use IsEntitiesLayer to reduce duplicate code 2023-04-29 11:43:33 +02:00
bors[bot] 2eb7ca3dea
Merge #6541
6541: Add the DDNet git hash and "is steam" to the crash file r=Robyt3 a=Jupeyy

`@def-` what do you think, how hard would it be for the symbols uploaded to the website contain the same git hash in the name, so we could write a script that automatically finds the correct binary and creates a stack trace?

## 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 (especially base/) or added coverage to integration test
- [ ] 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>
2023-04-29 09:27:59 +00:00
bors[bot] dc804f88ac
Merge #6544
6544: make envelope editor resizeable by dragging r=def- a=Marmare314


![resizeable-editor](https://user-images.githubusercontent.com/49279081/235273201-5ee620c3-3784-49d1-ac0c-3bc3d5aca440.gif)


## 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 (especially base/) or added coverage to integration test
- [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: marmare314 <49279081+Marmare314@users.noreply.github.com>
2023-04-29 09:05:05 +00:00
bors[bot] 4b27611201
Merge #6542
6542: potential fix for #6529 r=def- a=Marmare314


## 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 (especially base/) or added coverage to integration test
- [ ] 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: marmare314 <49279081+Marmare314@users.noreply.github.com>
2023-04-29 08:45:55 +00:00
Jupeyy 40838bf473 Add the DDNet git hash and "is steam" to the crash file
Also put the date before pid for assert logs
2023-04-29 10:26:30 +02:00
marmare314 c9bc524878 make envelope editor resizeable by dragging 2023-04-29 02:26:10 +02:00
marmare314 61ff658cc7 potential fix for #6529 2023-04-29 01:20:51 +02:00
bors[bot] 8375fd83a0
Merge #6540
6540: Fix inconsistent client state after disconnecting with network error r=def- a=Robyt3

The `Disconnect` function did not fully clear all server data, because the client state was already set to offline manually before the function is called. This was causing inconsistent behavior when connecting to another server after being disconnected. For example, the client could get stuck at "getting game info" when connecting the next time.

## 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 (especially base/) or added coverage to integration test
- [ ] 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>
2023-04-28 16:25:23 +00:00
Robert Müller aa95f61f11 Fix inconsistent client state after disconnecting with network error
The `Disconnect` function did not fully clear all server data, because the client state was already set to offline manually before the function is called. This was causing inconsistent behavior when connecting to another server after being disconnected. For example, the client could get stuck at "getting game info" when connecting the next time.
2023-04-28 17:57:58 +02:00
bors[bot] 10567cbef2
Merge #6539
6539: Fix Ctrl+F not activating search box in browser and tee settings r=Jupeyy a=Robyt3

Closes #6537.

## 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 (especially base/) or added coverage to integration test
- [ ] 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>
2023-04-28 15:26:17 +00:00
Robert Müller 11cb72be32 Fix Ctrl+F not activating search box in browser and tee settings
Closes #6537.
2023-04-28 17:17:30 +02:00
bors[bot] 22c6e7ebeb
Merge #6536
6536: Fix client crash on team kill message with invalid team r=def- a=Robyt3

The client crashes when a team kill message specifies a team for which no client can be found. This can easily happen when the server sends an unknown team on purpose. It may also happen sporadically during normal gameplay, assuming a team is dissolved or the last team member leaves at the same time as the kill message is received.

The crash is fixed by not rendering any tee for these kill messages. The kill message text is always set depending on the team number in the team kill message, regardless of whether the team exists.

Closes #6533.

## 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 (especially base/) or added coverage to integration test
- [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: Robert Müller <robytemueller@gmail.com>
2023-04-27 22:13:04 +00:00
Robert Müller abbe2ce1de Use Height variable to reduce duplicate code 2023-04-27 20:47:56 +02:00
Robert Müller 5cb9902745 Fix variable name m_VictimTextWidth 2023-04-27 20:46:58 +02:00
Robert Müller be68c5ad7a Fix client crash on team kill message with invalid team
The client crashes when a team kill message specifies a team for which no client can be found. This can easily happen when the server sends an unknown team on purpose. It may also happen sporadically during normal gameplay, assuming a team is dissolved or the last team member leaves at the same time as the kill message is received.

The crash is fixed by not rendering any tee for these kill messages. The kill message text is always set depending on the team number in the team kill message, regardless of whether the team exists.

Closes #6533.
2023-04-27 20:45:30 +02:00
bors[bot] 0a37aa5c01
Merge #6535
6535: Don't send faketunes to new client versions, simplify code r=def- a=trml

This fixes a bug where hook doesn't get predicted if a player has hook disabled, but can still be hooked by other players, which was reported on Discord.

It seems like this bug (and similar bugs) is caused by the client accidentally using the tuning for hook/collision instead of the flags in ddnetcharacter. By sending the correct tunings instead of the fake ones, the handling of tunezones becomes less complicated (and less bug-prone), as the client no longer needs to ignore the tunings for hook and collision (and similar) on ddnet servers.

I didn't test this with older clients yet, but tried to make sure that the conditions for sending the fake tunes are the same as they were before.

## 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 (especially base/) or added coverage to integration test
- [ ] 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: trml <trml@users.noreply.github.com>
2023-04-26 22:15:26 +00:00
trml d603214133 Don't send faketunes to new client versions, and simplify code 2023-04-26 22:35:23 +02:00
bors[bot] 6dd38c7da0
Merge #6534
6534: Don't render switch number and delay for tiles where they are unused, ignore switch tiles that don't use number for free slot finder, refactoring r=def- a=Robyt3

Closes #5995.

## 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 (especially base/) or added coverage to integration test
- [ ] 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>
2023-04-26 17:49:25 +00:00
Robert Müller 97052e4752 Ignore switch tiles that don't use number for free slot finder 2023-04-26 19:04:57 +02:00
Robert Müller c4eca1a0ba Always set number 0 for switch tiles that don't use the number
And use the new `IsSwitchTile(Flags|Number|Delay)Used` functions accordingly.
2023-04-26 19:04:56 +02:00
Robert Müller 6d23f3e5bd Always set number 255 for tele tiles that don't use the number
Because code previously cast this number to `bool`, we can't use `0` to denote tele tiles where the number is unused.
2023-04-26 19:04:56 +02:00
Robert Müller 2e5f37c61b Don't render switch number and delay for tiles where they are unused 2023-04-26 19:04:56 +02:00
Robert Müller 60c0da7c4d Use IsValid***Tile functions
Use the utility function to check if tele/speedup/switch/tune tile indices are valid.

Using `IsValidSwitchTile` fixes that the switch number and delay were not updated when selecting freeze, deep freeze, deep unfreeze, live freeze and live unfreeze tiles, as those tiles were missing in the existing condition.
2023-04-26 19:04:56 +02:00
Robert Müller 1d9cbba326 Add IsSwitchTile(Flags|Number|Delay)Used functions
To check whether the flags, number or delay of a switch tile is used or not.
2023-04-26 19:04:56 +02:00
Robert Müller 9c841f1e43 Add IsTeleTileNumberUsed function
To check whether the number of a tele tile is used or not.
2023-04-26 19:04:55 +02:00
Robert Müller 245703798b Use bool for IsCheckTeleport and IsCheckEvilTeleport
The tele tile number is not used for `TILE_TELECHECKIN` and `TILE_TELECHECKINEVIL` and the results of these functions were always implicitly converted to `bool` while assuming that the tele number was not `0` for these tiles.
2023-04-26 19:04:54 +02:00