Commit graph

12572 commits

Author SHA1 Message Date
heinrich5991 1a2c82c0b1 Mark absolute #includes as absolute 2023-02-23 10:53:16 +01:00
Robert Müller 3cd294372a Fix text rendering over maximum line width with newline
When a word is rendered over the maximum line width it should be moved to the next line.

However, this was not working correctly if the word ends with a newline instead of a space, because then the text x-advance including this word did not exceed the maximum width, as the newline caused the x-advance to be reset before it can be used.

This is fixed by replacing the unused flag `TEXTFLAG_ALLOW_NEWLINE` with the flag `TEXTFLAG_DISALLOW_NEWLINE`, which causes newline characters to be replaced with space characters. This flag is then used when calculating whether the next word fits in the current line.

Closes #4541.
2023-02-21 23:38:41 +01:00
Robert Müller 61bf48c1ed Add chat message constants from upstream, remove redundant comments
Add `CLIENT_MSG = -2` and `SERVER_MSG = -1` constants from upstream.

Remove comments for self-documenting code.
2023-02-21 20:46:17 +01:00
Robert Müller 8286105804 Use RecreateTextContainer, reorder parameters
The `RecreateTextContainer` function calls `DeleteTextContainer` and then `CreateTextContainer`.

The arguments of `RecreateTextContainer` and `RecreateTextContainerSoft` are reordered so all functions take the text container as their first argument.
2023-02-20 23:39:43 +01:00
bors[bot] 0f37591af7
Merge #6340
6340: Various refactoring of text render 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
- [ ] 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-02-20 22:19:58 +00:00
Robert Müller f386eff45c Remove unused argument of Text/TextWidth/TextLineCount
The `void *pFontSetV` argument is unused and all invocations except one were already passing `0`, `0x0` or `nullptr` for this argument.
2023-02-20 20:06:17 +01:00
Robert Müller 4284f78bb7 Various refactoring and cleanup of text render
- Use `nullptr` instead of `NULL` and `0`.
- Consistently use `unsigned` for render flags instead of mixing `int` and `unsigned`.
- Use `constexpr` instead of `#define` for constants.
- Use prefix `S` for struct instead of `C`.
- Use `\0` instead of `0` for characters.
- Mark various methods as `const` when possible.
- Mark variables and pointer parameters as `const` when possible.
- Remove `const` from pointer parameters where constness was later removed by casting to `void *` anyway.
- Use `size_t` directly for loop variables and parameters which are being cast to `size_t` later anyway.
- Move variable declarations closer to usages.
- Fix variable names.
- Add/remove empty lines to improve readability.
- Use loops to reduce duplicate code.
- Use `bool` instead of `int`.
- Replace nested `if`s with single `if` using `&&` to reduce indentation and improve readability.
- Remove unnecessary temporary variables.
- Reorder includes.
2023-02-20 20:06:17 +01:00
Robert Müller 12e8f19421 Add comments explaining UUID generation 2023-02-20 20:05:26 +01:00
bors[bot] d347bfcbe9
Merge #6339
6339: Update menus_browser.cpp r=def- a=Sedonya

The first change concerning S-DDRace

