1
0

MsgUpdateCharacter.cs 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839
  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 client sends this to update a character profile.
  9. /// </summary>
  10. public sealed class MsgUpdateCharacter : NetMessage
  11. {
  12. public override MsgGroups MsgGroup => MsgGroups.Command;
  13. public int Slot;
  14. public ICharacterProfile Profile = default!;
  15. public override void ReadFromBuffer(NetIncomingMessage buffer, IRobustSerializer serializer)
  16. {
  17. Slot = buffer.ReadInt32();
  18. var length = buffer.ReadVariableInt32();
  19. using var stream = new MemoryStream(length);
  20. buffer.ReadAlignedMemory(stream, length);
  21. Profile = serializer.Deserialize<ICharacterProfile>(stream);
  22. }
  23. public override void WriteToBuffer(NetOutgoingMessage buffer, IRobustSerializer serializer)
  24. {
  25. buffer.Write(Slot);
  26. using (var stream = new MemoryStream())
  27. {
  28. serializer.Serialize(stream, Profile);
  29. buffer.WriteVariableInt32((int) stream.Length);
  30. stream.TryGetBuffer(out var segment);
  31. buffer.Write(segment);
  32. }
  33. }
  34. }
  35. }