using Content.Server.DeviceNetwork; using Content.Server.DeviceNetwork.Systems; using Content.Shared.Atmos.Monitor.Components; using Content.Shared.DeviceNetwork; namespace Content.Server.Atmos.Monitor.Systems; /// /// Generic device network commands useful for atmos devices, /// as well as some helper commands. /// public sealed class AtmosDeviceNetworkSystem : EntitySystem { /// /// Register a device's address on this device. /// public const string RegisterDevice = "atmos_register_device"; /// /// Deregister a device's address on this device. /// public const string DeregisterDevice = "atmos_deregister_device"; /// /// Synchronize the data this device has with the sender. /// public const string SyncData = "atmos_sync_data"; [Dependency] private readonly DeviceNetworkSystem _deviceNet = default!; public void Register(EntityUid uid, string? address) { var registerPayload = new NetworkPayload { [DeviceNetworkConstants.Command] = RegisterDevice }; _deviceNet.QueuePacket(uid, address, registerPayload); } public void Deregister(EntityUid uid, string? address) { var deregisterPayload = new NetworkPayload { [DeviceNetworkConstants.Command] = DeregisterDevice }; _deviceNet.QueuePacket(uid, address, deregisterPayload); } public void Sync(EntityUid uid, string? address) { var syncPayload = new NetworkPayload { [DeviceNetworkConstants.Command] = SyncData }; _deviceNet.QueuePacket(uid, address, syncPayload); } public void SetDeviceState(EntityUid uid, string address, IAtmosDeviceData data) { var payload = new NetworkPayload() { [DeviceNetworkConstants.Command] = DeviceNetworkConstants.CmdSetState, [DeviceNetworkConstants.CmdSetState] = data }; _deviceNet.QueuePacket(uid, address, payload); } }