There are two interfaces for score worker data:
There is ``ISqlResult`` and every class inheriting from it should have
the suffix ``Result``
Then there is ``ISqlData`` and every class inheriting from it should
have the suffix ``Data`` if it is data that should be written in an
INSERT statement. Or ``Request`` if it is used to perform a read
operation and will be used in a SELECT statament.
The convention was mostly established alreay. In this commit the last
three classes that broke this convention got fixed.
```
[1/322] Building C object CMakeFiles/glew.dir/src/engine/external/glew/glew.c.o
FAILED: CMakeFiles/glew.dir/src/engine/external/glew/glew.c.o
/usr/bin/cc -DGLEW_STATIC -I/home/runner/work/ddnet/ddnet/src/engine/external/glew -g -fdiagnostics-color=always -fstack-protector-strong -fno-exceptions -fsigned-char -Wno-implicit-function-declaration -MD -MT CMakeFiles/glew.dir/src/engine/external/glew/glew.c.o -MF CMakeFiles/glew.dir/src/engine/external/glew/glew.c.o.d -o CMakeFiles/glew.dir/src/engine/external/glew/glew.c.o -c /home/runner/work/ddnet/ddnet/src/engine/external/glew/glew.c
In file included from /home/runner/work/ddnet/ddnet/src/engine/external/glew/glew.c:34:
/home/runner/work/ddnet/ddnet/src/engine/external/glew/GL/glew.h:1205:14: fatal error: GL/glu.h: No such file or directory
1205 | # include <GL/glu.h>
| ^~~~~~~~~~
compilation terminated.
[2/322] Building C object CMakeFiles/wavpack.dir/src/engine/external/wavpack/float.c.o
```
Specifically:
* Ignore freeze, deep freeze, deep unfreeze, live freeze, and live unfreeze tiles
* Ignore also the switched variants of those tiles
* Allow movement when deep and live frozen
* Ignore death tiles
* Ignore red tele, blue tele, red checkpoint tele, and blue checkpoint tele tiles
* Unlimited jumps
* Disable /rescue
Switches, doors, draggers, etc. are not disabled for invincible players in this patch
This commit adds the rcon command "invincible" which toggles the new m_Invincible variable on CCharacterCore. The feature is supposed to be an alterantive to super that is safe for /practice mode. The state of m_Invincible is synchronized to the client via the DDNetCharacter net object. Future commits will change checks for m_Super to check for m_Invincible as well in places where this is safe such as e.g. preventing freezing of the player. The ability to interact with players that are in other teams will remain exclusive to super.
Specifically, SetSuper(false) followed by SetSuper(false) should not change teams. The following commit relies on this, but it is generally a good idea to remove this footgun.
As Vulkan crashes immediately on launch on a lot of Android devices (for around 15% of users that commented on the Android beta on Discord).
The previous usage of the OpenGL backend in the shortcuts was incorrect, as this backend is not strictly available on Android and the GLES backend should be used instead, as this is also what is displayed in the graphics settings.
The functions of the client component `CSounds` had a volume parameter which was unused. In some cases, the wrong value (`0`, presumably for the flags) was passed as the volume, which is now changed to `1.0f`. The player ground skid sound was previously set to play only at `0.25f` volume though this parameter was unused, which is also changed to `1.0f` to preserve the historic behavior.
A parameter is added to the engine sound play functions to directly set the volume without having to acquire the lock again.
Fix sound position not being respected for hook hit and ground jump sounds as the position parameter was ignored in the `CSounds::PlayAndRecord` function. Add TODOs for issues with this function for demo recording.
Parameters are ordered consistently and default parameter values are removed.
Duplicate code in the `CSounds` play functions is reduced by reusing the `PlaySample`/`PlaySampleAt` functions.
Fix incorrect panning value (`1.0f`) being set for GUI and Global sound channels after sound volume is changed, whereas the panning value is initialized to `0.0f`. Now the panning value is set to `0.0f` consistently. This should not have had any effect, as GUI and Global sounds do not have a position which would be affected by the panning value.
The default option is on. So nothing in the logging output changes.
But users now have the option to set ``dbg_sql 0``
which hides all the sql logging unless there is an error.
Show error messages when loading maps, when exporting images/sounds and when embedding images, if images/sounds could not be loaded. Images and sounds not being loaded is supported so the editor can be used to fix maps by removing/replacing the images/sounds.
Saving maps is prevented if embedded images/sounds could not be loaded, as the data is required to save the map.
Always convert image data to RGBA and dilate if enabled also for external images, as images may be embedded later and should therefore always be in RGBA format.