using Content.Server.DeviceNetwork.Components; using JetBrains.Annotations; using Robust.Shared.GameObjects; namespace Content.Server.DeviceNetwork.Systems { [UsedImplicitly] public sealed class WirelessNetworkSystem : EntitySystem { public override void Initialize() { base.Initialize(); SubscribeLocalEvent(OnBeforePacketSent); } /// /// Gets the position of both the sending and receiving entity and checks if the receiver is in range of the sender. /// private void OnBeforePacketSent(EntityUid uid, WirelessNetworkComponent component, BeforePacketSentEvent args) { var ownPosition = EntityManager.GetComponent(component.Owner).WorldPosition; var position = EntityManager.GetComponent(args.Sender).WorldPosition; var distance = (ownPosition - position).Length; if (EntityManager.TryGetComponent(args.Sender, out var sendingComponent) && distance > sendingComponent.Range) { args.Cancel(); } } } }