2021-06-09 22:19:39 +02:00
|
|
|
|
using Content.Server.Power.Components;
|
2021-05-13 02:05:46 +02:00
|
|
|
|
using Robust.Shared.GameObjects;
|
|
|
|
|
|
|
2021-06-09 22:19:39 +02:00
|
|
|
|
namespace Content.Server.Power.EntitySystems
|
2021-05-13 02:05:46 +02:00
|
|
|
|
{
|
|
|
|
|
|
public sealed class PowerReceiverSystem : EntitySystem
|
|
|
|
|
|
{
|
|
|
|
|
|
public override void Initialize()
|
|
|
|
|
|
{
|
|
|
|
|
|
base.Initialize();
|
|
|
|
|
|
|
2021-10-24 01:23:19 +02:00
|
|
|
|
SubscribeLocalEvent<ApcPowerReceiverComponent, ExtensionCableSystem.ProviderConnectedEvent>(OnProviderConnected);
|
|
|
|
|
|
SubscribeLocalEvent<ApcPowerReceiverComponent, ExtensionCableSystem.ProviderDisconnectedEvent>(OnProviderDisconnected);
|
|
|
|
|
|
|
|
|
|
|
|
SubscribeLocalEvent<ApcPowerProviderComponent, ExtensionCableSystem.ReceiverConnectedEvent>(OnReceiverConnected);
|
|
|
|
|
|
SubscribeLocalEvent<ApcPowerProviderComponent, ExtensionCableSystem.ReceiverDisconnectedEvent>(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);
|
|
|
|
|
|
}
|
2021-05-13 02:05:46 +02:00
|
|
|
|
}
|
|
|
|
|
|
|
2021-10-24 01:23:19 +02:00
|
|
|
|
private static void ProviderChanged(ApcPowerReceiverComponent receiver)
|
2021-05-13 02:05:46 +02:00
|
|
|
|
{
|
2021-10-24 01:23:19 +02:00
|
|
|
|
receiver.NetworkLoad.LinkedNetwork = default;
|
|
|
|
|
|
receiver.ApcPowerChanged();
|
2021-05-13 02:05:46 +02:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|