














































// execute config file
if(pStorage->FileExists(CONFIG_FILE, IStorage::TYPE_ALL))
{
pConsole->SetUnknownCommandCallback(SaveUnknownCommandCallback, pClient);
if(!pConsole->ExecuteFile(CONFIG_FILE))
{
const char *pError = "Failed to load config from '" CONFIG_FILE "'.";
dbg_msg("client", "%s", pError);
pClient->ShowMessageBox("Config File Error", pError);
PerformAllCleanup();
return -1;
}
pConsole->SetUnknownCommandCallback(IConsole::EmptyUnknownCommandCallback, nullptr);
}




























































































































std::clamp(BaseY, Boundaries.y + 32.f, Boundaries.y + Boundaries.h - 32.f)
ColorRGBA in most places


width+201?

CCollision keeps track of the game layer size, so if you wanted a cache then that would be the place, but just for width+201 it's not really worth it





















vec(0, 0) temporarily while inside a speeder

vec(0, 0) temporarily while inside a speeder 
/tp; teleport to the origin of your spectating perspective
/tp arg'; teleport to this player
/tp arg1 arg2; teleport to these coordinates (arg1 is x, arg2 is y)
can also specify relative coordinates, like minecraft. these are all valid
10 (absolute 10.00)
~10 (current position + 10.00)
~+10 (current position + 10.00)
`...












































GameLayer -> pGameLayer

Boundaries probably doesn't need to be static
staticvec4 isn't very expensive to create/destroy either




% clang-format --version
Debian clang-format version 18.0.0 (++20231122111257+b3a9e8f7c0af-1~exp1~20231122111413.1710)













python3 scripts/fix_style.py before committing




ewan@machine /x/ddnet-practice-tp-coords (tp-coords)> clang-format-10 -i -style=file **/*.cpp **/*.h
exec: Failed to execute process '/usr/bin/clang-format-10': the total size of the argument list and exported variables (6kB) exceeds the operating system limit.





python3 scripts/fix_style.py before committing 



ewan@machine /x/ddnet-practice-tp-coords (tp-coords)> clang-format-10 -i -style=file **/*.cpp **/*.h
exec: Failed to execute process '/usr/bin/clang-format-10': the total size of the argument list and exported variables (6kB) exceeds the operating system limit.




































<> instead



ddlint that basically runs all of the CI stuff at once locally











let param = match x.parse() {
Ok(p) => p,
Err(e) => {
eprintln!("Error in param: {e}");
continue;
}
}

continue as ! which can be converted into any arbitrary type, thus the two branches of the match can return the same type






CEditorObject.
Previously only CMapView methods were used, but we should instead use the components methods by iterating over them in case we add more editor components.





strtod e.g. returns NaN if you input "nan" with any case

strtod e.g. returns NaN if you input "nan" with any case 










HUGE_VAL is defined as infinity on my machine



















































bind kp_1 "rcon_login <name> <accesskey>; rcon show_ips 1; rcon status; rcon dump_antibot; rcon logout" to be more precise




Test














































































































































































































virtual or not (e.g. if they're further derived)?






virtual or not (e.g. if they're further derived)? 


















@rust 











nightmare category








novice
moderate
brutal
insane
nightmare
godlike
supreme king
SSGSSJ2
Ultra instinct
uninstall

atomic

thread-safe







HUGE_VAL is defined as infinity on my machine 




















clampf function with NormalizeColorComponent function that convert color component from float to unsigned char.
Use size_t instead of int.






































#include <stdio.h>
main(t,_,a)
char
*
a;
{
return!
0<t?
t<3?
main(-79,-13,a+
main(-87,1-_,
main(-86, 0, a+1 )
+a)):
1,
t<_?
main(t+1, _, a )
:3,
main ( -94, -27+t, a )
&&t == 2 ?_
<13 ?
main ( 2, _+1, "%s %d %d\n" )
:9:16:
t<0?
t<-72?
main( _, t,
"@n'+,#'/*{}w+/w#cdnr/+,{}r/*de}+,/*{*+,/w{%+,/w#q#n+,/#{l,+,/n{n+,/+#n+,/#;\
#q#n+,/+k#;*+,/'r :'d*'3,}{w+K w'K:'+}e#';dq#'l q#'+d'K#!/+k#;\
q#'r}eKK#}w'r}eKK{nl]'/#;#q#n'){)#}w'){){nl]'/+#n';d}rw' i;# ){nl]!/n{n#'; \
r{#w'r nc{nl]'/#{l,+'K {rw' iK{;[{nl]'/w#q#\
\
n'wk nw' iwk{KK{nl]!/w{%'l##w#' i; :{nl]'/*{q#'ld;r'}{nlwb!/*de}'c ;;\
{nl'-{}rw]'/+,}##'*}#nc,',#nw]'/+kd'+e}+;\
#'rdq#w! nr'/ ') }+}{rl#'{n' ')# }'+}##(!!/")
:
t<-50?
_==*a ?
putchar(31[a]):
main(-65,_,a+1)
:
main((*a == '/') + t, _, a + 1 )
:
0<t?
main ( 2, 2 , "%s")
:*a=='/'||
main(0,
main(-61,*a, "!ek;dc i@bK'(q)-[w]*%n+r3#l,{}:\nuwloca-O;m
.vpbks,fxntdCeghiry")
,a+1);}









dyn ...














