using Content.Server.DeviceNetwork.Components.Devices; using Content.Shared.DeviceNetwork.Events; using Content.Shared.Interaction; using Content.Shared.DeviceNetwork.Components; using Content.Shared.DeviceNetwork.Payloads; namespace Content.Server.DeviceNetwork.Systems.Devices { public sealed partial class ApcNetSwitchSystem : EntitySystem { [Dependency] private DeviceNetworkSystem _deviceNetworkSystem = default!; public override void Initialize() { base.Initialize(); SubscribeLocalEvent(OnInteracted); } private void OnInteracted(Entity ent, ref InteractHandEvent args) { var (uid, component) = ent; if (!TryComp(uid, out DeviceNetworkComponent? networkComponent)) return; component.State = !component.State; if (networkComponent.TransmitFrequency == null) return; var payload = new ApcNetTogglePayload { Enabled = component.State, }; _deviceNetworkSystem.SendPacket(uid, null, ref payload); args.Handled = true; } [SubscribeLocalEvent] private void OnPackedReceived(Entity ent, ref DeviceNetworkPacketEvent args) { var (uid, component) = ent; if (!TryComp(uid, out DeviceNetworkComponent? networkComponent) || args.SenderAddress == networkComponent.Address) return; component.State = args.Data.Enabled; } } }