Add static "IsPowered" method (#8434)

* Add static "IsPowered" method

* Use IsPowered in more places

Co-authored-by: wrexbe <wrexbe@protonmail.com>
This commit is contained in:
metalgearsloth
2022-05-27 10:36:12 +10:00
committed by GitHub
parent 33c03fa0a0
commit 2d873a2cf2
20 changed files with 104 additions and 141 deletions

View File

@@ -5,6 +5,7 @@ using Content.Server.DeviceNetwork.Components;
using Content.Server.DeviceNetwork.Systems;
using Content.Server.Popups;
using Content.Server.Power.Components;
using Content.Server.Power.EntitySystems;
using Content.Server.Wires;
using Content.Shared.Access.Components;
using Content.Shared.Access.Systems;
@@ -201,7 +202,7 @@ namespace Content.Server.Atmos.Monitor.Systems
return;
}
if (EntityManager.TryGetComponent(uid, out ApcPowerReceiverComponent recv) && !recv.Powered)
if (!this.IsPowered(uid, EntityManager))
return;
_uiSystem.GetUiOrNull(component.Owner, SharedAirAlarmInterfaceKey.Key)?.Open(actor.PlayerSession);

View File

@@ -6,6 +6,7 @@ using Content.Server.DeviceNetwork;
using Content.Server.DeviceNetwork.Components;
using Content.Server.DeviceNetwork.Systems;
using Content.Server.Power.Components;
using Content.Server.Power.EntitySystems;
using Content.Shared.Atmos;
using Content.Shared.Atmos.Monitor;
using Robust.Shared.Audio;
@@ -229,8 +230,7 @@ namespace Content.Server.Atmos.Monitor.Systems
private void OnFireEvent(EntityUid uid, AtmosMonitorComponent component, ref TileFireEvent args)
{
if (!TryComp<ApcPowerReceiverComponent>(uid, out var powerReceiverComponent)
|| !powerReceiverComponent.Powered)
if (!this.IsPowered(uid, EntityManager))
return;
// if we're monitoring for atmos fire, then we make it similar to a smoke detector
@@ -252,8 +252,7 @@ namespace Content.Server.Atmos.Monitor.Systems
private void OnAtmosUpdate(EntityUid uid, AtmosMonitorComponent component, AtmosDeviceUpdateEvent args)
{
if (!TryComp<ApcPowerReceiverComponent>(uid, out var powerReceiverComponent)
|| !powerReceiverComponent.Powered)
if (!this.IsPowered(uid, EntityManager))
return;
// can't hurt

View File

@@ -1,6 +1,7 @@
using Content.Server.AlertLevel;
using Content.Server.Atmos.Monitor.Components;
using Content.Server.Power.Components;
using Content.Server.Power.EntitySystems;
using Content.Shared.AlertLevel;
using Content.Shared.Atmos.Monitor;
using Content.Shared.Interaction;
@@ -27,8 +28,7 @@ namespace Content.Server.Atmos.Monitor.Systems
if (EntityManager.TryGetComponent(args.User, out ActorComponent? actor)
&& EntityManager.TryGetComponent(uid, out AtmosMonitorComponent? monitor)
&& EntityManager.TryGetComponent(uid, out ApcPowerReceiverComponent? power)
&& power.Powered)
&& this.IsPowered(uid, EntityManager))
{
if (monitor.HighestAlarmInNetwork == AtmosMonitorAlarmType.Normal)
{

View File

@@ -6,6 +6,7 @@ using Content.Shared.Buckle.Components;
using Content.Shared.Body.Components;
using Content.Shared.Bed;
using Content.Server.Power.Components;
using Content.Server.Power.EntitySystems;
using Content.Shared.Emag.Systems;
using Content.Shared.MobState.Components;
@@ -78,7 +79,7 @@ namespace Content.Server.Bed
if (!TryComp<SharedBodyComponent>(args.BuckledEntity, out var body))
return;
if (TryComp<ApcPowerReceiverComponent>(uid, out var power) && !power.Powered)
if (!this.IsPowered(uid, EntityManager))
return;
var metabolicEvent = new ApplyMetabolicMultiplierEvent()

View File

@@ -1,6 +1,7 @@
using Content.Server.Botany.Components;
using Content.Server.Popups;
using Content.Server.Power.Components;
using Content.Server.Power.EntitySystems;
using Content.Shared.Interaction;
using Robust.Shared.Player;
using Robust.Shared.Random;
@@ -22,11 +23,10 @@ public sealed class SeedExtractorSystem : EntitySystem
private void OnInteractUsing(EntityUid uid, SeedExtractorComponent component, InteractUsingEvent args)
{
if (!TryComp<ApcPowerReceiverComponent>(uid, out var powerReceiverComponent) || !powerReceiverComponent.Powered)
if (!this.IsPowered(uid, EntityManager))
return;
if (TryComp(args.Used, out ProduceComponent? produce))
{
if (!TryComp(args.Used, out ProduceComponent? produce)) return;
if (!_botanySystem.TryGetSeed(produce, out var seed))
return;
@@ -47,4 +47,3 @@ public sealed class SeedExtractorSystem : EntitySystem
}
}
}
}

View File

@@ -1,6 +1,7 @@
using Content.Server.MachineLinking.Events;
using Content.Server.MachineLinking.System;
using Content.Server.Power.Components;
using Content.Server.Power.EntitySystems;
using Content.Server.Recycling;
using Content.Server.Recycling.Components;
using Content.Shared.Conveyor;
@@ -34,17 +35,9 @@ namespace Content.Server.Conveyor
private void UpdateAppearance(ConveyorComponent component)
{
if (EntityManager.TryGetComponent<AppearanceComponent?>(component.Owner, out var appearance))
{
if (EntityManager.TryGetComponent<ApcPowerReceiverComponent?>(component.Owner, out var receiver) && receiver.Powered)
{
appearance.SetData(ConveyorVisuals.State, component.State);
}
else
{
appearance.SetData(ConveyorVisuals.State, ConveyorState.Off);
}
}
if (!EntityManager.TryGetComponent<AppearanceComponent?>(component.Owner, out var appearance)) return;
var isPowered = this.IsPowered(component.Owner, EntityManager);
appearance.SetData(ConveyorVisuals.State, isPowered ? component.State : ConveyorState.Off);
}
private void OnSignalReceived(EntityUid uid, ConveyorComponent component, SignalReceivedEvent args)
@@ -74,23 +67,9 @@ namespace Content.Server.Conveyor
public bool CanRun(ConveyorComponent component)
{
if (component.State == ConveyorState.Off)
{
return false;
}
if (EntityManager.TryGetComponent(component.Owner, out ApcPowerReceiverComponent? receiver) &&
!receiver.Powered)
{
return false;
}
if (EntityManager.HasComponent<SharedItemComponent>(component.Owner))
{
return false;
}
return true;
return component.State != ConveyorState.Off &&
!EntityManager.HasComponent<SharedItemComponent>(component.Owner) &&
this.IsPowered(component.Owner, EntityManager);
}
}
}

