private void Connect(EntityUid uid, ExtensionCableReceiverComponent receiver) { receiver.Connectable = true; if (receiver.Provider == null) { TryFindAndSetProvider(receiver); } }
private void OnReceiverShutdown(EntityUid uid, ExtensionCableReceiverComponent receiver, ComponentShutdown args) { if (receiver.Provider == null) { return; } receiver.Provider.LinkedReceivers.Remove(receiver); RaiseLocalEvent(uid, new ProviderDisconnectedEvent(receiver.Provider), broadcast: false); RaiseLocalEvent(receiver.Provider.Owner, new ReceiverDisconnectedEvent(receiver), broadcast: false); }
private void OnReceiverAnchorStateChanged(EntityUid uid, ExtensionCableReceiverComponent receiver, ref AnchorStateChangedEvent args) { if (args.Anchored) { Connect(uid, receiver); } else { Disconnect(uid, receiver); } }
private void OnReceiverStarted(EntityUid uid, ExtensionCableReceiverComponent receiver, ComponentStartup args) { if (EntityManager.TryGetComponent(receiver.Owner, out PhysicsComponent? physicsComponent)) { receiver.Connectable = physicsComponent.BodyType == BodyType.Static; } if (receiver.Provider == null) { TryFindAndSetProvider(receiver); } }
private void Disconnect(EntityUid uid, ExtensionCableReceiverComponent receiver) { receiver.Connectable = false; RaiseLocalEvent(uid, new ProviderDisconnectedEvent(receiver.Provider), broadcast: false); if (receiver.Provider != null) { RaiseLocalEvent(receiver.Provider.Owner, new ReceiverDisconnectedEvent(receiver), broadcast: false); receiver.Provider.LinkedReceivers.Remove(receiver); } receiver.Provider = null; }
private void TryFindAndSetProvider(ExtensionCableReceiverComponent receiver) { if (!TryFindAvailableProvider(receiver.Owner, receiver.ReceptionRange, out var provider)) { return; } receiver.Provider = provider; provider.LinkedReceivers.Add(receiver); RaiseLocalEvent(receiver.Owner, new ProviderConnectedEvent(provider), broadcast: false); RaiseLocalEvent(provider.Owner, new ReceiverConnectedEvent(receiver), broadcast: false); }
private void OnReceiverAnchorStateChanged(EntityUid uid, ExtensionCableReceiverComponent receiver, ref AnchorStateChangedEvent args) { if (args.Anchored) { receiver.Connectable = true; if (receiver.Provider == null) { TryFindAndSetProvider(receiver); } } else { receiver.Connectable = false; RaiseLocalEvent(uid, new ProviderDisconnectedEvent(receiver.Provider), broadcast: false); if (receiver.Provider != null) { RaiseLocalEvent(receiver.Provider.Owner, new ReceiverDisconnectedEvent(receiver), broadcast: false); receiver.Provider.LinkedReceivers.Remove(receiver); } receiver.Provider = null; } }
public ReceiverDisconnectedEvent(ExtensionCableReceiverComponent receiver) { Receiver = receiver; }
private void OnReceiverReAnchor(EntityUid uid, ExtensionCableReceiverComponent receiver, ref ReAnchorEvent args) { Disconnect(uid, receiver); Connect(uid, receiver); }
private void OnReceiverShutdown(EntityUid uid, ExtensionCableReceiverComponent receiver, ComponentShutdown args) { Disconnect(uid, receiver); }