Fix ApcPowerReceiverComponent deletion (#5031)

Co-authored-by: Julian Giebel <j.giebel@netrocks.info>
This commit is contained in:
Julian Giebel
2021-10-25 21:55:00 +02:00
committed by GitHub
parent 3bbe8f7652
commit d1a830cd74
3 changed files with 30 additions and 1 deletions

View File

@@ -12,17 +12,37 @@ namespace Content.Server.Power.EntitySystems
SubscribeLocalEvent<ApcPowerReceiverComponent, ExtensionCableSystem.ProviderConnectedEvent>(OnProviderConnected);
SubscribeLocalEvent<ApcPowerReceiverComponent, ExtensionCableSystem.ProviderDisconnectedEvent>(OnProviderDisconnected);
SubscribeLocalEvent<ApcPowerProviderComponent, ComponentShutdown>(OnProviderShutdown);
SubscribeLocalEvent<ApcPowerProviderComponent, ExtensionCableSystem.ReceiverConnectedEvent>(OnReceiverConnected);
SubscribeLocalEvent<ApcPowerProviderComponent, ExtensionCableSystem.ReceiverDisconnectedEvent>(OnReceiverDisconnected);
}
private void OnProviderShutdown(EntityUid uid, ApcPowerProviderComponent component, ComponentShutdown args)
{
foreach (var receiver in component.LinkedReceivers)
{
receiver.NetworkLoad.LinkedNetwork = default;
component.Net?.QueueNetworkReconnect();
}
component.LinkedReceivers.Clear();
}
private void OnProviderConnected(EntityUid uid, ApcPowerReceiverComponent receiver, ExtensionCableSystem.ProviderConnectedEvent args)
{
var providerUid = args.Provider.Owner.Uid;
if (!EntityManager.TryGetComponent<ApcPowerProviderComponent>(providerUid, out var provider))
return;
receiver.Provider = provider;
ProviderChanged(receiver);
}
private void OnProviderDisconnected(EntityUid uid, ApcPowerReceiverComponent receiver, ExtensionCableSystem.ProviderDisconnectedEvent args)
{
receiver.Provider = null;
ProviderChanged(receiver);
}