using Content.Server.DeviceNetwork; using Content.Server.DeviceNetwork.Systems; using Content.Server.Power.Components; using Content.Shared.DeviceNetwork; using Content.Shared.DeviceNetwork.Events; namespace Content.Server.SensorMonitoring; public sealed class BatterySensorSystem : EntitySystem { public const string DeviceNetworkCommandSyncData = "bat_sync_data"; [Dependency] private readonly DeviceNetworkSystem _deviceNetwork = default!; public override void Initialize() { SubscribeLocalEvent(PacketReceived); } private void PacketReceived(EntityUid uid, BatterySensorComponent component, DeviceNetworkPacketEvent args) { if (!args.Data.TryGetValue(DeviceNetworkConstants.Command, out string? cmd)) return; switch (cmd) { case DeviceNetworkCommandSyncData: var battery = Comp(uid); var netBattery = Comp(uid); var payload = new NetworkPayload { [DeviceNetworkConstants.Command] = DeviceNetworkCommandSyncData, [DeviceNetworkCommandSyncData] = new BatterySensorData( battery.CurrentCharge, battery.MaxCharge, netBattery.CurrentReceiving, netBattery.MaxChargeRate, netBattery.CurrentSupply, netBattery.MaxSupply) }; _deviceNetwork.QueuePacket(uid, args.SenderAddress, payload); break; } } }