MsgPlayTime.cs 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. using Lidgren.Network;
  2. using Robust.Shared.Network;
  3. using Robust.Shared.Serialization;
  4. namespace Content.Shared.Players.PlayTimeTracking;
  5. /// <summary>
  6. /// Sent server -> client to inform the client of their play times.
  7. /// </summary>
  8. public sealed class MsgPlayTime : NetMessage
  9. {
  10. public override MsgGroups MsgGroup => MsgGroups.EntityEvent;
  11. public Dictionary<string, TimeSpan> Trackers = new();
  12. public override void ReadFromBuffer(NetIncomingMessage buffer, IRobustSerializer serializer)
  13. {
  14. var count = buffer.ReadVariableInt32();
  15. Trackers.EnsureCapacity(count);
  16. for (var i = 0; i < count; i++)
  17. {
  18. Trackers.Add(buffer.ReadString(), buffer.ReadTimeSpan());
  19. }
  20. }
  21. public override void WriteToBuffer(NetOutgoingMessage buffer, IRobustSerializer serializer)
  22. {
  23. buffer.WriteVariableInt32(Trackers.Count);
  24. foreach (var (role, time) in Trackers)
  25. {
  26. buffer.Write(role);
  27. buffer.Write(time);
  28. }
  29. }
  30. }