SensorMonitoringConsoleComponent.cs 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. using Content.Shared.SensorMonitoring;
  2. using Robust.Server.Player;
  3. using Robust.Shared.Collections;
  4. using Robust.Shared.Player;
  5. namespace Content.Server.SensorMonitoring;
  6. [RegisterComponent]
  7. public sealed partial class SensorMonitoringConsoleComponent : Component
  8. {
  9. /// <summary>
  10. /// Used to assign network IDs for sensors and sensor streams.
  11. /// </summary>
  12. public int IdCounter;
  13. /// <summary>
  14. /// If enabled, additional data streams are shown intended to only be visible for debugging.
  15. /// </summary>
  16. [ViewVariables(VVAccess.ReadWrite)]
  17. [DataField("debugStreams")]
  18. public bool DebugStreams = false;
  19. [ViewVariables(VVAccess.ReadWrite)]
  20. public Dictionary<EntityUid, SensorData> Sensors = new();
  21. [DataField("retentionTime")]
  22. public TimeSpan RetentionTime = TimeSpan.FromMinutes(1);
  23. // UI update tracking stuff.
  24. public HashSet<EntityUid> InitialUIStateSent = new();
  25. public TimeSpan LastUIUpdate;
  26. public ValueList<int> RemovedSensors;
  27. public sealed class SensorData
  28. {
  29. [ViewVariables(VVAccess.ReadWrite)]
  30. public int NetId;
  31. [ViewVariables(VVAccess.ReadWrite)]
  32. public SensorDeviceType DeviceType;
  33. [ViewVariables(VVAccess.ReadWrite)]
  34. public Dictionary<string, SensorStream> Streams = new();
  35. }
  36. public sealed class SensorStream
  37. {
  38. [ViewVariables(VVAccess.ReadWrite)]
  39. public int NetId;
  40. [ViewVariables(VVAccess.ReadWrite)]
  41. public SensorUnit Unit;
  42. // Queue<T> is a ring buffer internally, and we can still iterate over it.
  43. // I don't wanna write a ring buffer myself, so this is pretty convenient!
  44. [ViewVariables]
  45. public Queue<SensorSample> Samples = new();
  46. }
  47. public sealed class ViewingPlayer
  48. {
  49. }
  50. }