02:34 < bridge> Hey is there anywhere we can suggest features for the client ? 02:36 < bridge> #town-hall or github issues 02:37 < bridge> @essigautomat you broke the speeder max speed bug. it's needed by some maps 02:37 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1372734702368325672/Broken_brain.map?ex=6827da51&is=682688d1&hm=69e0010f750425aa5f0aa0be155cb22bb18be04e7e5938b94b119645db251854& 02:41 < bridge> the prediction still predicts the bug tho 02:41 < bridge> leads to a flicker 03:15 < bridge> or someone else did xd 03:16 < bridge> i instinctively blame assa 03:32 < bridge> @alw5 finish on the same time 60 more times and then you have an illegal team size finish XD 03:33 < bridge> would be the first in history 03:33 < bridge> @alw5 finish with the same time 60 more times and then you have an illegal team size finish XD 03:33 < bridge> @alw5 finish with the same time 124 more times and then you have an illegal team size finish XD 03:33 < bridge> thats an epic bug tho 03:34 < bridge> me omw to make a 1000 player teamrank 03:34 < bridge> the tassers when they hear this one 03:35 < bridge> I'd like to get started on contributing, where could I start from ? 03:36 < bridge> https://github.com/ddnet/ddnet/issues?q=is%3Aissue%20state%3Aopen%20label%3A%22good%20first%20issue%22 03:36 < bridge> Thank you 03:36 < bridge> this sorts open issues that have the label "good first issue" 03:43 < bridge> This only happens on bad maps tho :) 06:55 < bridge> morning crude oil processors and others 06:55 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1372799573956886578/image.png?ex=682816bb&is=6826c53b&hm=ec58db39f75beef778507775ce1cd77124b3b048459805b8afccbf7e73f309f0& 07:34 < bridge> What time complexity is this 07:45 < bridge> crude oil 08:12 < bridge> > if you want to change tune lock from 3 to 4, you would need to put unlock 3 and lock 4 08:12 < bridge> 08:12 < bridge> have you fixed this yet? 08:12 < bridge> it would be much more convenient to just touch lock 4, instead of put unlock 3 before 08:28 < bridge> I didn't, I only added new speedtiles without that bug. 08:30 < bridge> Went into server, still working. 08:56 < bridge> i felt this one today 08:56 < bridge> xd 08:57 < bridge> man, my backend was going so smooth but it looks like I would need to make one more ir 09:22 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1372836483073048739/image.png?ex=6828391b&is=6826e79b&hm=cc181cc8b4e754a0001a23b0ada4338f33b52aa593317c79b2451ae7143940fa& 10:08 < bridge> I can 10:08 < bridge> If wanted 10:09 < bridge> @louis.place 10:13 < bridge> on which server did that happen 10:15 < bridge> im join on LoopRay map -> open editor -> Load current map -> idk im just make some random changes in map -> press CTRL+SHIFT+E for exit from editor -> crash 10:15 < bridge> cant' reproduce 10:15 < bridge> ok 17:54 < bridge> what about disable now? 17:54 < bridge> should it disable all only only of number? 18:01 < bridge> idk, only if you can implement stack of locked tunezones, if no - maybe just tune lock off without number will be enough 18:04 < bridge> i think should disable all now that lock can lock any 18:04 < bridge> would be confusing to make parts 18:38 < bridge> #9793 18:38 < bridge> Changed to: 18:38 < bridge> Tune Lock tile now always locks new values, you no longer need to remove the lock 18:38 < bridge> Tune Unlock always unlocks, there's no need to match the same number 18:38 < bridge> https://github.com/ddnet/ddnet/pull/9793 19:23 < bridge> so u can't just do 0 index for tunelock to remove? 19:23 < bridge> i guess makes sense like other tiles 19:26 < bridge> i could ig 19:26 < bridge> so its only 1 new tile 19:31 < bridge> that was my idea of it but EHM some people here are zeroist 19:31 < bridge> they say its INVALID 19:35 < bridge> it's another thing u have to know / learn 19:42 < bridge> do you ever want like some container and instead of just implementing it, you implement the most general case of it? 19:42 < bridge> ```cpp 19:43 < bridge> #include 19:43 < bridge> #include 19:43 < bridge> #include 19:43 < bridge> #include 19:43 < bridge> #include 19:43 < bridge> 19:43 < bridge> template 19:43 < bridge> class RWLockedWithCon { 19:43 < bridge> private: 19:43 < bridge> std::shared_mutex mtx; 19:43 < bridge> std::condition_variable con; 19:43 < bridge> std::mutex conMtx; 19:43 < bridge> std::atomic written; 19:43 < bridge> Value value; 19:43 < bridge> class RWLockedWithConR { 19:43 < bridge> private: 19:43 < bridge> const Value& value; 19:43 < bridge> std::shared_lock lock; 19:43 < bridge> public: 19:43 < bridge> RWLockedWithConR(const Value& v, std::shared_mutex& m) 19:43 < bridge> : value(v), lock(m) {} 19:43 < bridge> const Value& operator*() { return value; } 19:43 < bridge> const Value* operator->() { return value; } 19:43 < bridge> }; 19:43 < bridge> class RWLockedWithConW { 19:43 < bridge> private: 19:43 < bridge> Value& value; 19:43 < bridge> std::unique_lock lock; 19:43 < bridge> std::condition_variable& con; 19:43 < bridge> std::atomic& written; 19:43 < bridge> somethings wrong with me 20:04 < bridge> but yes 23:18 < bridge> rust pros, send help. I want to have one enum with common opcodes and others can "extend" it with its own variants. I made this monstrosity. Is it possible to write better? xd 23:18 < bridge> ```rust 23:18 < bridge> #![feature(variant_count)] 23:18 < bridge> 23:18 < bridge> trait Opcode { 23:18 < bridge> fn to_usize(&self) -> usize; 23:18 < bridge> } 23:18 < bridge> 23:18 < bridge> #[derive(Clone, Copy)] 23:18 < bridge> enum GeneralOpcode { 23:18 < bridge> Add, 23:19 < bridge> } 23:19 < bridge> 23:19 < bridge> impl Opcode for GeneralOpcode { 23:19 < bridge> fn to_usize(&self) -> usize { 23:19 < bridge> *self as usize 23:19 < bridge> } 23:19 < bridge> } 23:19 < bridge> 23:19 < bridge> #[repr(usize)] 23:19 < bridge> enum CustomOpcode { 23:19 < bridge> General(GeneralOpcode), 23:19 < bridge> Add, 23:19 < bridge> } 23:19 < bridge> 23:19 < bridge> impl Opcode for CustomOpcode { 23:19 < bridge> fn to_usize(&self) -> usize { 23:19 < bridge> match self { 23:19 < bridge> Self::General(g) => g.to_usize(), 23:19 < bridge> other => unsafe { 23:19 < bridge> std::mem::variant_count::() 23:37 < bridge> bizarre 23:43 < bridge> I'd use an others enum separately. Then you can write the parteq better 23:44 < bridge> Without unsafe 23:44 < bridge> You can still unify them in a allcodes enum