using Content.Server.Power.Components; using Robust.Shared.GameObjects; namespace Content.Server.Power.EntitySystems { public sealed class PowerReceiverSystem : EntitySystem { public override void Initialize() { base.Initialize(); SubscribeLocalEvent(OnProviderConnected); SubscribeLocalEvent(OnProviderDisconnected); SubscribeLocalEvent(OnReceiverConnected); SubscribeLocalEvent(OnReceiverDisconnected); } private void OnProviderConnected(EntityUid uid, ApcPowerReceiverComponent receiver, ExtensionCableSystem.ProviderConnectedEvent args) { ProviderChanged(receiver); } private void OnProviderDisconnected(EntityUid uid, ApcPowerReceiverComponent receiver, ExtensionCableSystem.ProviderDisconnectedEvent args) { ProviderChanged(receiver); } private void OnReceiverConnected(EntityUid uid, ApcPowerProviderComponent provider, ExtensionCableSystem.ReceiverConnectedEvent args) { if (EntityManager.TryGetComponent(args.Receiver.Owner.Uid, out ApcPowerReceiverComponent receiver)) { provider.AddReceiver(receiver); } } private void OnReceiverDisconnected(EntityUid uid, ApcPowerProviderComponent provider, ExtensionCableSystem.ReceiverDisconnectedEvent args) { if (EntityManager.TryGetComponent(args.Receiver.Owner.Uid, out ApcPowerReceiverComponent receiver)) { provider.RemoveReceiver(receiver); } } private static void ProviderChanged(ApcPowerReceiverComponent receiver) { receiver.NetworkLoad.LinkedNetwork = default; receiver.ApcPowerChanged(); } } }