## 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
- [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: Sedonya_ <danilshalaginov829@gmail.com>
2023-02-20 10:42:12 +00:00
Robert Müller ec7f5560a3 Fix possible integer overflows using mem_* functions 2023-02-19 13:45:48 +01:00
Robert Müller 18cfbb53f9 Use size_t for mem_* function size parameters 2023-02-19 12:48:54 +01:00
Robert Müller d4809fa9a8 Change mem_has_null return type to bool 2023-02-19 12:48:54 +01:00
Robert Müller cb6de6a384 Group and order mem_* function implementations 2023-02-19 12:48:53 +01:00
Alexander Akulich bb5f0f8894 Cleanup unused or not defined functions 2023-02-18 20:05:52 +03:00
Robert Müller d09393e379 Add reset command to server
Move `reset` command from client to console, so it's also available on the server.
2023-02-18 16:35:12 +01:00
Robert Müller 3173aeec6a Simplify io_write_newline error handling
Instead of returning the number of bytes written, which are platform specific, return `true` on success and `false` on failure, so no platform specific code is required when checking the result.
2023-02-18 14:13:55 +01:00
Sedonya_ c0b39628aa Update menus_browser.cpp 2023-02-17 00:48:31 +05:00
bors[bot] 95a65f5695
Merge #6338
6338: Reset graphics container indices after deletion r=Jupeyy a=Robyt3

Reduce duplicate code and improve correctness by passing indices of quad, buffer and text containers by reference and always setting them to `-1` after they are deleted.

Also check if index is `-1` before trying to delete it to reduce duplicate code when calling the methods.

## 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-02-16 10:24:41 +00:00
bors[bot] 9941bda313
Merge #6333
6333: Add `CFGFLAG_SAVE` flag to save prediction margin (fixes #6332) r=def- a=Chairn

I guess when you have a bad connection, it stays the same during several days, so it makes sense to save prediction margin

## 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: Chairn <chairn.nq@hotmail.fr>
2023-02-15 20:36:29 +00:00
Robert Müller 3280f1824f Reset graphics container indices after deletion
Reduce duplicate code and improve correctness by passing indices of quad, buffer and text containers by reference and always setting them to `-1` after they are deleted.

Also check if index is `-1` before trying to delete it to reduce duplicate code when calling the methods.
2023-02-15 21:05:15 +01:00
bors[bot] 3fcabec30b
Merge #6328
6328: Remove `bytes_be_to_int` and `int_to_bytes_be`, static assert size of `int` and `unsigned`, refactoring r=heinrich5991 a=Robyt3

Supersedes #6263.

## 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-02-14 22:11:05 +00:00
ChillerDragon 4772428256 Add 0.7 system message constants 2023-02-14 11:40:55 +01:00
Chairn 3f050f5e6a Add CFGFLAG_SAVE flag to save prediction margin (fixes #6332) 2023-02-13 21:24:10 +01:00
Robert Müller ef2aa13c73 Update documentation of bytes_be_to_uint and uint_to_bytes_be 2023-02-11 13:59:08 +01:00
Robert Müller be6862e997 Use sizeof(int32_t) instead of 4 2023-02-11 13:59:08 +01:00
Alexander Akulich 3a9e4ee067 Extract SnapPickup() to CGameContext helpers 2023-02-10 23:12:26 +03:00
Alexander Akulich 2ad5c020e0 Add a simpler IServer::SnapNewItem() API based on some more generated data 2023-02-10 23:12:24 +03:00
Alexander Akulich cc43d402d3 Extract SnapLaserObject() from entities to CGameContext helpers 2023-02-10 23:07:07 +03:00
Alexander Akulich f5d7174c36 GameContext: Use SERVER_DEMO_CLIENT instead of a magic number 2023-02-10 23:04:01 +03:00
Alexander Akulich 971e1b0093 server/pickup: Use enum values and struct size instead of magic numbers 2023-02-10 23:04:01 +03:00
bors[bot] 911bd0e69a
Merge #6282
6282: Add a refresh button to the editor file browser r=heinrich5991 a=Robyt3

![screenshot_2023-01-13_22-51-07](https://user-images.githubusercontent.com/23437060/212426385-f8c03e58-8e5d-4c47-9f19-865946c5be9c.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
- [ ] 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-02-04 11:16:09 +00:00
Robert Müller 624f7df217 Fix memory leak of editor preview image texture and data
The texture of the previous preview image was not unloaded before loading the texture of the new image.

The PNG data was never freed either. It's not necessary to keep this data loaded after loading the texture.
2023-02-04 11:28:13 +01:00
Robert Müller 64081ad3e4 Add static assert to ensure correct size of int and unsigned
We assume in various places, especially when using `bytes_be_to_uint` and `uint_to_bytes_be`, that `int` and `unsigned` are 4 bytes in size.
2023-02-04 01:24:03 +01:00
Robert Müller 218e6f7985 Remove bytes_be_to_int and int_to_bytes_be
Use `bytes_be_to_uint` and `uint_to_bytes_be` instead.

As casting between `int` and `unsigned` preserves the bit representation of the value, it's not necessary to apply additional tricks to convert between `char` arrays and `int`.
2023-02-04 01:24:03 +01:00
Robert Müller 0a32e58367 Add error message when saving screenshot fails 2023-02-02 21:50:32 +01:00
Valentin Bashkirov 934546e9c5 skip pMap filling on new versions 2023-02-02 12:12:48 +01:00
Robert Müller bd5c39f528 Fix wrong system name being used for logging client git revision 2023-02-01 23:54:43 +01:00
Valentin Bashkirov 63fe1e29d2 rewrote pMap filling 2023-02-01 22:37:17 +01:00
bors[bot] 9bd43795c8
Merge #6293
6293: rewrite int64_t to bitset for clients mask r=Robyt3 a=0xfaulty

Alternative version for PR [#6292](https://github.com/ddnet/ddnet/pull/6292) with bitset used.
I did the naming as I would like, but I can change it if there is a more suitable one, typedef is just for shortening, can be 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 (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: Valentin Bashkirov <v.bashkirov@dev.tassta.com>
Co-authored-by: Valentin Bashkirov <valenteen3d@ya.ru>
2023-01-31 17:06:49 +00:00
Valentin Bashkirov 056ae4091d removed bitmask.h 2023-01-31 10:07:25 +01:00
Valentin Bashkirov 1bb7b5b44a use length_squared 2023-01-31 00:46:39 +01:00
bors[bot] e0315f528e
Merge #6313
6313: Use `str_copy` instead of `str_format`, minor fixes and refactoring r=Chairn 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 (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-01-28 16:17:47 +00:00
Robert Müller 52aa8ac22a Use str_copy instead of str_format
Using `str_format` without format arguments is equivalent to `str_copy`, but using the latter is more efficient and readable.

As `str_format` also returns the result `str_utf8_fix_truncation`, i.e. the potentially truncated string length, the return value is also added to `str_copy` so existing invocations don't need to be adjusted.
2023-01-28 16:37:33 +01:00
Robert Müller 34ef28c6b6 Fix empty chat message being sent when using moderate
When activating `moderate` on a server that already has another active moderator, `aBuf` contained undefined values and the empty or undefined message was sent to the clients.

Clients ignore empty chat messages and don't display or log them, but the empty message can be seen in the server console.

Now no buffer is used anymore, so no empty message can be sent.
2023-01-28 16:36:03 +01:00
Robert Müller 31bcc59a86 Print database connection error that was previously unused
The string copied into `aError` was previously unused because the function immediately returns.

Now the error is logged to the console.
2023-01-28 16:35:32 +01:00
Robert Müller 854dc47cf7 Replace unnecessary char buffers with pointers 2023-01-28 16:35:29 +01:00
bors[bot] 936ff4a444
Merge #5913
5913: Only use pthread_attr_set_qos_class_np if it's available r=heinrich5991 a=def-

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

<!-- Note that builds and other checks will be run for your change. Don't feel intimidated by failures in some of the checks. If you can't resolve them yourself, experienced devs can also resolve them before merging your 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 (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: Dennis Felsing <dennis@felsin9.de>
2023-01-27 22:21:23 +00:00
Robert Müller 25216bfddb Increase relative joystick movement based on input update time
For relative mouse movement in SDL, the `SDL_GetRelativeMouseState` function always returns distance that the mouse moved since the last call of this function.

For joysticks, we only have access to the current axis values and no accumulated values.
This made the relative joystick movement speed decrease a lot when the client's refresh rate is low.
This is now counteracted by measuring the average time between calls of `IInput::Update` and multiplying the joystick movement by this number.

Closes #6296.
2023-01-26 23:37:52 +01:00
Robert Müller 35c863b4d2 Disable relative joystick when console is open or window not focused
It shouldn't be possible to move the joystick when the console is open or when the window is not focused.
2023-01-26 23:35:55 +01:00
Robert Müller f25ffd9669 Remove unused IInput::VideoRestartNeeded
The variable is never set to `true` so the function always returns `false` and any code depend on this variable was never executed.
2023-01-26 23:35:00 +01:00
Robert Müller c2e8f6738a Use bool instead of int for m_InputGrabbed 2023-01-26 23:35:00 +01:00
Robert Müller 25872820d7 Fix division by zero when joystick deadzone is at maximum
By preventing the actual deadzone value from reaching `1.0f`.
2023-01-26 23:34:54 +01:00
Valentin Bashkirov d61fcbaba2 optimize map update 2023-01-26 20:21:42 +01:00
Dennis Felsing ccc6cd59de Only use pthread_attr_set_qos_class_np if it's available
Noticed in nixOS that DDNet package is marked as broken on Darwin for this reason:
https://github.com/NixOS/nixpkgs/blob/master/pkgs/games/ddnet/default.nix
2023-01-26 15:42:46 +01:00
Valentin Bashkirov 79f72a5d55 move typedef to protocol.h 2023-01-26 11:56:48 +01:00
Robert Müller 9054eb15aa Add buttons to move envelopes left and right, use unicode icons
Closes #4129.
2023-01-25 20:05:06 +01:00
Robert Müller b997fe97bc Decrease buffer size 2023-01-25 20:05:06 +01:00
Robert Müller 385fa4d36c Slightly decrease width of name editbox if total width is low 2023-01-25 20:05:06 +01:00
Robert Müller 2514f1d521 Align the editbox labels in the envelope editor with the editboxes 2023-01-25 20:05:06 +01:00
Robert Müller 27790be784 Reserve same space for all envelope channel buttons
Keep all the UI elements in the envelope editor at the same position, independent from the number of channels of the selected envelope.

Previously the UI elements changed their position due to different numbers of channels of the different envelope types. Now the space for the maximum number of channels is always reserved and the UI elements don't move around.
2023-01-25 20:05:06 +01:00
Robert Müller 7ce143bd9e Add CEnvPoint::MAX_CHANNELS constant 2023-01-25 20:05:05 +01:00
Robert Müller 3c42b224f5 Add margin to point value/time editboxes for low screen width
The labels for the editboxes are not shown when the screen width is low, but the spacing should still be applied to the editboxes in that case.
2023-01-25 20:05:05 +01:00
Robert Müller d6d8739031 Remove unnecessary temporary CUIRect 2023-01-25 20:05:05 +01:00
Robert Müller c62cc979cb Remove dead commented code 2023-01-25 20:05:05 +01:00
Robert Müller c9d8fedcee Use IGraphics::CORNER_NONE instead of 0 2023-01-25 20:05:05 +01:00
Robert Müller 3b4d2910ef Rename envelope Synchronized checkbox to Sync.
To gain more width of other controls.
2023-01-25 20:05:04 +01:00
Robert Müller 5b61691f25 Pass nullptr to CUIRect functions when result is unused 2023-01-25 20:05:04 +01:00
Robert Müller c86ef06c5c Add tooltip support for editboxes in editor
Add tooltips for envelope name, point value and point time.
2023-01-25 20:05:04 +01:00
Zwelf 010d545fac Fix Crash in CSafeTeam::Safe/Load
Fixes #6304

`pEnt` is freed after removing, so must not be used in the next loop
iteration.
2023-01-25 18:47:03 +01:00
Valentin Bashkirov 1cd9eac7ae rewrite int64_t to CClientMask 2023-01-24 09:27:29 +01:00
bors[bot] b8e7160555
Merge #6299
6299: Show error message when downloaded map cannot be saved r=def- a=Robyt3

Check if deleting the old map file or renaming the temporary downloaded map fails. If so, show an error message which indicates that the user should delete the map file manually.

Sometimes downloaded map files seem to end up with wrong permissions, ownership or with read-only flag set, which makes the client unable to delete them.

![screenshot_2023-01-22_17-19-12](https://user-images.githubusercontent.com/23437060/213927019-ff49cb72-f60a-4c1a-b48b-d34e40d1420e.png)

Closes #5825.

## 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-01-23 11:41:51 +00:00
bors[bot] 54e56b0048
Merge #6302
6302: Use OpenGL 3.3 on macOS by default r=Jupeyy a=def-

Otherwise falls back to OpenGL 1.5, since 3.0 is not supported

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

<!-- Note that builds and other checks will be run for your change. Don't feel intimidated by failures in some of the checks. If you can't resolve them yourself, experienced devs can also resolve them before merging your 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 (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: Dennis Felsing <dennis@felsin9.de>
2023-01-23 11:15:46 +00:00
Dennis Felsing ec30fc7043 Use OpenGL 3.3 on macOS by default
Otherwise falls back to OpenGL 1.5, since 3.0 is not supported
2023-01-23 12:06:04 +01:00
Dennis Felsing 1af3c2274a More minimal clang-tidy 15 run
Alternative to #6294

The only remaining problems are:
/home/deen/git/ddnet/src/engine/client/backend/glsl_shader_compiler.cpp:22:26: warning: unnecessary temporary object created while calling emplace_back [modernize-use-emplace]
        m_vDefines.emplace_back(SGLSLCompilerDefine(DefineName, DefineValue));
                                ^~~~~~~~~~~~~~~~~~~~                       ~
2023-01-23 11:20:05 +01:00
bors[bot] 3ffd4205ef
Merge #6295
6295: Implement FIFO on Windows using Named Pipes r=def- a=Robyt3

Reimplement the Linux FIFO file server and client controls on Windows by using Named Pipes.

The DDNet server/client acts as a named pipe server and receives messages.
Messages can be posted to the named pipe server by connecting to it as a client.
The named pipe client can for instance be controlled from the command line with PowerShell.

The PowerShell script `scripts/send_named_pipe.ps1` is added for this purpose.
For example the PowerShell command `./send_named_pipe.ps1 "testpipe" "echo a"` sends the command `echo a` to the pipe named `testpipe`.
Multiple commands can be sent at the same time by separating them with semicolons or newlines.

## 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-01-22 21:40:17 +00:00
Robert Müller e29a6e2f0a Show error message when downloaded map cannot be saved
Check if deleting the old map file or renaming the temporary downloaded map fails. If so, show an error message which indicates that the user should delete the map file manually.

Sometimes downloaded map files seem to end up with wrong permissions, ownership or with read-only flag set, which makes the client unable to delete them.
2023-01-22 17:22:11 +01:00
Robert Müller f80e962888 Add IStorage::FileExists and IStorage::FolderExists
As wrappers around `fs_is_file` and `fs_is_dir`.
2023-01-22 17:22:11 +01:00
Robert Müller b67a1f5ce5 Add fs_is_file to check if a given path is file 2023-01-22 17:22:11 +01:00
Robert Müller 7e9129cb44 Use doxygen style for all fs_* functions 2023-01-22 17:14:04 +01:00
Robert Müller 29b61fc438 Refactor CEditor:::PopupLayer, remove CEditor::IsSpecialLayer
- Use `pCurrentLayer` instead of `pEditor->GetSelectedLayer(0)` everywhere.
- Remove unnecessary null-checks of `pCurrentLayer`.
- Use `CLayer::IsEntitiesLayer` instead of `CEditor::IsSpecialLayer` and remove the latter function.
- Restructure UI layout code and variables.
2023-01-22 11:58:37 +01:00
Robert Müller c7819841f8 Remove dead code, update documentation for LAYERTYPE_GAME
This layer type was never used when saving maps.
Game layers were always identified by their flags.
In any case the check in the popup handler is unnecessary, as the group property cannot be changed for game layers, so this code is never used.
2023-01-22 11:58:37 +01:00
Robert Müller 50ecfb178f Add CLayer::IsEntitiesLayer to reduce duplicate code 2023-01-22 11:58:30 +01:00
bors[bot] cd13871053
Merge #6215
6215: Don't count (connecting) players for voting r=Robyt3 a=def-

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

<!-- Note that builds and other checks will be run for your change. Don't feel intimidated by failures in some of the checks. If you can't resolve them yourself, experienced devs can also resolve them before merging your 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 (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: def <dennis@felsin9.de>
2023-01-21 12:41:02 +00:00
Robert Müller 7eb5966f6f Implement FIFO on Windows using Named Pipes
Reimplement the Linux FIFO file server and client controls on Windows by using Named Pipes.

The DDNet server/client acts as a named pipe server and receives messages.
Messages can be posted to the named pipe server by connecting to it as a client.
The named pipe client can for instance be controlled from the command line with PowerShell.

The PowerShell script `scripts/send_named_pipe.ps1` is added for this purpose.
For example the PowerShell command `./send_named_pipe.ps1 "testpipe" "echo a"` sends the command `echo a` to the pipe named `testpipe`.
Multiple commands can be sent at the same time by separating them with semicolons or newlines.
2023-01-21 11:13:02 +01:00
Robert Müller f7d3052170 Export windows_format_system_message utility on Windows
Declare the function in `system.h`, so we can use it in other platform-specific components.
2023-01-20 22:53:00 +01:00
Robert Müller f78fd6bda1 Minor refactoring of CFifo
- Remove unused include.
- Instead of quitting entirely, only disable the fifo component when file cannot be used.
- Return early to reduce indentation.
2023-01-20 22:52:55 +01:00
heinrich5991 e06052292e CMsgPacker doesn't know about message ID encoding
CC #6289
2023-01-20 21:09:58 +01:00
bors[bot] 4a4d6c5483
Merge #6284
6284: Ensure integer wrapping instead of preventing overflow/underflow r=heinrich5991 a=Robyt3

As the integer overflow/underflow in `UndiffItem` can happen during normal gameplay, we should in this case neither ignore the snapshot delta nor show an error message.

Instead of depending on the particular compiler doing integer wrapping, when integer overflows or underflows occur, we make it part of the design, by casting to `unsigned`, which ensures that integer wrapping is being used.

## 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-01-18 22:46:52 +00:00
Dennis Felsing f3867d677f Version 16.7.2 2023-01-18 23:20:15 +01:00
bors[bot] 0ba6c1c3b6
Merge #6289
6289: Fix `sv_vanilla_antispoof` for vanilla 0.6.5 clients r=def- a=Robyt3

This fixes issues that prevented vanilla 0.6.5 clients from joining DDNet servers with `sv_vanilla_antispoof 1` (closes #2074).

The dummy map was not valid. The size of the tiles and game layers was calculated incorrectly. The last member variable included in `CMapItemLayerTilemap` version 2 should be `m_Data`. Previously only the size of the member `m_aName` was subtracted from the total size, which was resulting in an incorrect item size, as the size of the following 5 members also needs to be subtracted.

The handshake messages were packed incorrectly. The message ID and the system flag were not added to the six packers that are passed to `SendMsgs`. The lines that are removed in this function seemed to assume that the message ID was already added but not packed, which was no longer the case. Presumable at some point `CMsgPacker` was changed without adapting the vanilla antispoof feature. Now, the message ID and system flag are properly packed when initially creating the message packers.

The `dummy_map` tool is improved to also print the generated map file's hashes and data as a C style array, so the data can immediately be copied to `network_server.cpp`.

## 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
- [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-01-18 21:51:46 +00:00
Robert Müller 1a9357b961 Fix sv_vanilla_antispoof for vanilla 0.6.5 clients
This fixes issues that prevented vanilla 0.6.5 clients from joining DDNet servers with `sv_vanilla_antispoof 1` (closes #2074).

The dummy map was not valid. The size of the tiles and game layers was calculated incorrectly. The last member variable included in `CMapItemLayerTilemap` version 2 should be `m_Data`. Previously only the size of the member `m_aName` was subtracted from the total size, which was resulting in an incorrect item size, as the size of the following 5 members also needs to be subtracted.

The handshake messages were packed incorrectly. The message ID and the system flag were not added to the six packers that are passed to `SendMsgs`. The lines that are removed in this function seemed to assume that the message ID was already added but not packed, which was no longer the case. Presumable at some point `CMsgPacker` was changed without adapting the vanilla antispoof feature. Now, the message ID and system flag are properly packed when initially creating the message packers.

The `dummy_map` tool is improved to also print the generated map file's hashes and data as a C style array, so the data can immediately be copied to `network_server.cpp`.
2023-01-18 20:21:12 +01:00
Robert Müller 0e59b84718 Add str_hex_cstyle to print bytes as a C style array
This function converts data to a C style array string presentation.
2023-01-18 17:29:23 +01:00
Robert Müller 64578d4954 Improve str_hex documentation 2023-01-18 00:09:23 +01:00
Robert Müller 65cb2ed7de Ensure integer wrapping instead of preventing overflow/underflow
As the integer overflow/underflow in `UndiffItem` can happen during normal gameplay, we should in this case neither ignore the snapshot delta nor show an error message.

Instead of depending on the particular compiler doing integer wrapping, when integer overflows or underflows occur, we make it part of the design, by casting to `unsigned`, which ensures that integer wrapping is being used.
2023-01-16 18:12:28 +01:00
bors[bot] 029b42458c
Merge #6288
6288: Fix layout of kick/spec vote list items r=def- a=Robyt3

The tee and label were overlapping due to a regression from #6240.

## 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-01-16 15:15:15 +00:00
Robert Müller 0948a1dc4c Fix layout of kick/spec vote list items
The tee and label were overlapping due to a regression from #6240.
2023-01-16 15:37:58 +01:00
ChillerDragon f2a26aa452 Fix build with clang on debian 11
$ clang --version
Debian clang version 11.0.1-2
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /usr/bin

Fixes this error

```
In file included from
/home/chiller/Desktop/git/ddnet/src/base/color.h:6:
/home/chiller/Desktop/git/ddnet/src/base/vmath.h:141:38: error:
constexpr function never produces a constant expression
[-Winvalid-constexpr]
constexpr inline vector2_base<float> direction(float angle)
                                     ^
/home/chiller/Desktop/git/ddnet/src/base/vmath.h:143:29: note:
non-constexpr function 'cosf' cannot be used in a constant expression
        return vector2_base<float>(cosf(angle), sinf(angle));
                                   ^
/usr/include/x86_64-linux-gnu/bits/mathcalls.h:62:1: note: declared here
__MATHCALL_VEC (cos,, (_Mdouble_ __x));
^
/usr/include/math.h:266:3: note: expanded from macro '__MATHCALL_VEC'
  __MATHCALL (function, suffix, args)
  ^
/usr/include/math.h:273:3: note: expanded from macro '__MATHCALL'
  __MATHDECL (_Mdouble_,function,suffix, args)
  ^
/usr/include/math.h:275:3: note: expanded from macro '__MATHDECL'
  __MATHDECL_1(type, function,suffix, args); \
  ^
/usr/include/math.h:283:15: note: expanded from macro '__MATHDECL_1'
  extern type __MATH_PRECNAME(function,suffix) args __THROW
              ^
/usr/include/math.h:303:34: note: expanded from macro '__MATH_PRECNAME'
                                 ^
<scratch space>:34:1: note: expanded from here
cosf
^
1 error generated.
make[2]: *** [CMakeFiles/engine-shared.dir/build.make:173:
CMakeFiles/engine-shared.dir/src/engine/shared/console.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:604:
CMakeFiles/engine-shared.dir/all] Error 2
make: *** [Makefile:171: all] Error 2
```
2023-01-16 15:10:19 +01:00
bors[bot] 4c639a5965
Merge #6286
6286: Add tooltip to demo seekbar showing the currently hovered time r=Chairn a=Robyt3

When hovering the demo seekbar, show a tooltip with the time at the hovered position.

![screenshot](https://user-images.githubusercontent.com/23437060/212565749-a38951a3-1f08-43a6-b607-02f379b28c52.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
- [ ] 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-01-15 21:07:54 +00:00
Robert Müller d662c7e9fd Add tooltip to demo seekbar showing the currently hovered time
When hovering the demo seekbar, show a tooltip with the time at the hovered position.
2023-01-15 21:31:45 +01:00
Robert Müller 315e52fb99 Refactor demo seekbar width calculation 2023-01-15 21:31:21 +01:00
Robert Müller a127890e2d Clear editor file browser search term when entering folder
Closes #5620.
2023-01-15 20:46:10 +01:00
Robert Müller aa23873af8 Add a refresh button to the editor file browser 2023-01-13 22:54:29 +01:00
bors[bot] 4a6d6fb654
Merge #6281
6281: Support longer file/folder names in editor 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-01-13 21:28:25 +00:00
Robert Müller 6b873cab1a Use sizeof for array sizes that should equal other array sizes 2023-01-13 22:07:21 +01:00
Robert Müller d1712f30e6 Support longer file/folder names in editor 2023-01-13 22:07:20 +01:00
Robert Müller 25b487703f Make color pickers not change selected color as much
As described in #5844, sometimes the color kept changing when activating a color picker.

By rounding the color components before packing them into an unsigned, the color only changes very little and only at most once when activating a color picker.
2023-01-13 21:40:25 +01:00
bors[bot] a9207a931f
Merge #6276
6276: Fix announcement feature, don't depend on buffer staying consistent r=Jupeyy a=def-

There is a change in behavior: The file is now only reread if the filename changed, previously it was reread every 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: Dennis Felsing <dennis@felsin9.de>
2023-01-13 16:30:46 +00:00
Dennis Felsing 43e994a002 Fix announcement feature, don't depend on buffer staying consistent
There is a change in behavior: The file is now only reread if the
filename changed, previously it was reread every time.
2023-01-13 16:22:22 +01:00
Jupeyy c820ac22d3 Merge most entity textures again 2023-01-13 15:25:38 +01:00
Dennis Felsing b62e7f1299 Quick fix for old client on new server
Introduced in https://github.com/ddnet/ddnet/pull/6214/
Not a proper solution yet
2023-01-13 14:46:01 +01:00
Dennis Felsing 007bba9313 Version 16.7.1 2023-01-13 10:48:36 +01:00
bors[bot] dd09c59710
Merge #6269
6269: Fix ddnet.org change in UUIDs r=def- a=heinrich5991

One case was a ddnet.tw UUID's string being changed (but the UUID was not), and the other case is a ddnet.tw UUID's string being changed in one place but not in another in documentation.

Fixes the commit c479230d71.

CC #5312

## 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: heinrich5991 <heinrich5991@gmail.com>
2023-01-12 16:45:27 +00:00
heinrich5991 f2530cfbf2 Add forgotten call 2023-01-12 16:18:03 +01:00
heinrich5991 a0221c3038 Fix ddnet.org change in UUIDs
One case was a ddnet.tw UUID's string being changed (but the UUID was
not), and the other case is a ddnet.tw UUID's string being changed in
one place but not in another in documentation.

Fixes the commit c479230d71.

CC #5312
2023-01-12 15:38:17 +01:00
bors[bot] a93f89c72a
Merge #6266
6266: Show current memory usage in assert too r=def- a=Jupeyy

Since it seems a rather common problem:
![image](https://user-images.githubusercontent.com/6654924/211884998-11486383-a1a2-4313-9a4c-7bfa6034164c.png)


## 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-01-11 18:53:03 +00:00
Jupeyy 69c3fa2a61 Show current memory usage in assert too 2023-01-11 19:26:04 +01:00
Jupeyy 8a8dab5611 Missing parameter in error list 2023-01-11 18:46:33 +01:00
bors[bot] 067af3abbd
Merge #6264
6264: Hand the client IP addresses to the antibot module r=def- a=heinrich5991

## 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: heinrich5991 <heinrich5991@gmail.com>
2023-01-11 08:57:46 +00:00
heinrich5991 05f2c1e43f Hand the client IP addresses to the antibot module 2023-01-11 01:35:50 +01:00
Dennis Felsing c7e54d2462 Version 16.7 2023-01-10 23:47:53 +01:00
Robert Müller bbd20cde2b Add ui_smooth_scroll_time variable to adjust smooth scrolling
This variable adjusts the time for smooth scrolling of all scrollregions and listboxes in the menus and editor.

The value `0` disables smooth scrolling entirely.
2023-01-10 18:19:06 +01:00
heinrich5991 e62293e56c Remove remaining extern "C" from codebase
This might require rebuilding the antibot
2023-01-09 17:58:38 +01:00
bors[bot] 1347101a32
Merge #6249
6249: Fix DoLabelStreamed by using offsets, instead of rebuilding when x,y changes r=Robyt3 a=Jupeyy

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

<!-- Note that builds and other checks will be run for your change. Don't feel intimidated by failures in some of the checks. If you can't resolve them yourself, experienced devs can also resolve them before merging your 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 (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-01-08 14:43:13 +00:00
bors[bot] a2737de1c5
Merge #6253
6253: Allow navigating listboxes when no item is currently selected r=Chairn a=Robyt3

It was no longer possible to navigate listboxes (e.g. the server browser) by using keyboard hotkeys when no item is currently selected due to a regression from #6240.

Additionally, it was not possible even before #6240 to start navigating the server browser with the keyboard afer manually clearing the server address input, which is now possible as well.

## 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-01-08 14:15:45 +00:00
Robert Müller 8845a15f14 Allow navigating listboxes when no item is currently selected
It was no longer possible to navigate listboxes (e.g. the server browser) by using keyboard hotkeys when no item is currently selected due to a regression from #6240.

Additionally, it was not possible even before #6240 to start navigating the server browser with the keyboard afer manually clearing the server address input, which is now possible as well.
2023-01-08 14:48:30 +01:00
Robert Müller 066768cf70 Use distinct error return codes for CSnapshotDelta::UnpackDelta
Use a different error code for every return statement, so it's easier to determine why unpacking a delta failed.

The codes are grouped by the first digit of the error code:

- `-1xx`: not enough data to read
- `-2xx`: value is invalid
- `-3xx`: could not build snapshot item
2023-01-08 14:31:07 +01:00
bors[bot] bda61e586e
Merge #6251
6251: Always assume there could potentially be a skin in serverbrowser's pl… r=def- a=Jupeyy

…ayer list

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

<!-- Note that builds and other checks will be run for your change. Don't feel intimidated by failures in some of the checks. If you can't resolve them yourself, experienced devs can also resolve them before merging your 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 (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-01-08 13:09:11 +00:00
Jupeyy ed1af6edb9 Always assume there could potentially be a skin in serverbrowser's player list 2023-01-08 13:42:18 +01:00
Robert Müller a0d4a55023 Fix server browser selection not being updated based an address input
The selected server browser entry was not being updated anymore when the server address input is changed manually by the user or when selecting an entry in the LAN server list and then switching back to the Internet list.

Regression from #6240.
2023-01-08 11:06:57 +01:00
Jupeyy 7815be7b75 Fix DoLabelStreamed by using offsets, instead of rebuilding when x,y changes 2023-01-07 11:51:48 +01:00
bors[bot] 69931336fc
Merge #6242
6242: Add skin to serverbrowser's scoreboard r=def- a=Jupeyy

with #6240 we might get few more pixels for either flag or margin

![image](https://user-images.githubusercontent.com/6654924/211063976-4acb60ca-9a49-4d1b-b556-a82f88b28303.png)


## 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-01-07 10:29:22 +00:00
Jupeyy 1182180e23 Add skin to serverbrowser player list 2023-01-07 09:20:25 +01:00
Adrian Bunk abb1979d20 src/engine/shared/datafile.cpp: Re-add #include <base/math.h> for big endian 2023-01-07 04:38:06 +02:00
bors[bot] 73ce7598fa
Merge #6240
6240: Port `CListBox` from upstream, smooth scrolling for all lists r=def- a=Robyt3

Replace existing listbox implementations (`CMenus::UiDoListbox*` and `HandleListInputs` functions) with `CListBox` from upstream.

Reimplement additional feature that was already present in ddnet: page up/down, home and end key handling.

Affects the following lists:

- server browser
  - see screenshots for scoreboard
- server browser scoreboard
  - before:
![server-browser-scoreboard old](https://user-images.githubusercontent.com/23437060/211005067-3a08f874-bcb5-40e1-84e8-3f3e8e3133c9.png)
  - after:
![server-browser-scoreboard new](https://user-images.githubusercontent.com/23437060/211005074-5d113fd3-e541-45e6-95d1-4d7f633b4d12.png)
- server browser friends
  - before:
![server-browser-friends old](https://user-images.githubusercontent.com/23437060/211005039-13ef4bda-5be4-4be4-8561-19cde9f487aa.png)
  - after:
![server-browser-friends new](https://user-images.githubusercontent.com/23437060/211005048-d9f74d13-e93d-4a35-b848-bee0c84ea047.png)
- country / region selection popup (server browser filter)
  - before:
![country-popup old](https://user-images.githubusercontent.com/23437060/211004344-04651e63-7931-4e82-8f6b-c0afa6f0ed33.png)
  - after:
![country-popup new](https://user-images.githubusercontent.com/23437060/211004353-866f081b-2444-4184-8194-9468c15460f0.png)
- player skin list
  - before:
![player-skins old](https://user-images.githubusercontent.com/23437060/211004903-88864d5d-17d8-4b23-836a-1ae24a9f36ac.png)
  - after:
![player-skins new](https://user-images.githubusercontent.com/23437060/211004909-a096b98e-e754-4e76-94ff-571a7462ba81.png)
- player country / region list
  - before:
![player-country old](https://user-images.githubusercontent.com/23437060/211004564-fbd7320b-95b5-4d0a-9629-9e511ff70f34.png)
  - after:
![player-country new](https://user-images.githubusercontent.com/23437060/211004571-4f3e1aed-b878-4b84-aa81-fe8edbee6ebd.png)
- theme list
  - before:
![themes new](https://user-images.githubusercontent.com/23437060/211005196-0692fcd1-770f-45a3-9290-2ac1af75e097.png)
  - after:
![themes old](https://user-images.githubusercontent.com/23437060/211005187-48a4436f-df54-43de-a15e-bf4920d99c85.png)
- assets list
  - before:
![assets old](https://user-images.githubusercontent.com/23437060/211004237-41b71b0d-c030-4ea6-9c6b-7be4aae0836b.png)
  - after:
![assets new](https://user-images.githubusercontent.com/23437060/211004251-9be08d8d-4b16-487f-82cc-a40c7e17bc48.png)
- graphics resolutions list
  - before:
![resolutions-dropdown old](https://user-images.githubusercontent.com/23437060/211004941-23105a96-815e-4ee9-b39a-de24dcd9e4e3.png)
  - after:
![resolutions-dropdown new](https://user-images.githubusercontent.com/23437060/211004947-e251ff3e-ece6-4c59-b62c-39ca277461b5.png)
- dropdown menus (e.g. graphics fullscreen mode)
  - see screenshots for graphics resolutions list
- ingame player list
  - before:
![players old](https://user-images.githubusercontent.com/23437060/211004612-f79e892c-2712-4904-9f5e-8ee7909c4a56.png)
  - after:
![players new](https://user-images.githubusercontent.com/23437060/211004632-b6b73c8e-3c14-4d72-8178-a1562bf968f9.png)
  - before (low number): 
![players-few old](https://user-images.githubusercontent.com/23437060/211004760-cd82b93f-b978-484b-a893-a9af2b881848.png)
  - after (low number):
![players-few new](https://user-images.githubusercontent.com/23437060/211004768-b844a98d-19d7-4519-883d-939ca9b4ef89.png)
- vote options list
  - before:
![vote-options old](https://user-images.githubusercontent.com/23437060/211005215-e9db81f2-24f2-48cd-9293-99a957fa372b.png)
  - after:
![vote-options new](https://user-images.githubusercontent.com/23437060/211005229-e9285a12-efb3-4236-9317-377ae0daf834.png)
- kick/specvote lists
  - before:
![kick-spec-vote old](https://user-images.githubusercontent.com/23437060/211004518-d6ed6869-6dda-46a4-a83f-b370c58a5727.png)
  - after:
![kick-spec-vote new](https://user-images.githubusercontent.com/23437060/211004527-5844caf8-6983-49e6-b309-c717a26de0c9.png)
- ghost list
  - before:
![ghosts old](https://user-images.githubusercontent.com/23437060/211004481-7be7d338-77fe-499d-9fba-3721e2d00215.png)
  - after:
![ghosts new](https://user-images.githubusercontent.com/23437060/211004490-d875eaf7-9fb0-4a29-9bbd-0226c7997434.png)
- language list (in settings and in popup on first launch)
  - settings:
    - before: 
![languages-setting old](https://user-images.githubusercontent.com/23437060/211007012-85d16464-6bd6-4444-bd32-57385afeb2c6.png)
    - after:
![languages-setting new](https://user-images.githubusercontent.com/23437060/211007018-faafdb88-9a0c-4e80-9955-0871c7cc4107.png)
  - popup:
    - before:
![languages-popup old](https://user-images.githubusercontent.com/23437060/211006181-2faa36be-3a4c-467b-91c2-2b0b9ea8eed2.png)
    - after:
![languages-popup new](https://user-images.githubusercontent.com/23437060/211006210-f91234f0-9d70-44a2-902d-0c049c63b2ba.png)
- demo browser
  - before:
![demos old](https://user-images.githubusercontent.com/23437060/211004399-c0f49652-cd0d-478c-8b2b-328512d6367b.png)
  - after:
![demos new](https://user-images.githubusercontent.com/23437060/211004406-ee1d2637-4d69-4aec-ba0b-26750bb5bf44.png)
- editor file browser (saving, loading, adding images / sounds)
  - before:
![editor old](https://user-images.githubusercontent.com/23437060/211004451-1d989358-f811-42ba-834f-0344e5e3f280.png)
  - after:
![editor new](https://user-images.githubusercontent.com/23437060/211004459-12c7abc7-4cc5-4610-b7e0-dfc546754c24.png)
  - The search / filename input is also improved so navigating a filtered list works correctly by porting the logic from upstream.

There are minor changes to the visual appearance of some lists, due to changed margins.

The vertical alignment of some list item texts is improved so the text is centered vertically.

Closes #5791.

## 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
- [ ] 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-01-06 23:40:55 +00:00
bors[bot] 45557c69e3
Merge #6247
6247: Remove projectiles on team change r=def- a=Zwelf

## 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
- [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>
2023-01-06 23:18:08 +00:00
bors[bot] f79412c59c
Merge #6244 #6245 #6246
6244: Minor base refactoring r=def- 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 (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)


6245: Add ingame and browser buttons to copy server info to clipboard r=def- a=Robyt3

Add "Copy info" buttons to server browser and ingame menu to copy the server info of the selected/current server to the clipboard.

The margins around the server browser details are improved.

Closes #5440.

Screenshots:
- browser (old):
![browser old](https://user-images.githubusercontent.com/23437060/211093742-b877f1e2-6be0-4827-b1c8-0fd209f697aa.png)
- browser (new):
![browser new](https://user-images.githubusercontent.com/23437060/211093750-f0b3e2c2-8f95-42e1-94bf-ec8b9da4132f.png)
- ingame: 
![ingame](https://user-images.githubusercontent.com/23437060/211093736-04569b8e-96d6-40ab-a37e-8c581f2d8aea.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
- [ ] 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)


6246: Remove dead freeze code r=def- a=Zwelf

Remove unused `m_FreezeTime == -1` state

Reduces code complexity. Both `g_Config.m_SvFreezeDelay`[[1]] and `GetSwitchDelay(int Index)`[[2]] can only return non-negative numbers, therefore this is currently dead code and can be removed.

The last time it was possible to pass a negative number was removed in 561ce64666 (diff-29ffe32916052e1066eed938021aadfeb29f855d7c63d9c1ca3350aceffb79f3L1624)

[1]: c8ea372d98/src/engine/shared/config_variables.h (L213)
[2]: c8ea372d98/src/game/mapitems.h (L467)

## 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: Robert Müller <robytemueller@gmail.com>
Co-authored-by: Zwelf <zwelf@strct.cc>
2023-01-06 22:56:49 +00:00
Zwelf 0ef312d739 Remove unused m_HookState assignments 2023-01-06 23:11:19 +01:00
Zwelf e4157a744b Remove unused m_FreezeTime == -1 state
Reduces code complexity. Both `g_Config.m_SvFreezeDelay`[[1]] and `GetSwitchDelay(int Index)`[[2]] can only return non-negative numbers, therefore this is currently dead code and can be removed.

The last time it was possible to pass a negative number was removed in 561ce64666 (diff-29ffe32916052e1066eed938021aadfeb29f855d7c63d9c1ca3350aceffb79f3L1624)

[1]: c8ea372d98/src/engine/shared/config_variables.h (L213)
[2]: c8ea372d98/src/game/mapitems.h (L467)
2023-01-06 23:09:01 +01:00
Robert Müller fc7c376738 Add ingame and browser buttons to copy server info to clipboard
Add "Copy info" buttons to server browser and ingame menu to copy the server info of the selected/current server to the clipboard.

The margins around the server browser details are improved.

Closes #5440.
2023-01-06 21:23:33 +01:00
Jupeyy 9cf82dfcbc Add warning for missing integrated CPU driver 2023-01-06 20:57:31 +01:00
Jupeyy 334b0fe757 Followup fixes for physical devices 2023-01-06 20:57:27 +01:00
Robert Müller a20fa17587 Mark math functions as constexpr when possible 2023-01-06 20:38:59 +01:00
Robert Müller 1a29a85c7e Add operator != for vec4
As an operator `==` already exists for `vec4` and the operator `!=` exists for `vec2` and `vec3` already.
2023-01-06 20:38:59 +01:00
Robert Müller 89eb05b4ed Use length and dot functions to reduce duplicate code 2023-01-06 20:38:59 +01:00
Robert Müller 2c0acb4590 Remove obsolete set_console_msg_color function declaration 2023-01-06 20:28:38 +01:00
Jupeyy fda0f5a29d Add error handling when enumerating physical devices 2023-01-06 15:11:46 +01:00
Robert Müller 91a23f00cb Port CListBox from upstream, smooth scrolling for all lists
Replace existing listbox implementations (`CMenus::UiDoListbox*` and `HandleListInputs` functions) with `CListBox` from upstream.

Reimplement additional feature that was already present in ddnet: page up/down, home and end key handling.

Affects the following lists:

- server browser
- server browser scoreboard
- server browser friends
- country / region selection popup (server browser filter)
- player skin list
- player country / region list
- theme list
- assets list
- graphics resolutions list
- dropdown menus (e.g. graphics fullscreen mode)
- ingame player list
- vote options list
- kick/specvote lists
- ghost list
- language list (in settings and in popup on first launch)
- demo browser
- editor file browser (saving, loading, adding images / sounds)
  - The search / filename input is also improved so navigating a filtered list works correctly by porting the logic from upstream.

There are minor changes to the visual appearance of some lists, due to changed margins.

The vertical alignment of some list item texts is improved so the text is centered vertically.
2023-01-06 12:46:16 +01:00
Robert Müller f79daac222 Add page up/down, home, end hotkeys to UI 2023-01-06 00:52:46 +01:00
Dennis Felsing 6a13008147 Update translations for upcoming 16.7 2023-01-05 09:39:34 +01:00
Zwelf 877ab41dd7 Remove projectiles on team change 2023-01-04 21:08:47 +01:00