Stop thinking there are amazing programmers in this community. There aren't. Its all a pain in the ass to manage and people get upset when you decline their pull requests because you'd have to fix a dozen other issues before it being mergeable is not something I want to deal with.
From this...
You are wrong / misinformed. Please stop making assumptions. Arcturus was open source for a couple years up to a point where there were no contributions happening anymore and people started to use it as a base for renames, which was clearly not allowed as stated on the repository back then...
You do realize that we are a community dedicated to emulating a game? Yes that includes copying client files from Habbo because yes we want to copy that game. Just because we are copying that game doesnt make it right to steal from other people trying to contribute to this community. Also I dont...
Thats incorrect. Morningcrap is based on decompiled & stolen sources. Arcturus is the original, by me. Morningcrap is a knockoff by people that don't want to put in the effort to make an emulator from scratch. But hey they don't tell you we stole this without permission...
For Arcturus its either DF_<value> for diamonds or for points types PF_<value>_<type> (eg DF_200 for 200 diamonds, PF_1000_0 for 1000 of points type 0 (0 = duckets)
Great, then make it a struct.
Actually, no. The data has already been received (At least I really hope). As the message has a prefixed length + header thus I assume that IClientMessage contains all the bytestream bytes already.
Implementation is for @Damien to decide. The Invoke() method is...
Going generic in your interface doesnt mean you are required to have a parameterless constructor. Just do something like this:
typeof(MessageType).GetConstructor(new[] { typeof(IClientMessage)}).Invoke(new[]{message})
And wherever you register your messages you can check if that type has a...
Technically there is no difference. With a scoped using you've got a more control over when the object is disposed. With an non scoped using statement its at the end of the method. If thats supposed to be the lifetime of your disosable object then go with the new style.
Non scoped using...
Its best practice to use named arguments in logging. Reason for this is so that string interpolation isn't evaluated at runtime when logging is disabled, ignored or discarded. Also using named arguments you could use other analytics tools for further post processing.