PowerGridCheck now disables APCs instead of individual machines (#12004)

This commit is contained in:
Mervill
2022-10-22 15:06:16 -07:00
committed by GitHub
parent b83883e5a9
commit 637d53222a

View File

@@ -4,6 +4,7 @@ using Robust.Shared.Audio;
using Robust.Shared.Player; using Robust.Shared.Player;
using Robust.Shared.Utility; using Robust.Shared.Utility;
using System.Threading; using System.Threading;
using Content.Server.Power.EntitySystems;
using Timer = Robust.Shared.Timing.Timer; using Timer = Robust.Shared.Timing.Timer;
namespace Content.Server.StationEvents.Events namespace Content.Server.StationEvents.Events
@@ -11,6 +12,9 @@ namespace Content.Server.StationEvents.Events
[UsedImplicitly] [UsedImplicitly]
public sealed class PowerGridCheck : StationEventSystem public sealed class PowerGridCheck : StationEventSystem
{ {
[Dependency] private readonly ApcSystem _apcSystem = default!;
[Dependency] private readonly SharedAudioSystem _audioSystem = default!;
public override string Prototype => "PowerGridCheck"; public override string Prototype => "PowerGridCheck";
private CancellationTokenSource? _announceCancelToken; private CancellationTokenSource? _announceCancelToken;
@@ -33,9 +37,9 @@ namespace Content.Server.StationEvents.Events
public override void Started() public override void Started()
{ {
foreach (var component in EntityManager.EntityQuery<ApcPowerReceiverComponent>(true)) foreach (var component in EntityManager.EntityQuery<ApcComponent>(true))
{ {
if (!component.PowerDisabled) if (component.MainBreakerEnabled)
_powered.Add(component.Owner); _powered.Add(component.Owner);
} }
@@ -74,9 +78,10 @@ namespace Content.Server.StationEvents.Events
var selected = _powered.Pop(); var selected = _powered.Pop();
if (EntityManager.Deleted(selected)) continue; if (EntityManager.Deleted(selected)) continue;
if (EntityManager.TryGetComponent<ApcPowerReceiverComponent>(selected, out var powerReceiverComponent)) if (EntityManager.TryGetComponent<ApcComponent>(selected, out var apcComponent))
{ {
powerReceiverComponent.PowerDisabled = true; if (apcComponent.MainBreakerEnabled)
_apcSystem.ApcToggleBreaker(selected, apcComponent);
} }
_unpowered.Add(selected); _unpowered.Add(selected);
} }
@@ -88,9 +93,10 @@ namespace Content.Server.StationEvents.Events
{ {
if (EntityManager.Deleted(entity)) continue; if (EntityManager.Deleted(entity)) continue;
if (EntityManager.TryGetComponent(entity, out ApcPowerReceiverComponent? powerReceiverComponent)) if (EntityManager.TryGetComponent(entity, out ApcComponent? apcComponent))
{ {
powerReceiverComponent.PowerDisabled = false; if(!apcComponent.MainBreakerEnabled)
_apcSystem.ApcToggleBreaker(entity, apcComponent);
} }
} }
@@ -99,7 +105,7 @@ namespace Content.Server.StationEvents.Events
_announceCancelToken = new CancellationTokenSource(); _announceCancelToken = new CancellationTokenSource();
Timer.Spawn(3000, () => Timer.Spawn(3000, () =>
{ {
SoundSystem.Play("/Audio/Announcements/power_on.ogg", Filter.Broadcast(), AudioParams.Default); _audioSystem.PlayGlobal("/Audio/Announcements/power_on.ogg", Filter.Broadcast());
}, _announceCancelToken.Token); }, _announceCancelToken.Token);
_unpowered.Clear(); _unpowered.Clear();