1
0

MsgPreferencesAndSettings.cs 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. using System.IO;
  2. using Lidgren.Network;
  3. using Robust.Shared.Network;
  4. using Robust.Shared.Serialization;
  5. namespace Content.Shared.Preferences
  6. {
  7. /// <summary>
  8. /// The server sends this before the client joins the lobby.
  9. /// </summary>
  10. public sealed class MsgPreferencesAndSettings : NetMessage
  11. {
  12. public override MsgGroups MsgGroup => MsgGroups.Command;
  13. public PlayerPreferences Preferences = default!;
  14. public GameSettings Settings = default!;
  15. public override void ReadFromBuffer(NetIncomingMessage buffer, IRobustSerializer serializer)
  16. {
  17. var length = buffer.ReadVariableInt32();
  18. using (var stream = new MemoryStream())
  19. {
  20. buffer.ReadAlignedMemory(stream, length);
  21. serializer.DeserializeDirect(stream, out Preferences);
  22. }
  23. length = buffer.ReadVariableInt32();
  24. using (var stream = new MemoryStream())
  25. {
  26. buffer.ReadAlignedMemory(stream, length);
  27. serializer.DeserializeDirect(stream, out Settings);
  28. }
  29. }
  30. public override void WriteToBuffer(NetOutgoingMessage buffer, IRobustSerializer serializer)
  31. {
  32. using (var stream = new MemoryStream())
  33. {
  34. serializer.SerializeDirect(stream, Preferences);
  35. buffer.WriteVariableInt32((int) stream.Length);
  36. stream.TryGetBuffer(out var segment);
  37. buffer.Write(segment);
  38. }
  39. using (var stream = new MemoryStream())
  40. {
  41. serializer.SerializeDirect(stream, Settings);
  42. buffer.WriteVariableInt32((int) stream.Length);
  43. stream.TryGetBuffer(out var segment);
  44. buffer.Write(segment);
  45. }
  46. }
  47. }
  48. }