00:00 < bridge> Up and down worked 00:00 < bridge> i tried a few months ago and the hats werent working 00:00 < bridge> It was broken in a different way in a few previous versions 00:00 < bridge> and the same joystick shenangans 00:00 < bridge> ^ whichi cant figure out why is happening 00:00 < bridge> my partner wants to get into ddnet but they prefer controller 00:00 < bridge> lmao 00:01 < bridge> I'd even consider mobile easier than controller πŸ˜„ 00:02 < bridge> being able to use hats for wasd and relative movement on the right joystick 00:02 < bridge> it feels the same to me as mouse and kb 00:02 < bridge> it would take me a while to get used to it 00:02 < bridge> I'd definitely use absolute aiming though 00:04 < bridge> i use really low mouse max distance 00:04 < bridge> so to aim i move my mouse in the direction i want to aim 00:38 < bridge> render and ui related code are brrr.. 00:38 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1345540858262454322/20250225_053516.jpg?ex=67c4ec13&is=67c39a93&hm=59419e6e45976c5d90efc9cdfba0e961d1cce9f8d071541c8f5b4d8c34edc765& 00:39 < bridge> Spaghetti everywhere 00:41 < bridge> I think it's just very redundant, maplayers especially. The engine part just follows usual vulkan backend api with shaders and rasterization and stuff. So at least the render related code is not _that_ aweful 00:42 < bridge> Well I mean more specific code like how you actually render the tees 00:44 < bridge> Me trying to get alpha thing work in demo 00:46 < bridge> I am wondering, are there any rules against functions as parameters? If not I'll follow up with a refactoring ... 00:46 < bridge> I love recalls 00:47 < bridge> I love callbacks 01:02 < bridge> @everyone https://discord.gg/9N9N9abqVm 02:14 < bridge> ok tune lock tile is ready ill just wait until #9788 is merged πŸ˜„ 02:14 < bridge> https://github.com/ddnet/ddnet/pull/9788 02:23 < bridge> https://tenor.com/view/mercy-overwatch-come-here-gif-14280244 02:24 < bridge> we're getting tune lock before silksong i cant believe it 02:24 < bridge> https://tenor.com/view/gigachad-chad-gif-20773266 02:27 < bridge> it should also supercede #5732 02:27 < bridge> https://github.com/ddnet/ddnet/pull/5732 02:36 < bridge> :D 02:36 < bridge> I didn't see this before 02:39 < bridge> thats.. old 02:41 < bridge> I've often tried to push things *people* wanted but devs/admins didn't see/wanted to, so yeah might not be best implementation and not 100% finished, but on my server it works really well since that PR is out 02:50 < bridge> we live in a society 03:30 < bridge> wait what was the decided behavior for tune lock overrides? 03:30 < bridge> i think tune lock should always be applied on top of the current tune zone if there is one 03:31 < bridge> wow hecta dev role should've had it since a while ago xd 03:38 < bridge> no, tune zones should have higher priority, as discussed with @corneum before. It's way more usable 03:43 < bridge> i wanted to be role-less ngl 03:44 < bridge> how so? 03:46 < bridge> oh yea i can kinda see why 03:46 < bridge> so you be tuned but still have tune zones affect you 03:47 < bridge> how would you make a tunezone in which players without a tunelock have a 0 force grenade, but the guy with tunelock has a normal nade 03:47 < bridge> if tune zones have higher priority 03:56 < bridge> they should both be added on top of eachother, but i think tunelock tunes for a specific `specific_tune_setting` should take priority over a tune zone's `specific_tune_setting` 06:01 < bridge> i almost said server tunes but im assuming the server should have normal grenade physics to begin with 06:03 < bridge> server tunes should just be an abstraction for tunezone across the whole map 06:05 < bridge> this is a very tricky situation because: 06:05 < bridge> - if tune lock has priority, entering a tune zone for the same tune doesn't do anything 06:05 < bridge> - if tune zones have priority, both tees (one tuned and the other not) will have the same exact tunings 06:06 < bridge> *both tees inside it 06:10 < bridge> i think tune lock prio makes sense 06:10 < bridge> @corneum what parts were u trying to make where its worse? 11:32 < bridge> I dont remembeeπŸ’€ 11:33 < bridge> bor for gor 11:42 < bridge> 50$ gift https://steamecommunuty.com/s/1052980419 11:54 < bridge> this is cool i like this 11:54 < bridge> Should new tune lock override old one, or only apply when no override? So in the second case have to unlock with the corresponding unlock tile and then tune lock works 12:35 < bridge> ok i think ill rewrite to 2nd so this setup works just for one player 12:35 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1345721139476955167/image.png?ex=67c593f9&is=67c44279&hm=4e2353d59025bbfb7d4b2f49bdb45f6d3999f324ee2ef39cc44c707e34fb7a6c& 13:18 < bridge> This is how slides would look like :brownbear: 13:18 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1345732072261681235/slides_test1_2025-03-02_13-14-18.mp4?ex=67c59e28&is=67c44ca8&hm=333cfc2b977832bd9855b2b8148c3be548f86136607477281819e4f2ecf9faa2& 13:22 < bridge> arrows pointing in the opposite dir still triggers tho 😬 13:22 < bridge> will this break old clients? 13:22 < bridge> they wont have prediction for it 13:23 < bridge> aa so itll break their antiping 13:23 < bridge> will we need new entities? 13:23 < bridge> also the local character prediction will not look smooth 13:23 < bridge> @hectavoxel πŸ™ˆ 13:23 < bridge> speedup arrows are not part of the entities 13:23 < bridge> no this is part of the speedlayer 13:24 < bridge> you enter the angle in the ui, so the slides have 360 degrees of freedom, force and max speed is not needed 13:26 < bridge> oo thats cool 13:27 < bridge> only downside so far, they are skippable and there is nothing I can do against this 13:27 < bridge> only downside so far, they are skippable and there is nothing I can do against this, they are not slopes 13:28 < bridge> I could implement true slopes, but the prediction isn't the only thing I'd break with true slopes :justatest: 13:33 < bridge> `vButtonsContainersSettingsControlsJoystickAbsolute` 13:35 < bridge> Java 13:35 < bridge> im not allowed to use static anymore 13:35 < bridge> 😭 13:35 < bridge> a simpler time 13:40 < bridge> wait does a vector of 0 size elements have no size per element? 13:40 < bridge> `&vec[1] == &vec[2]` 13:40 < bridge> if anyone needs a review, ask me. I am constantly asking for reviews and want to give something back 13:41 < bridge> no its padded to 1 byte or more 13:41 < bridge> doesn't a template vector have a type, shouldn't this be the size of the type? 13:41 < bridge> if you're using a struct, it's usually padded up to 4 bytes if you don't use the right pragmas for it 13:42 < bridge> `std::vector vButtonsContainersNamePlateKeyPresses = {{}, {}, {}, {}};` 13:42 < bridge> `class CButtonContainer{};` 13:42 < bridge> `sizeof(CButtonContainer) != 0` 13:43 < bridge> friend mark 13:43 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1345738385372745850/image.png?ex=67c5a409&is=67c45289&hm=47120572e404c59b225e201a38e3c44b4319e574cbb29eddaaf90e29dba565c5& 13:44 < bridge> πŸ‘€ 13:58 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1345741942566289448/image.png?ex=67c5a759&is=67c455d9&hm=9be65d753658df9f854b49d8a43d6c6d14488aa7bd0475ad163c443bec84a44a& 13:58 < bridge> thanks git very co0ol 14:02 < bridge> btw is there a reason we are not support VS 2022? 14:04 < bridge> waoh this is awesome 14:04 < bridge> best new tile I've ever seen 14:05 < bridge> we do? 14:05 < bridge> I use vs 2022 exclusively 14:05 < bridge> ``` 14:05 < bridge> [cmake] CMake Error at CMakeLists.txt:26 (project): 14:05 < bridge> [cmake] Generator 14:05 < bridge> [cmake] 14:05 < bridge> [cmake] Visual Studio 16 2019 14:05 < bridge> [cmake] 14:05 < bridge> [cmake] could not find any instance of Visual Studio. 14:05 < bridge> [cmake] 14:05 < bridge> [cmake] 14:06 < bridge> [cmake] 14:06 < bridge> ``` 14:06 < bridge> 14:06 < bridge> VS 2022 is installed? 14:06 < bridge> I get this error in VS-Code 14:06 < bridge> there is some way to pass an agurment to tell it to use vs 2022 but I don't use vscode so idk how 14:07 < bridge> I see the variable, gonna search 14:07 < bridge> ` -G "Visual Studio 16 2019"` 14:09 < bridge> just a configuration issue, when I switch to 2022 I get an error ... 14:09 < bridge> what error 14:10 < bridge> `"EBUSY: resource busy or locked, unlink 'c:\Users\Marvin\Desktop\workspace\ddnet\build\CMakeFiles\CMakeConfigureLog.yaml'".` 14:10 < bridge> `"EBUSY: resource busy or locked, unlink 'c:\Users\User\Desktop\workspace\ddnet\build\CMakeFiles\CMakeConfigureLog.yaml'".` 14:11 < bridge> -\ windows moment 14:11 < bridge> -# windows moment 14:11 < bridge> if you're not using the vs 2022 IDE why not just install vs 2019 for the toolchain 14:11 < bridge> then you won't have issues 14:11 < bridge> or your cmake version is old 14:11 < bridge> because windows doesn't like multiple vs versions 14:12 < bridge> it would have to be pretty old 14:12 < bridge> I have 4 VS versions... 14:12 < bridge> i usually just keep one 14:12 < bridge> `>cmake --version 14:12 < bridge> cmake version 3.31.0 14:12 < bridge> ` 14:12 < bridge> so cmake just auto select the right one 14:12 < bridge> maybe it's too new 14:13 < bridge> Just generate the cmake manually? 14:13 < bridge> maybe just cleanup and manually specify generator 14:13 < bridge> There is a cmake gui 14:13 < bridge> i have 3.30.5 works fine 14:13 < bridge> in vs 2022 you just open cmake project and thats it 14:13 < bridge> although to be fair i just used the vscode cmake extension it just list all the compilers and let me click on one 14:14 < bridge> i haven't installed any actual visual studio for years. i only install vs build tools 14:14 < bridge> I deleted the CmakeFiles directory, now I am just missing ffmpeg apprently 14:15 < bridge> .... 14:15 < bridge> ``` 14:15 < bridge> [cmake] CMake Error at CMakeLists.txt:1887 (file): 14:15 < bridge> [cmake] file COPY cannot find 14:15 < bridge> [cmake] "C:/Users/Marvin/Desktop/workspace/ddnet/ddnet-libs/ffmpeg/windows/lib64/avcodec-61.dll": 14:15 < bridge> [cmake] No error. 14:15 < bridge> ``` 14:15 < bridge> ffmpeg should be included in ddnetlibs 14:15 < bridge> name leak! 14:15 < bridge> oh that's on me 14:15 < bridge> is the folder empty 14:15 < bridge> hi Marvin 14:15 < bridge> yeye I already leaked my proffesional github account, deal with it 14:15 < bridge> hi 14:15 < bridge> love you 14:15 < bridge> I love me too 14:16 < bridge> ok continue the troubleshoot. i'm just here to say hi 14:16 < bridge> just a missing `git submodule update` 14:20 < bridge> wait ddnet is supposed to handle ime? 14:20 < bridge> darn 14:20 < bridge> i mean ye.. 14:20 < bridge> chinese player base was big 14:20 < bridge> an application can be completley blind to ime and work pretty functionaly 14:20 < bridge> its nice to have text editing 14:20 < bridge> pretty sure it is toolkits job 14:21 < bridge> but ddnet stores the candidates, so i pressume they are rendered in ddnet 14:21 < bridge> but we obviously aren't using a UI toolkit 14:21 < bridge> ye 14:21 < bridge> only on windows tho 14:21 < bridge> not anymore B) 14:21 < bridge> in SDL3? 14:21 < bridge> yeah 14:21 < bridge> now its cross platform 14:22 < bridge> so bye bye windows restriction 14:22 < bridge> it's not really a restriction 14:22 < bridge> it's a exclusive fullscreen workaround 14:22 < bridge> and you can should be able to choose between "native" (ibus) and ddnet 14:22 < bridge> oh right that 14:22 < bridge> macos always composite so using a in-engine candidate is actually worse than letting system handle IME 14:23 < bridge> xorg and wayland no longer have the exclusive fullscreen restriction either 14:23 < bridge> not sure about linux. i think compositors always have a way to integrate with ibus or fcitx5 14:23 < bridge> but i think you should be able to choose between ddnet and native 14:23 < bridge> its not like ime candidates are that hard to render 14:23 < bridge> so ye, better just kept it windows exclusive in that case. cuz people can really hate the in-game candidate list 14:23 < bridge> you can already 14:24 < bridge> you can always turn it off 14:24 < bridge> there is a setting to bypass the in-game one. 14:24 < bridge> yes 14:24 < bridge> but i do think default to the ime render player usually see is better 14:24 < bridge> i kinda want to make ddnet also automatically give up on render candidates with windows mode 14:24 < bridge> except on windows 14:25 < bridge> I managed to get it working, I needed to manually delete cmake cache and all older build directories 14:25 < bridge> in exclusive fullscreen 14:25 < bridge> because windows moment 14:25 < bridge> windowed fullscreen on windows is weird 14:25 < bridge> the IME works on some machine but not others 14:25 < bridge> its just a window without decoration at full res? 14:25 < bridge> maybe sometime driver might just decide that it should take over the whole screen anyway 14:26 < bridge> to reduce latency for windowed fullscreen 14:26 < bridge> i'm guessing 14:26 < bridge> well since "exclusive fullscreen" is no different for me anymore 14:26 < bridge> i assume all issues with it are gone 14:26 < bridge> not that i ever had any 14:26 < bridge> debugging the server crashes immediatly ... ........ 14:26 < bridge> segfault? 14:27 < bridge> accidental anti-debugger. ~~we should make that a feature and sell them to commercial project~~ 14:28 < bridge> ``` 14:28 < bridge> DDNet-Server.exe (17248): Loaded 'C:\Users\Marvin\Desktop\workspace\ddnet\build\release\DDNet-Server.exe'. Module was built without symbols. 14:28 < bridge> DDNet-Server.exe (17248): Loaded 'C:\Windows\System32\ntdll.dll'. 14:28 < bridge> DDNet-Server.exe (17248): Loaded 'C:\Windows\System32\kernel32.dll'. 14:28 < bridge> DDNet-Server.exe (17248): Loaded 'C:\Windows\System32\KernelBase.dll'. 14:28 < bridge> DDNet-Server.exe (17248): Loaded 'C:\Windows\System32\apphelp.dll'. 14:28 < bridge> DDNet-Server.exe (17248): Loaded 'C:\Windows\System32\shlwapi.dll'. 14:28 < bridge> DDNet-Server.exe (17248): Loaded 'C:\Windows\System32\msvcrt.dll'. 14:28 < bridge> DDNet-Server.exe (17248): Loaded 'C:\Windows\System32\ws2_32.dll'. 14:28 < bridge> DDNet-Server.exe (17248): Loaded 'C:\Windows\System32\rpcrt4.dll'. 14:28 < bridge> DDNet-Server.exe (17248): Loaded 'C:\Windows\System32\version.dll'. 14:28 < bridge> DDNet-Server.exe (17248): Loaded 'C:\Windows\System32\ole32.dll'. 14:28 < bridge> DDNet-Server.exe (17248): Loaded 'C:\Windows\System32\ucrtbase.dll'. 14:28 < bridge> DDNet-Server.exe (17248): Loaded 'C:\Windows\System32\combase.dll'. 14:28 < bridge> DDNet-Server.exe (17248): Loaded 'C:\Windows\System32\gdi32.dll'. 14:28 < bridge> DDNet-Server.exe (17248): Loaded 'C:\Windows\System32\win32u.dll'. 14:28 < bridge> DDNet-Server.exe (17248): Loaded 'C:\Windows\System32\gdi32full.dll'. 14:28 < bridge> DDNet-Server.exe (17248): Loaded 'C:\Windows\System32\msvcp_win.dll'. 14:28 < bridge> DDNet-Server.exe (17248): Loaded 'C:\Windows\System32\user32.dll'. 14:28 < bridge> DDNet-Server.exe (17248): Loaded 'C:\Windows\System32\shell32.dll'. 14:28 < bridge> DDNet-Server.exe (17248): Loaded 'C:\Windows\System32\advapi32.dll'. 14:28 < bridge> DDNet-Server.exe (17248): Loaded 'C:\Windows\System32\sechost.dll'. 14:28 < bridge> DDNet-Server.exe (17248): Loaded 'C:\winbuilds\bin\sqlite3.dll'. 14:28 < bridge> DDNet-Server.exe (17248): Loaded 'C:\Windows\System32\bcrypt.dll'. 14:28 < bridge> The program '[17248] DDNet-Server.exe' has exited with code -1073741515 (0xc0000135). 14:28 < bridge> ``` 14:28 < bridge> what why does it use release? 14:28 < bridge> WHAT 14:28 < bridge> 😬 14:28 < bridge> -DDEV=ON maybe? 14:29 < bridge> even then debugger shouldn't crash a release build server tho 14:29 < bridge> DDNet-Server.exe (2852): Loaded 'C:\Users\Marvin\Desktop\workspace\ddnet\build\debug\DDNet-Server.exe'. Symbols loaded. 14:29 < bridge> 14:29 < bridge> Still crashes the exact same way 14:29 < bridge> omg 14:30 < bridge> DeepSeek-R1 could be used for coding teeworlds code. 14:30 < bridge> terminal time: 14:30 < bridge> ``` 14:30 < bridge> 2025-03-02 14:30:17 E server: failed to load map. mapname='dm1' 14:30 < bridge> (base) 14:30 < bridge> ``` 14:30 < bridge> xD 14:31 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1345750250127884371/image.png?ex=67c5af16&is=67c45d96&hm=3900266294c9cc99e8c94948bde6df42287e08debd657bee3b9329a8e65cb687& 14:31 < bridge> I asked it something, and then it even know that needing to modify bam.lua 14:31 < bridge> oh is that one of the 14:31 < bridge> fully automated 14:32 < bridge> probably not devin 14:33 < bridge> However, sadly, it couldn't be used in my project about teeworlds. 14:33 < bridge> Now I got it running 14:46 < bridge> is it known, that IsGrounded is 1 pixel off? 14:47 < bridge> I did: 14:47 < bridge> ``` 14:47 < bridge> if(IsGrounded()) 14:47 < bridge> Vel.y = 0; 14:47 < bridge> ``` 14:47 < bridge> And I am flying 1 pixel in the air 14:54 < bridge> something something gravity or something 14:54 < bridge> :kek: 15:04 < bridge> never hang in a 1tile gap? it even makes the joump sound even tho your feet are in air πŸ˜„ 15:05 < bridge> ```cpp 15:05 < bridge> #if defined(CONF_PLATFORM_ANDROID) 15:05 < bridge> // Translate the Android back-button to the escape-key so it can be used to open/close the menu, close popups etc. 15:05 < bridge> if(Key == KEY_AC_BACK) 15:05 < bridge> { 15:05 < bridge> Key = KEY_ESCAPE; 15:05 < bridge> } 15:05 < bridge> #endif 15:06 < bridge> ``` 15:06 < bridge> ac back is not android specifoc and *could* be generated by a funky controller or keyboard 15:07 < bridge> but the feature is also only active on android xd 15:10 < bridge> right now it is 15:11 < bridge> but theres no reason not to handle it on other platforms 15:11 < bridge> ah so you _want_ it to be used for controllers? 15:11 < bridge> a *funky* controller could 15:11 < bridge> i dont use controller 15:17 < bridge> 15:17 < bridge> `candidates` doesnt seem to disable native rendering 15:33 < bridge> `SDL_EVENT_TEXT_EDITING_CANDIDATES` waiit no way, did sdl actually implement this? 15:33 < bridge> I looked into this for several weeks seeing if I could implement it for SDL but there just was no way to get the candidate list out on macOS 15:33 < bridge> Nor on linux 15:33 < bridge> I wonder how they managed to do it 15:34 < bridge> all the ime methods probably have thier own ways, it just wasnt implemeneted 15:34 < bridge> but now theres enough to do so 15:34 < bridge> maybe macos is still borked 15:34 < bridge> If they didn't implement it for anything except windows I'm very very disappointed πŸ˜„ 15:34 < bridge> that could be the case because its not hiding the candidate list 15:34 < bridge> that could be the case because its not hiding the candidate ui 15:35 < bridge> that could be the case because its not hiding the candidate ui for me with ibus 15:37 < bridge> on macOS I managed to extract the candidates directly from memory by disabling many security measures and injecting myself into appkit, definitely not a proper solution 15:37 < bridge> :sob: 15:37 < bridge> +😭 15:37 < bridge> 😭 15:37 < bridge> on Linux there is actually 0 documentation, none of the used IMEs have any of their own documentation, all of their irc channels are dead too 15:38 < bridge> at that point I was like damn, I'm not wasting more time on this shit 15:40 < bridge> There is some standard for it inside X iirc but it wasn't enough 15:43 < bridge> welp 15:43 < bridge> @learath2 do you happen to have a windows machine which can compile ddnet available to you 15:44 < bridge> sure, why? 15:44 < bridge> can you try my sdl3 branch 15:44 < bridge> and see if ime works 15:44 < bridge> Tomorrow I can 15:44 < bridge> 15:44 < bridge> sure 15:44 < bridge> if it works on windows then its good enough 15:45 < bridge> by ime works i mean "you can use it" and "ddnet renders ime candidates" 15:45 < bridge> Looking at it it seems they actually went through the trouble of interacting with each and every possible IM Server on Linux 15:46 < bridge> Props to whoever had the patience to navigate through that mess and figure out how to handle it for each server 15:46 < bridge> can u see where they get candidate lists? 15:47 < bridge> ```cpp 15:47 < bridge> SDL_DBusContext *dbus = SDL_DBus_GetContext(); 15:47 < bridge> 15:47 < bridge> if (IBus_CheckConnection(dbus)) { 15:47 < bridge> Uint32 caps = IBUS_CAP_FOCUS; 15:47 < bridge> 15:47 < bridge> if (hint && SDL_strstr(hint, "composition")) { 15:47 < bridge> caps |= IBUS_CAP_PREEDIT_TEXT; 15:47 < bridge> } 15:47 < bridge> if (hint && SDL_strstr(hint, "candidates")) { 15:47 < bridge> // FIXME, turn off native candidate rendering 15:47 < bridge> } 15:47 < bridge> 15:47 < bridge> SDL_DBus_CallVoidMethodOnConnection(ibus_conn, ibus_service, input_ctx_path, ibus_input_interface, "SetCapabilities", 15:47 < bridge> DBUS_TYPE_UINT32, &caps, DBUS_TYPE_INVALID); 15:47 < bridge> } 15:47 < bridge> ``` 15:47 < bridge> thats probably why it doesnt work for me 15:48 < bridge> could someone merge ? 15:48 < bridge> Yep, it doesn't turn off native rendering πŸ˜„ I was just looking at that exact same location 15:48 < bridge> it would be weird to have non native rendeing at the same time 15:48 < bridge> so it probably turns that off but i havent found that yet 15:52 < bridge> Doesn't seem like they do. Only the windows backend seems to call `SDL_SendEditingTextCandidates` 15:52 < bridge> thats too bad ): 15:52 < bridge> well windows is the only platform that benefits from it 15:52 < bridge> so 15:52 < bridge> Β―\_(ツ)_/Β― 15:53 < bridge> Not surprised. Except for windows this stuff is so sparsely documented that the person implementing it probably got bored 15:53 < bridge> https://ibus.github.io/docs/ibus-1.5/IBusInputContext.html 15:54 < bridge> Uncommon windows W 15:54 < bridge> `The "show-lookup-table" signal` 15:54 < bridge> `The "cursor-down-lookup-table" signal` 15:54 < bridge> `The "cursor-up-lookup-table" signal` 15:54 < bridge> you can get the candidate list i think 15:54 < bridge> i cant find out how to hide native ui 15:55 < bridge> classic 15:55 < bridge> Yeah there seems to be a way, `IBUS_CAP_LOOKUP_TABLE` there is this capability indicating you can render your own, maybe setting this is enough? 15:55 < bridge> having extreme dajavu now i'm seeing lerato joined the convo 15:56 < bridge> the wording is vague 15:56 < bridge> `The panel component does nothing for an application that doesn't support focus.` 15:56 < bridge> i wonder how big sdl3 is 15:56 < bridge> to mess around with 15:56 < bridge> Perhaps you listen to `update-lookup-table` signals for it? 15:57 < bridge> btw candidate list really isn't needed on non windows i think. 15:57 < bridge> but its annoying that its not 15:57 < bridge> why 15:57 < bridge> but its annoying that its not possible to do 15:57 < bridge> and perhaps you emit `hide-lookup-table signal` to hide it? 15:57 < bridge> IME worked fine with a compositor 15:58 < bridge> i agree that its not needed, i just think it could and should be supported regardless 15:58 < bridge> It'd be great if it looked the same everywher 15:58 < bridge> It'd be great if it looked the same everywhere 15:58 < bridge> why? 15:58 < bridge> and if you prefer it to be composited on top, you can get a config for it 15:58 < bridge> people use IME with their own settings 15:58 < bridge> theres already a config for it :D 15:58 < bridge> we don't even have a horizontal candidate list 15:59 < bridge> because 15:59 < bridge> that can be changed 15:59 < bridge> idk I don't like having weird inconsistent experiences between people that we don't control 15:59 < bridge> 😬 but we can't just take away their normal IME 15:59 < bridge> for no reason 15:59 < bridge> What happens if you are playing in exclusive fullscreen and aren't running a compositor? 15:59 < bridge> (xorg and wayland dont have that problem) 16:00 < bridge> (nor does macos) 16:00 < bridge> does linux even support typing with IME with no compositor 16:00 < bridge> (nor does macos) 16:00 < bridge> (its just windows) 16:00 < bridge> Who knows? If we were rendering the candidate list on our own these wouldn't be discussions that need having 16:01 < bridge> at least make it automatic or something 16:01 < bridge> i keep getting DMs about turning off the built-in candidate list 16:01 < bridge> it is annoying 16:01 < bridge> and the people that don't like the way we render it can just disable it and wrestle with their compositing and fullscreen/borderless/desktop fullscreen/whatever fullscreen settings themselves 16:01 < bridge> i wanted to just auto bypass the built-in one if it runs in windowed mode on windows 16:01 < bridge> is it not a setting 16:02 < bridge> haven't got around doing it tho 16:02 < bridge> it is,but people don't check commands often or don't know how 16:02 < bridge> is it not a gui setting 16:02 < bridge> i don't think so 16:02 < bridge> should be a gui setting 16:02 < bridge> I like things working out of the box and being uniform across platforms. Then you can break it however you like 16:02 < bridge> that i can at least somewhat get behind 16:03 < bridge> having a gui setting will just make the opposite happen where people not understanding what the config does and just ask why their IME won't work 16:03 < bridge> Can't windows render on exclusive fullscreen using that one weird trick they do with flickering the screen? 16:03 < bridge> we patched SDL to make that happen 16:04 < bridge> with built-in candidate list we removed that patch 16:04 < bridge> Can you show me your IME candidate list btw? What sort of customization do people do to the candidate list that rendering it ourselves would be bad? 16:04 < bridge> https://www.youtube.com/watch?v=oLNaB-pzvus 16:05 < bridge> uhh 16:05 < bridge> fuck off 16:05 < bridge> mine is really standard. let me poll in CHN rq 16:05 < bridge> This or vertical are the only options I can really think about 16:05 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1345774031240171592/ime-pinyin-candidates.png?ex=67c5c53c&is=67c473bc&hm=265c948d8a1c0158c1e9b4c672ad413fd5ec91684c60ae612a6655f6a0aca139& 16:05 < bridge> they use anime skins 16:05 < bridge> Maybe a small anime girl to the left? 16:05 < bridge> Yeah figured 16:05 < bridge> and some cloud functions that auto replace the second candidate with AI stuff 16:06 < bridge> @learath2 can u remove the guys spam >< 16:06 < bridge> sometimes that doesn't work with the built in one 16:06 < bridge> @learath2 can u remove the guys spam >< (its in many channels) 16:06 < bridge> but mostly because the IME maker didn't bother to properly call windows API 16:07 < bridge> but how does the text replacement work properly then? Perhaps sdl is missing an event or something? 16:07 < bridge> wdym. 16:07 < bridge> the candidate windows is controlled by IME they can render anything. and the input is just regular text event 16:07 < bridge> when you commit 16:07 < bridge> the candidate window is controlled by IME they can render anything. and the input is just regular text event 16:08 < bridge> I guess I'm misremembering how windows does its IME 16:08 < bridge> we made our built-in render works using microsoft pinyin as a reference 16:08 < bridge> but lots of chinese don't use that 16:08 < bridge> and we can't possibly adapt to the 20 different options on the market 16:08 < bridge> Anyway, pointless discussion. SDL3 didn't figure out how to get the candidates portably either so we can't have my dream come true 16:09 < bridge> πŸ’€ 16:09 < bridge> i mean we could figure it out but i still don't want built-in to be default 16:09 < bridge> i like it as a workaround 16:10 < bridge> Linux looks like it can be figured out. macOS is still impossible 16:10 < bridge> i also run my IME without numbering tbh 16:10 < bridge> but i haven't figured out how to do that with fcitx5 yet 16:11 < bridge> oh also 16:11 < bridge> we can't read whether an IME is horizontal or vertical and sometimes IME's input direction is weird 16:11 < bridge> some people select candidate using arrow keys 16:12 < bridge> and some only works with left right and some only works with up down 16:12 < bridge> some are brackets but we don't talk about those 16:13 < bridge> random ass skin thumbnail i found 16:13 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1345775952042655846/e745d20bc07f774aeaadb505567fab99.jpg?ex=67c5c706&is=67c47586&hm=f4fbaf14bb9b6b0bceea8973bbad3565b4e72aa231044bf5ae276cd6f8a8e782& 16:13 < bridge> lmao 16:13 < bridge> Ok I'm sold, lets implement this skin for our default built-in IME 16:13 < bridge> Ok I'm sold, lets implement this skin for our default built-in IME candidate list 16:13 < bridge> honestly 16:14 < bridge> probably will make people stop asking how to turn it off 16:14 < bridge> upvote 16:14 < bridge> (sdl3 reports it for windows) 16:15 < bridge> i'm pretty sure 3rd party ime makers don't usually interface with windows correctly 16:15 < bridge> I'm sure some IME vendors just don't report it correctly or something. This stuff is soooooooooo messy 16:15 < bridge> and that 16:15 < bridge> ye 16:15 < bridge> there is also XIM for X11 but I think fcitx and ibus completely ignore that 16:16 < bridge> fcitx is like it's own thing 16:16 < bridge> xim uses ibus no? 16:16 < bridge> it just does whatever it wants 16:16 < bridge> ibus is an input method for xim? 16:16 < bridge> ibus provides a xim server? 16:16 < bridge> There should be one universal standard and any vendor that deviates from it should be executed 16:17 < bridge> That would fix all these issues very quickly 16:17 < bridge> ime is crazy 16:17 < bridge> chinese ime is also weird, some people really likes to design their own 16:17 < bridge> so there is rime. 16:18 < bridge> and rime sometimes does weird thing with depends on whether it runs on fcitx or ibus 16:18 < bridge> and rime sometimes does weird thing depends on whether it runs on fcitx or ibus 16:19 < bridge> i can't imagine korean designing their own just to do less keystrokes or more deterministics. 16:19 < bridge> japanese maybe 16:19 < bridge> not sure 16:21 < bridge> ~~and there's me out here typing a whole ass propaganda with four chars ~~ 16:21 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1345778097177497771/image.png?ex=67c5c905&is=67c47785&hm=6174d800a3d5c038d41ba99392eb3e5ad7078186938e58a9a1be0cab2e1cee70& 16:59 < bridge> I can now render speedtiles and slides seperately, also we could change the optics of old vs new speedtiles :happy: 16:59 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1345787718302564352/screenshot_2025-03-02_16-58-25.png?ex=67c5d1fb&is=67c4807b&hm=e20975e588720be29a313d848cc59c0e4296266e0a09bf20ecd0bb1ff544af48& 17:10 < bridge> i think all their characters more or less fit on a qwerty keyboard 17:13 < bridge> @learath2 17:13 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1345791030720462869/42ac5a6d13e5bd404c5e015be44d426a.mp4?ex=67c5d511&is=67c48391&hm=c71165122aee52be2f521d111fc181ba7951a7625a41a017ee7f253f110c657d& 17:13 < bridge> but look at it, sooo pretty 17:14 < bridge> what is he on tho 17:14 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1345791432748961854/image.png?ex=67c5d571&is=67c483f1&hm=b619302fd14dfb37ac1b7385fccf40021bf510b4c0586b752b7f494a218892ee& 17:16 < bridge> ok now i'm pretty sure i know why people don't want to use it. windows broke their own IME sometime in 2024 and it just reports 10 candidates to applications always 17:16 < bridge> ok now i'm pretty sure i know why people don't want to use it. windows broke their own IME sometime in 2024 and it just reports 10 candidate page size to applications always 17:16 < bridge> 17:16 < bridge> life is hell 17:35 < bridge> ddnet broke both my monitors 17:35 < bridge> sigh 17:40 < bridge> secret triangles that turn you into a tee 17:40 < bridge> i actually know what that pill is, is just funny that dude has them lying around 17:45 < bridge> `inp_ime_native_ui 1` 17:46 < bridge> i knew that. just saying lots of people do want it off lol 17:54 < bridge> :nouis: i do feel like a bot when i have to search commands myself and relaying to them. 17:55 < bridge> happens very often 18:05 < bridge> ``` 18:05 < bridge> pData->m_NumCommands = 0; 18:05 < bridge> for(CCommand *pCommand = m_pFirstCommand; pCommand; pCommand = pCommand->m_pNext) 18:05 < bridge> { 18:05 < bridge> if(pData->m_NumCommands < (int)(std::size(pData->m_aCommandsChecksum))) 18:05 < bridge> { 18:05 < bridge> FCommandCallback pfnCallback = pCommand->m_pfnCallback; 18:05 < bridge> void *pUserData = pCommand->m_pUserData; 18:06 < bridge> TraverseChain(&pfnCallback, &pUserData); 18:06 < bridge> int CallbackBits = (uintptr_t)pfnCallback & 0xfff; 18:06 < bridge> int *pTarget = &pData->m_aCommandsChecksum[pData->m_NumCommands]; 18:06 < bridge> *pTarget = ((uint8_t)pCommand->m_pName[0]) | ((uint8_t)pCommand->m_pName[1] << 8) | (CallbackBits << 16); 18:06 < bridge> } 18:06 < bridge> pData->m_NumCommands += 1; 18:06 < bridge> } 18:06 < bridge> ``` 18:06 < bridge> is it fine if this code changes 18:06 < bridge> (in `void CConsole::InitChecksum(CChecksumData *pData) const` to produce a different value equally as checksummy) 18:16 < bridge> @hectavoxel 18:16 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1345806988898078860/image.png?ex=67c5e3ee&is=67c4926e&hm=c18e05846e5ba4871f3819878e1351920bda04ce2f686404e2148c18bf150e2f& 18:18 < bridge> What are you trying to do? 18:19 < bridge> change all the raw pointrs to std::func 18:19 < bridge> change all the raw pointrs to std::function 18:19 < bridge> for callbacks 18:19 < bridge> tune lock is the future 18:20 < bridge> because i wanted a std::function callback for cmenu::prompt... 18:20 * bridge is not a huge fan of `std::function`s 18:20 < bridge> ``` 18:20 < bridge> static_assert( 18:20 < bridge> ::rust::IsRelocatable<::IConsole_FCommandCallback>::value, 18:20 < bridge> "type IConsole_FCommandCallback should be trivially move constructible and trivially destructible in C++ to be used as an argument of `Register` in Rust"); 18:20 < bridge> ``` 18:20 < bridge> everything seems to work but this.. but i removed it and it compiles 18:20 < ws-client> clang forced me to use std::all_of do i just have to get used to it? or is there a way to do it less ugly like wtf? 18:21 < ws-client> https://zillyhuhn.com/cs/.1740936004.png 18:21 < bridge> kewl 18:21 < bridge> i make some comments on github 18:21 < bridge> its harder to do things when forced to use raw pointers, ddnet gets around it for the most part by using member func pointers 18:21 < bridge> but uhh what if i dont want to create a member function and value for rememebering the old value of display settings 18:22 < bridge> insta segfault ofc 18:22 < bridge> insta segfault ofc 18:22 < bridge> Well I'm sure the person who put that assert there knew what they were doing πŸ˜„ 18:22 < bridge> the segfault is caused by rust magic 18:23 < bridge> Unless you want to remove all rust along with it, I'm guessing removing the assert is also wrong 18:23 < bridge> i would love to remove all rust 18:23 < bridge> but uhmm im not going to 18:23 < bridge> seperate pr /j 18:24 < bridge> So you want to be able to pass lambda functions in there? 18:24 < bridge> yeah 18:24 < bridge> if i dont get this to work im just going to .. do the messy way 18:25 < bridge> i slightly need the ability for it to revert display changes after 5s because otherwise it destroys wipes my monitors of the face of my desk then uhh i cant do much 18:26 < bridge> You are making a simple problem very complicated by trying to refactor everything :justatest: 18:26 < bridge> yep 18:26 < bridge> this isnt going to happen im gonna do it the messy way 18:26 < bridge> Perhaps one could limit the requirement to just functions registered from rust 18:27 < bridge> or rather just change the callback i need 18:27 < bridge> We already have a `CMenus::PopupConfirm`. Try to at most rewrite that to use a parameter object instead of a bunch of separate parameters and `std::function` callbacks instead of function pointers to member functions. 18:28 < bridge> paramater object as in 18:28 < bridge> pUser 18:28 < bridge> https://refactoring.guru/introduce-parameter-object 18:28 < bridge> oh yeah 18:28 < bridge> i dont want to add more paramters 18:28 < bridge> just change the pfncallbacks to std::funcs 18:28 < bridge> which there are 3 18:28 < bridge> But you want to add a timer 18:28 < bridge> That's another parameter 18:28 < bridge> can you not cancel prompts 18:29 < bridge> outside 18:29 < bridge> Not with the generic `CMenus::PopupConfirm`. At that point you'd have to duplicate the popup (which is currently done for a lot of popups anyway) 18:30 < bridge> can i not just do m_Popup = 0 18:30 < bridge> You don't render `PopupConfirm` yourself, it's generic and only renders your message and buttons 18:31 < bridge> That assert does seem a little overly restrictive, I'm guessing the relocability is needed so C++ can call rust callbacks properly. Thus it could probably be relaxed to only callbacks registered from rust needing to satisfy that requirement by splitting the type 18:31 < bridge> i like your words magic man 18:31 < bridge> # 18:31 < bridge> i like your words magic man 18:32 < bridge> which there are 2 18:47 < bridge> ohhhhh i think i made them backwards 18:48 < bridge> thats an easy fix 18:48 < bridge> I wouldn't use a triangle there 18:49 < bridge> I agree with the line, but make something under it, idk ideas? 18:49 < bridge> I agree with the line, but make something different under it, idk ideas? 18:50 < bridge> hmm maybe instead of the line with the trinagle below, something of a table shape 18:51 < bridge> make it look like unhookable xd 18:51 < bridge> β•₯, β•  , β”œ 18:51 < bridge> they are pass through from one side, I don't think this works 18:51 < bridge> ah wait nvm its not really acting like that sort of slide right 18:52 < bridge> it acts as a slide, no input -> you slide, like in the kindergarden 18:53 < bridge> i can try that 18:56 < bridge> smth like this? 18:56 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1345817093265952881/image.png?ex=67c5ed57&is=67c49bd7&hm=ab22383a57e9fbbb1034bbe8b5f712880f02645de36515b86a083a28c2b0f171& 18:56 < bridge> oh yes I think this would be better 18:57 < bridge> its not so confusing with the pointy bit of a speedtile 18:57 < bridge> yea 19:16 < bridge> @louis.place what do you think? 19:16 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1345822016548245608/screenshot_2025-03-02_19-15-13.png?ex=67c5f1ec&is=67c4a06c&hm=b1d871aff18300c1a72fd8cf63140d163d1c539579f283813abb008eef8d834b& 19:18 < bridge> anything would work fine in entities but idk how you would make this in design 19:19 < bridge> maybe just slopes πŸ˜› 19:35 < bridge> entities is the issue 19:35 < bridge> What is the issue? 19:36 < bridge> it looks bad in entities 19:36 < bridge> compared to the slope 19:36 < bridge> compared to a slope 19:37 < bridge> I thought the triangles were fine 19:37 < bridge> the design of the entities themselves its fine 19:37 < bridge> its just that it doesnt show where you would move going along it 19:37 < bridge> But that depends where you're already moving 19:38 < bridge> the intended purpsoe is slopes 19:38 < bridge> therse not an easy solution unless you look at the tiles around it to do entities 19:38 < bridge> well it does, it's an angled line? 19:38 < bridge> and even then theyre not hookable 19:38 < bridge> 3 of them 19:38 < bridge> its not an issue you have to worry about 19:39 < bridge> hmm 19:39 < bridge> 3 of them for a 3 long slope 19:41 < bridge> it would be nice to have slopes of any angle and have it hookable, or hookthru or solid 19:42 < bridge> wait thats ... actually 19:42 < bridge> uhmm 19:42 < bridge> that sounds so complicated 19:42 < bridge> can you not have an angle on each tile 19:43 < bridge> that way you can do any tile aligned slopes 19:43 < bridge> and more if youre patient 19:43 < bridge> the rotated tiles would still be snapped to the tile grid, right? 19:43 < bridge> yeah 19:44 < bridge> ok lemme visualize this 19:44 < bridge> 0-90 cuts the top right corner 19:44 < bridge> 90-180 cuts the bottom right corner 19:44 < bridge> wait no 19:44 < bridge> uhh 19:44 < bridge> 0-1 cuts the top right corner 19:45 < bridge> 0-90 cuts the top right corner 19:45 < bridge> 180-270 cuts the bottom left corner 19:45 < bridge> 270-360 cuts the top left corner 19:46 < bridge> so smth like this? 19:46 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1345829530287476900/unknown.jpeg?ex=67c5f8ec&is=67c4a76c&hm=688f7d372b0e7b71b5ea19613d3f93f3e7eaf1487344abf70ac79ce11966f665& 19:46 < bridge> this is what i see when you say "each tile has a rotation" 19:51 < bridge> this will allow you to more efficiently pack 17 tiles onto the screen 19:51 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1345830905817595974/deeply-unsettling-asymmetric-patterns-in-mathematics-v0-4kj8dzo5f1ia1-1387886570.jpg?ex=67c5fa34&is=67c4a8b4&hm=4cc054d3b1a3abe52bbdc40ee6029fb1f0e16bef199b701f43661600f49aa5ab& 19:59 < bridge> anyone familiar with `content.py`? I literally copied the code of an other tile with the same size and can't render it properly 20:08 < bridge> is the position right? 20:36 < bridge> how can i use router's ip for host server? 20:37 < bridge> how can i use router's ip to host server? 20:42 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1345843832230510602/GlC_NTjWEAAouKz.png?ex=67c6063e&is=67c4b4be&hm=3e81e0aee35d6d0d69badeb20607ebb20ea6790a1b8e29344d632e95c2d6c357& 20:55 < bridge> no... 20:55 < bridge> tune lock map idea, dummy map but dummy has gravity 0 20:55 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1345846998154346586/tune_lock.mp4?ex=67c60930&is=67c4b7b0&hm=bcfa5b17c2f778d4045560bcfbb5c4c52bd532674b07681343e3a5b458ad9bcb& 20:56 < bridge> or better volleyball 20:59 < bridge> @sollybunny Can you update the screenshots for #9601 again? 20:59 < bridge> https://github.com/ddnet/ddnet/pull/9601 20:59 < bridge> the bottommost one is accurate for the ui, the penultimate one is accurate for the game, and the ones before are just showing size 21:00 < bridge> but okay 21:00 < bridge> ah, I see there's a new one 21:02 < bridge> the bulletpt list is inacurate tho 21:02 < bridge> the bulletpt list is inacurate tho-ish 21:02 < bridge> maybe remove the old ones though so the correct screenshot is picked for the release highlights 21:02 < bridge> πŸ”₯ 21:02 < bridge> oke 21:24 < bridge> wait so what do you mean then 21:24 < bridge> like the slide speeders but hookable? 21:27 < bridge> oh i just thought about an idea for that! 21:27 < bridge> since speeders have an array in-game, we can add snapping lines for important angles 21:27 < bridge> like 90Β°, 45Β°, 1x2 slopes, long 1x3 slopes 21:33 < bridge> I don't really get your point, the angle in the editor already snappes to this angles 21:33 < bridge> I don't really get your point, the angle in the editor already snaps to this angles 21:34 < bridge> in-game 21:34 < bridge> like when you're playing 21:34 < bridge> solly is saying its harder to tell the angle of where you're going in entities 21:37 < bridge> https://jsfiddle.net/nwx12j6f/6/ 21:37 < bridge> is what i was thinking 21:37 < bridge> but i realised you cant do much with that 21:38 < bridge> no im saying it doesnt look like a slope 21:39 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1345858019480703036/image.png?ex=67c61374&is=67c4c1f4&hm=9db805a15cabb23e22e0a797c387a14a4f984d3e933733a47b7eb1fbf29dc37a& 21:39 < bridge> in entities 21:42 < bridge> would there need to be corner blocks too to account for this? 21:42 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1345858907750404116/unknown.jpeg?ex=67c61448&is=67c4c2c8&hm=44f538dc5bf4adf5a526015896512e5267003c2b7afd5979e165c8ad008254f6& 21:43 < bridge> yeah which is why i realised my original idea was bad 21:43 < bridge> after starting to make this 21:43 < bridge> but i was like 21:43 < bridge> i might aswell it will look really cool 21:43 < bridge> being able to modify normal tiles i think is better than having a zone with slope like behaviour 21:44 < bridge> true 21:44 < bridge> subtle lines in the array 21:44 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1345859296176508983/unknown.jpeg?ex=67c614a5&is=67c4c325&hm=5de508889ed30271ee210316014fab744cbe96c237ffdaa710d29fae3286e33b& 21:44 < bridge> but its alot harder 21:44 < bridge> would be hard to implement 21:44 < bridge> not really 21:44 < bridge> would have to scan tiles around it 21:45 < bridge> so that it lines up like in the image 21:45 < bridge> or actually not 21:45 < bridge> if you dont care about it being at y=0 at the start 21:45 < bridge> you can use mod on the x position 21:46 < bridge> or just prebake the line connections 21:46 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1345859731004198985/unknown.jpeg?ex=67c6150c&is=67c4c38c&hm=d61daaf31a792852e0a79664b7f522e51032bff5919b40ad2cffb585b7a5c89d& 21:46 < bridge> in the image 21:46 < bridge> only works for certain angles 21:46 < bridge> does it 21:46 < bridge> yea 21:46 < bridge> yeah 21:46 < bridge> yeahh 21:46 < bridge> yeahhh 21:46 < bridge> dunno how else we would do it tho 21:46 < bridge> . 21:47 < bridge> mayb 21:47 < bridge> but if the icon is at the right angle 21:47 < bridge> its the best you can do i think 21:47 < bridge> without giving up on the idea of having a tile for slopes like that 22:05 < bridge> I think my clang-tidy is on drugs: 22:05 < bridge> ``` 22:05 < bridge> /home/runner/work/ddnet/ddnet/src/game/client/prediction/entities/character.cpp:392:48: error: Potential memory leak [clang-analyzer-unix.Malloc,-warnings-as-errors] 22:05 < bridge> 392 | for(int i = -ShotSpread; i <= ShotSpread; ++i) 22:05 < bridge> ``` 22:06 < bridge> I think my clang-tidy is on drugs: 22:06 < bridge> ``` 22:06 < bridge> /home/runner/work/ddnet/ddnet/src/game/client/prediction/entities/character.cpp:392:48: error: Potential memory leak [clang-analyzer-unix.Malloc,-warnings-as-errors] 22:06 < bridge> 392 | for(int i = -ShotSpread; i <= ShotSpread; ++i) 22:06 < bridge> | ^ 22:06 < bridge> ``` 22:06 < bridge> I think my clang-tidy is on drugs: 22:06 < bridge> ``` 22:06 < bridge> /home/runner/work/ddnet/ddnet/src/game/client/prediction/entities/character.cpp:392:48: error: Potential memory leak [clang-analyzer-unix.Malloc,-warnings-as-errors] 22:06 < bridge> 392 | for(int i = -ShotSpread; i <= ShotSpread; ++i) 22:06 < bridge> | ^ 22:06 < bridge> ``` 22:06 < bridge> shouldnt it be (ShotSpread * -1) 22:07 < bridge> I didn't write this code, idk xD 22:07 < bridge> tf :justatest: 22:08 < bridge> oh its pointing at the ++i 22:08 < bridge> yeah my clang-tidy is finding random problems in code I never touched πŸ€·β€β™‚οΈ 22:33 < bridge> You know, the codebase is not confronting many clang-tidy checks 22:33 < bridge> You can open a thousand prs refactoring those stuff 22:37 < bridge> @kebscs any idea whats going on? the pink tiles on the right indicate a tune lock thats supposed to set `shotgun_strength` to `-10` but it does nothing 22:37 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1345872751755268239/tunelocktest.mp4?ex=67c6212d&is=67c4cfad&hm=f20b95091e30a0690ea58ed0ffc78a7e34b570ef3a12529931d0ca24b33b0136& 22:37 < bridge> other tunes seem to work fine 22:38 < bridge> but changing shotgun strength to anything else doesnt result in any actual changes 22:39 < bridge> tho when both my dummy and main tee enter that tune lock it seems like client tries to predict negative strength shotgun 22:43 < bridge> shotgun strength is projectile tune which doesnt work with override 22:44 < bridge> projectile tunes are based on spawn location tune so idk if i want to change that to work with override 22:45 < bridge> but will look why prediction breaks 22:53 < bridge> @matodor any reason why you implemented override just for player, and not for projectiles? I think it could be done by just checking on projectile spawn if owner is a player and has tune override 23:33 < ws-client> can we please store stuff in the projectile not in the player who shot the projectile so stuff doesnt break when the player disconnects 23:34 < bridge> sure 23:34 < ws-client> @Assa ye that memleak is annoying you can find some magic comments in the code that deactivate it 23:35 < ws-client> `` // NOLINT(clang-analyzer-unix.Malloc)`` 23:40 < bridge> ye annoying memleak in int i = 0; i++; 23:41 < bridge> Should I make a Draft PR? I am at a point where I just have a minor bug I can't find 23:50 < bridge> sure! 23:50 < bridge> you can always just squash commits