View File

@@ -10,6 +10,7 @@ using Content.Server.Hands.Components;
using Content.Server.Nutrition.EntitySystems;
using Content.Server.Paper;
using Content.Server.Power.Components;
using Content.Server.Power.EntitySystems;
using Robust.Shared.Random;
using Robust.Shared.Player;
using Robust.Shared.Audio;
@@ -139,7 +140,7 @@ namespace Content.Server.Disease
if (args.Handled || !args.CanReach)
return;
if (HasComp<DiseaseMachineRunningComponent>(uid) || TryComp<ApcPowerReceiverComponent>(uid, out var power) && !power.Powered)
if (HasComp<DiseaseMachineRunningComponent>(uid) || !this.IsPowered(uid, EntityManager))
return;
if (!HasComp<HandsComponent>(args.User) || HasComp<ToolComponent>(args.Used)) // Don't want to accidentally breach wrenching or whatever
@@ -171,7 +172,7 @@ namespace Content.Server.Disease
if (args.Handled || !args.CanReach)
return;
if (HasComp<DiseaseMachineRunningComponent>(uid) || TryComp<ApcPowerReceiverComponent>(uid, out var power) && !power.Powered)
if (HasComp<DiseaseMachineRunningComponent>(uid) || !this.IsPowered(uid, EntityManager))
return;
if (!HasComp<HandsComponent>(args.User) || HasComp<ToolComponent>(args.Used)) //This check ensures tools don't break without yaml ordering jank
@@ -323,8 +324,8 @@ namespace Content.Server.Disease
/// </summary>
private void OnDiagnoserFinished(EntityUid uid, DiseaseDiagnoserComponent component, DiseaseMachineFinishedEvent args)
{
var power = Comp<ApcPowerReceiverComponent>(uid);
UpdateAppearance(uid, power.Powered, false);
var isPowered = this.IsPowered(uid, EntityManager);
UpdateAppearance(uid, isPowered, false);
// spawn a piece of paper.
var printed = EntityManager.SpawnEntity(args.Machine.MachineOutput, Transform(uid).Coordinates);
@@ -353,8 +354,7 @@ namespace Content.Server.Disease
/// <summary>
private void OnVaccinatorFinished(EntityUid uid, DiseaseVaccineCreatorComponent component, DiseaseMachineFinishedEvent args)
{
var power = Comp<ApcPowerReceiverComponent>(uid);
UpdateAppearance(uid, power.Powered, false);
UpdateAppearance(uid, this.IsPowered(uid, EntityManager), false);
// spawn a vaccine
var vaxx = EntityManager.SpawnEntity(args.Machine.MachineOutput, Transform(uid).Coordinates);

View File

@@ -183,9 +183,7 @@ namespace Content.Server.Electrocution
// Does it use APC power for its electrification check? Check if it's powered, and then
// attempt an electrocution if all the checks succeed.
if (electrified.UsesApcPower &&
(!TryComp(uid, out ApcPowerReceiverComponent? power)
|| !power.Powered))
if (electrified.UsesApcPower && !this.IsPowered(uid, EntityManager))
{
return false;
}

View File

@@ -3,6 +3,7 @@ using Content.Server.Chemistry.EntitySystems;
using Content.Server.Kitchen.Components;
using Content.Server.Kitchen.Events;
using Content.Server.Power.Components;
using Content.Server.Power.EntitySystems;
using Content.Server.Stack;
using Content.Server.UserInterface;
using Content.Shared.Containers.ItemSlots;
@@ -134,16 +135,14 @@ namespace Content.Server.Kitchen.EntitySystems
switch (message.Message)
{
case SharedReagentGrinderComponent.ReagentGrinderGrindStartMessage msg:
if (!EntityManager.TryGetComponent(component.Owner, out ApcPowerReceiverComponent? receiver) ||
!receiver.Powered) break;
if (!this.IsPowered(component.Owner, EntityManager)) break;
ClickSound(component);
DoWork(component, attached,
SharedReagentGrinderComponent.GrinderProgram.Grind);
break;
case SharedReagentGrinderComponent.ReagentGrinderJuiceStartMessage msg:
if (!EntityManager.TryGetComponent(component.Owner, out ApcPowerReceiverComponent? receiver2) ||
!receiver2.Powered) break;
if (!this.IsPowered(component.Owner, EntityManager)) break;
ClickSound(component);
DoWork(component, attached,
SharedReagentGrinderComponent.GrinderProgram.Juice);
@@ -206,7 +205,7 @@ namespace Content.Server.Kitchen.EntitySystems
(
comp.Busy,
comp.BeakerSlot.HasItem,
EntityManager.TryGetComponent(comp.Owner, out ApcPowerReceiverComponent? receiver) && receiver.Powered,
this.IsPowered(comp.Owner, EntityManager),
canJuice,
canGrind,
comp.Chamber.ContainedEntities.Select(item => item).ToArray(),
@@ -224,7 +223,7 @@ namespace Content.Server.Kitchen.EntitySystems
SharedReagentGrinderComponent.GrinderProgram program)
{
//Have power, are we busy, chamber has anything to grind, a beaker for the grounds to go?
if (!EntityManager.TryGetComponent(component.Owner, out ApcPowerReceiverComponent? receiver) || !receiver.Powered ||
if (!this.IsPowered(component.Owner, EntityManager) ||
component.Busy || component.Chamber.ContainedEntities.Count <= 0 ||
component.BeakerSlot.Item is not EntityUid beakerEntity ||
component.BeakerSolution == null)

View File

@@ -7,6 +7,7 @@ using Content.Shared.Interaction;
using Content.Server.Materials;
using Content.Server.Popups;
using Content.Server.Power.Components;
using Content.Server.Power.EntitySystems;
using Content.Server.Stack;
using Content.Server.UserInterface;
using Robust.Server.GameObjects;
@@ -171,7 +172,7 @@ namespace Content.Server.Lathe
return;
}
if (TryComp<ApcPowerReceiverComponent>(component.Owner, out var receiver) && !receiver.Powered)
if (!this.IsPowered(component.Owner, EntityManager))
{
FinishProducing(recipe, component, false);
return;
@@ -247,7 +248,7 @@ namespace Content.Server.Lathe
/// </summary>
private void UserInterfaceOnOnReceiveMessage(EntityUid uid, LatheComponent component, ServerBoundUserInterfaceMessage message)
{
if (TryComp<ApcPowerReceiverComponent>(uid, out var receiver) && !receiver.Powered)
if (!this.IsPowered(uid, EntityManager))
return;
switch (message.Message)

View File

@@ -4,6 +4,7 @@ using Content.Server.Medical.Components;
using Content.Server.Mind.Components;
using Content.Server.Popups;
using Content.Server.Power.Components;
using Content.Server.Power.EntitySystems;
using Content.Server.Preferences.Managers;
using Content.Shared.ActionBlocker;
using Content.Shared.CharacterAppearance.Components;
@@ -57,7 +58,7 @@ namespace Content.Server.Medical
private void OnActivated(EntityUid uid, MedicalScannerComponent scannerComponent, ActivateInWorldEvent args)
{
if (!IsPowered(scannerComponent))
if (!this.IsPowered(uid, EntityManager))
return;
UpdateUserInterface(uid, scannerComponent);
@@ -164,10 +165,8 @@ namespace Content.Server.Medical
private void UpdateUserInterface(EntityUid uid, MedicalScannerComponent scannerComponent)
{
if (!IsPowered(scannerComponent))
{
if (!this.IsPowered(uid, EntityManager))
return;
}
var newState = GetUserInterfaceState(uid, scannerComponent);
scannerComponent.UserInterface?.SetState(newState);
@@ -175,7 +174,7 @@ namespace Content.Server.Medical
private MedicalScannerStatus GetStatus(MedicalScannerComponent scannerComponent)
{
if (IsPowered(scannerComponent))
if (this.IsPowered(scannerComponent.Owner, EntityManager))
{
var body = scannerComponent.BodyContainer.ContainedEntity;
if (body == null)
@@ -191,15 +190,6 @@ namespace Content.Server.Medical
return MedicalScannerStatus.Off;
}
public bool IsPowered(MedicalScannerComponent scannerComponent)
{
if (TryComp<ApcPowerReceiverComponent>(scannerComponent.Owner, out var receiver))
{
return receiver.Powered;
}
return false;
}
public bool IsOccupied(MedicalScannerComponent scannerComponent)
{
return scannerComponent.BodyContainer.ContainedEntity != null;

View File

@@ -21,14 +21,12 @@ namespace Content.Server.Power.EntitySystems
private void OnActivate(EntityUid uid, ActivatableUIRequiresPowerComponent component, ActivatableUIOpenAttemptEvent args)
{
if (args.Cancelled) return;
if (EntityManager.TryGetComponent<ApcPowerReceiverComponent>(uid, out var power) && !power.Powered)
{
if (this.IsPowered(uid, EntityManager)) return;
if (TryComp<WiresComponent>(uid, out var wires) && wires.IsPanelOpen)
return;
args.User.PopupMessageCursor(Loc.GetString("base-computer-ui-component-not-powered", ("machine", uid)));
args.Cancel();
}
}
private void OnPowerChanged(EntityUid uid, ActivatableUIRequiresPowerComponent component, PowerChangedEvent args)
{

View File

@@ -0,0 +1,13 @@
using Content.Server.Power.Components;
namespace Content.Server.Power.EntitySystems;
public static class StaticPowerSystem
{
// Using this makes the call shorter.
// ReSharper disable once UnusedParameter.Global
public static bool IsPowered(this EntitySystem system, EntityUid uid, IEntityManager entManager, ApcPowerReceiverComponent? receiver = null)
{
return entManager.TryGetComponent<ApcPowerReceiverComponent>(uid, out receiver) && receiver.Powered;
}
}

View File

@@ -3,6 +3,7 @@ using Content.Server.GameTicking;
using Content.Server.Players;
using Content.Server.Popups;
using Content.Server.Power.Components;
using Content.Server.Power.EntitySystems;
using Content.Server.Recycling.Components;
using Content.Shared.Audio;
using Content.Shared.Body.Components;
@@ -120,9 +121,8 @@ namespace Content.Server.Recycling
private bool CanGib(RecyclerComponent component, EntityUid entity)
{
// TODO: Power needs a helper for this jeez
return HasComp<SharedBodyComponent>(entity) && !component.Safe &&
TryComp<ApcPowerReceiverComponent>(component.Owner, out var receiver) && receiver.Powered;
this.IsPowered(component.Owner, EntityManager);
}
public void Bloodstain(RecyclerComponent component)

View File

@@ -15,7 +15,6 @@ namespace Content.Server.Remotes
public sealed class DoorRemoteSystem : EntitySystem
{
[Dependency] private readonly SharedPopupSystem _popupSystem = default!;
[Dependency] private readonly SharedDoorSystem _sharedDoorSystem = default!;
[Dependency] private readonly DoorSystem _doorSystem = default!;
[Dependency] private readonly SharedInteractionSystem _interactionSystem = default!;
[Dependency] private readonly SharedAirlockSystem _sharedAirlockSystem = default!;
@@ -49,11 +48,13 @@ namespace Content.Server.Remotes
private void OnAfterInteract(EntityUid uid, DoorRemoteComponent component, AfterInteractEvent args)
{
if (args.Handled
if (!args.CanReach ||
args.Handled
|| args.Target == null
|| !TryComp<DoorComponent>(args.Target, out var doorComponent) // If it isn't a door we don't use it
|| !HasComp<AccessReaderComponent>(args.Target) // Remotes do not work on doors without access requirements
|| !TryComp<AirlockComponent>(args.Target, out var airlockComponent) // Remotes only work on airlocks
// TODO: Why the fuck is this -1f
|| !_interactionSystem.InRangeUnobstructed(args.User, doorComponent.Owner, -1f, CollisionGroup.Opaque))
{
return;
@@ -63,7 +64,7 @@ namespace Content.Server.Remotes
if (component.Mode == DoorRemoteComponent.OperatingMode.OpenClose)
{
_sharedDoorSystem.TryToggleDoor(doorComponent.Owner, user: args.Used);
_doorSystem.TryToggleDoor(doorComponent.Owner, user: args.Used);
}
if (component.Mode == DoorRemoteComponent.OperatingMode.ToggleBolts
@@ -77,11 +78,11 @@ namespace Content.Server.Remotes
{
if (doorComponent.State != DoorState.Open)
{
_sharedDoorSystem.Deny(airlockComponent.Owner, user: args.User);
_doorSystem.Deny(airlockComponent.Owner, user: args.User);
}
else if (doorComponent.DenySound != null)
{
SoundSystem.Play(Filter.Pvs(args.Target.Value), doorComponent.DenySound.GetSound(), args.Target.Value);
SoundSystem.Play(Filter.Pvs(args.Target.Value, entityManager: EntityManager), doorComponent.DenySound.GetSound(), args.Target.Value);
}
}
}

View File

@@ -1,5 +1,6 @@
using Content.Server.Popups;
using Content.Server.Power.Components;
using Content.Server.Power.EntitySystems;
using Content.Server.Shuttles.Components;
using Content.Shared.ActionBlocker;
using Content.Shared.Alert;
@@ -51,7 +52,7 @@ namespace Content.Server.Shuttles.EntitySystems
{
Text = Loc.GetString("shuttle-mode-toggle"),
Act = () => ToggleShuttleMode(args.User, component, shuttle),
Disabled = !xform.Anchored || EntityManager.TryGetComponent(uid, out ApcPowerReceiverComponent? receiver) && !receiver.Powered,
Disabled = !xform.Anchored || !this.IsPowered(uid, EntityManager),
};
args.Verbs.Add(verb);
@@ -60,7 +61,7 @@ namespace Content.Server.Shuttles.EntitySystems
private void ToggleShuttleMode(EntityUid user, ShuttleConsoleComponent consoleComponent, ShuttleComponent shuttleComponent, TransformComponent? consoleXform = null)
{
// Re-validate
if (EntityManager.TryGetComponent(consoleComponent.Owner, out ApcPowerReceiverComponent? receiver) && !receiver.Powered) return;
if (!this.IsPowered(consoleComponent.Owner, EntityManager)) return;
if (!Resolve(consoleComponent.Owner, ref consoleXform)) return;

View File

@@ -2,6 +2,7 @@ using System.Linq;
using System.Runtime.CompilerServices;
using Content.Server.Audio;
using Content.Server.Power.Components;
using Content.Server.Power.EntitySystems;
using Content.Server.Shuttles.Components;
using Content.Shared.Damage;
using Content.Shared.Examine;
@@ -367,8 +368,7 @@ namespace Content.Server.Shuttles.EntitySystems
var xform = Transform(uid);
if (!xform.Anchored ||
EntityManager.TryGetComponent(uid, out ApcPowerReceiverComponent? receiver) && !receiver.Powered)
if (!xform.Anchored ||!this.IsPowered(uid, EntityManager))
{
return false;
}

View File

@@ -1,4 +1,3 @@
using Content.Server.VendingMachines.Systems;
using Content.Server.Wires;
using Content.Shared.VendingMachines;
using Content.Shared.Wires;

View File

@@ -1,20 +1,21 @@
using Robust.Shared.Audio;
using Robust.Shared.Player;
using System.Linq;
using Content.Server.Popups;
using Content.Server.Power.Components;
using Content.Server.Power.EntitySystems;
using Content.Shared.Access.Components;
using Content.Shared.Access.Systems;
using Content.Shared.VendingMachines;
using Robust.Server.GameObjects;
using Robust.Shared.Prototypes;
using Robust.Shared.Random;
using Content.Shared.Destructible;
using Content.Shared.Emag.Systems;
using static Content.Shared.VendingMachines.SharedVendingMachineComponent;
using Content.Shared.Throwing;
using Content.Shared.VendingMachines;
using Robust.Server.GameObjects;
using Robust.Shared.Audio;
using Robust.Shared.Player;
using Robust.Shared.Prototypes;
using Robust.Shared.Random;
using static Content.Shared.VendingMachines.SharedVendingMachineComponent;
namespace Content.Server.VendingMachines.Systems
namespace Content.Server.VendingMachines
{
public sealed class VendingMachineSystem : EntitySystem
{
@@ -49,7 +50,7 @@ namespace Content.Server.VendingMachines.Systems
private void OnInventoryRequestMessage(EntityUid uid, VendingMachineComponent component, InventorySyncRequestMessage args)
{
if (!IsPowered(uid, component))
if (!this.IsPowered(uid, EntityManager))
return;
var inventory = new List<VendingMachineInventoryEntry>(component.Inventory);
@@ -62,7 +63,7 @@ namespace Content.Server.VendingMachines.Systems
private void OnInventoryEjectMessage(EntityUid uid, VendingMachineComponent component, VendingMachineEjectMessage args)
{
if (!IsPowered(uid, component))
if (!this.IsPowered(uid, EntityManager))
return;
if (args.Session.AttachedEntity is not { Valid: true } entity || Deleted(entity))
@@ -91,18 +92,6 @@ namespace Content.Server.VendingMachines.Systems
args.Handled = true;
}
public bool IsPowered(EntityUid uid, VendingMachineComponent? vendComponent = null)
{
if (!Resolve(uid, ref vendComponent))
return false;
if (!TryComp<ApcPowerReceiverComponent>(vendComponent.Owner, out var receiver))
{
return false;
}
return receiver.Powered;
}
public void InitializeFromPrototype(EntityUid uid, VendingMachineComponent? vendComponent = null)
{
if (!Resolve(uid, ref vendComponent))
@@ -201,7 +190,7 @@ namespace Content.Server.VendingMachines.Systems
if (!Resolve(uid, ref vendComponent))
return;
if (vendComponent.Ejecting || vendComponent.Broken || !IsPowered(uid, vendComponent))
if (vendComponent.Ejecting || vendComponent.Broken || !this.IsPowered(uid, EntityManager))
{
return;
}
@@ -276,7 +265,7 @@ namespace Content.Server.VendingMachines.Systems
{
finalState = VendingMachineVisualState.Eject;
}
else if (!IsPowered(uid, vendComponent))
else if (!this.IsPowered(uid, EntityManager))
{
finalState = VendingMachineVisualState.Off;
}

View File

@@ -1,4 +1,5 @@
using Content.Server.Power.Components;
using Content.Server.Power.EntitySystems;
using Content.Shared.Wires;
namespace Content.Server.Wires;
@@ -17,7 +18,7 @@ public abstract class BaseWireAction : IWireAction
{
EntityManager = IoCManager.Resolve<IEntityManager>();
WiresSystem = EntitySystem.Get<WiresSystem>();
WiresSystem = EntityManager.EntitySysManager.GetEntitySystem<WiresSystem>();
}
public virtual bool AddWire(Wire wire, int count) => count == 1;
@@ -38,14 +39,8 @@ public abstract class BaseWireAction : IWireAction
/// Utility function to check if this given entity is powered.
/// </summary>
/// <returns>true if powered, false otherwise</returns>
public bool IsPowered(EntityUid uid)
protected bool IsPowered(EntityUid uid)
{
if (!EntityManager.TryGetComponent<ApcPowerReceiverComponent>(uid, out var power)
|| power.PowerDisabled) // there's some kind of race condition here?
{
return false;
}
return power.Powered;
return WiresSystem.IsPowered(uid, EntityManager);
}
}