AtmosDeviceNetwork.cs 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. using Content.Server.DeviceNetwork;
  2. using Content.Server.DeviceNetwork.Systems;
  3. using Content.Shared.Atmos.Monitor.Components;
  4. using Content.Shared.DeviceNetwork;
  5. namespace Content.Server.Atmos.Monitor.Systems;
  6. /// <summary>
  7. /// Generic device network commands useful for atmos devices,
  8. /// as well as some helper commands.
  9. /// </summary>
  10. public sealed class AtmosDeviceNetworkSystem : EntitySystem
  11. {
  12. /// <summary>
  13. /// Register a device's address on this device.
  14. /// </summary>
  15. public const string RegisterDevice = "atmos_register_device";
  16. /// <summary>
  17. /// Deregister a device's address on this device.
  18. /// </summary>
  19. public const string DeregisterDevice = "atmos_deregister_device";
  20. /// <summary>
  21. /// Synchronize the data this device has with the sender.
  22. /// </summary>
  23. public const string SyncData = "atmos_sync_data";
  24. [Dependency] private readonly DeviceNetworkSystem _deviceNet = default!;
  25. public void Register(EntityUid uid, string? address)
  26. {
  27. var registerPayload = new NetworkPayload
  28. {
  29. [DeviceNetworkConstants.Command] = RegisterDevice
  30. };
  31. _deviceNet.QueuePacket(uid, address, registerPayload);
  32. }
  33. public void Deregister(EntityUid uid, string? address)
  34. {
  35. var deregisterPayload = new NetworkPayload
  36. {
  37. [DeviceNetworkConstants.Command] = DeregisterDevice
  38. };
  39. _deviceNet.QueuePacket(uid, address, deregisterPayload);
  40. }
  41. public void Sync(EntityUid uid, string? address)
  42. {
  43. var syncPayload = new NetworkPayload
  44. {
  45. [DeviceNetworkConstants.Command] = SyncData
  46. };
  47. _deviceNet.QueuePacket(uid, address, syncPayload);
  48. }
  49. public void SetDeviceState(EntityUid uid, string address, IAtmosDeviceData data)
  50. {
  51. var payload = new NetworkPayload()
  52. {
  53. [DeviceNetworkConstants.Command] = DeviceNetworkConstants.CmdSetState,
  54. [DeviceNetworkConstants.CmdSetState] = data
  55. };
  56. _deviceNet.QueuePacket(uid, address, payload);
  57. }
  58. }