Use entity queries in ambient sound & power receiver systems (#26410)

This commit is contained in:
Leon Friedrich
2024-03-25 11:52:05 +11:00
committed by GitHub
parent 451890b85b
commit 31d70db547
2 changed files with 18 additions and 10 deletions

View File

@@ -20,6 +20,8 @@ namespace Content.Server.Power.EntitySystems
[Dependency] private readonly IAdminManager _adminManager = default!;
[Dependency] private readonly AppearanceSystem _appearance = default!;
[Dependency] private readonly AudioSystem _audio = default!;
private EntityQuery<ApcPowerReceiverComponent> _recQuery;
private EntityQuery<ApcPowerProviderComponent> _provQuery;
public override void Initialize()
{
@@ -35,6 +37,9 @@ namespace Content.Server.Power.EntitySystems
SubscribeLocalEvent<ApcPowerReceiverComponent, GetVerbsEvent<Verb>>(OnGetVerbs);
SubscribeLocalEvent<PowerSwitchComponent, GetVerbsEvent<AlternativeVerb>>(AddSwitchPowerVerb);
_recQuery = GetEntityQuery<ApcPowerReceiverComponent>();
_provQuery = GetEntityQuery<ApcPowerProviderComponent>();
}
private void OnGetVerbs(EntityUid uid, ApcPowerReceiverComponent component, GetVerbsEvent<Verb> args)
@@ -77,7 +82,7 @@ namespace Content.Server.Power.EntitySystems
private void OnProviderConnected(Entity<ApcPowerReceiverComponent> receiver, ref ExtensionCableSystem.ProviderConnectedEvent args)
{
var providerUid = args.Provider.Owner;
if (!EntityManager.TryGetComponent<ApcPowerProviderComponent>(providerUid, out var provider))
if (!_provQuery.TryGetComponent(providerUid, out var provider))
return;
receiver.Comp.Provider = provider;
@@ -94,7 +99,7 @@ namespace Content.Server.Power.EntitySystems
private void OnReceiverConnected(Entity<ApcPowerProviderComponent> provider, ref ExtensionCableSystem.ReceiverConnectedEvent args)
{
if (EntityManager.TryGetComponent(args.Receiver, out ApcPowerReceiverComponent? receiver))
if (_recQuery.TryGetComponent(args.Receiver, out var receiver))
{
provider.Comp.AddReceiver(receiver);
}
@@ -102,7 +107,7 @@ namespace Content.Server.Power.EntitySystems
private void OnReceiverDisconnected(EntityUid uid, ApcPowerProviderComponent provider, ExtensionCableSystem.ReceiverDisconnectedEvent args)
{
if (EntityManager.TryGetComponent(args.Receiver, out ApcPowerReceiverComponent? receiver))
if (_recQuery.TryGetComponent(args.Receiver, out var receiver))
{
provider.RemoveReceiver(receiver);
}
@@ -116,7 +121,7 @@ namespace Content.Server.Power.EntitySystems
if (!HasComp<HandsComponent>(args.User))
return;
if (!TryComp<ApcPowerReceiverComponent>(uid, out var receiver))
if (!_recQuery.TryGetComponent(uid, out var receiver))
return;
if (!receiver.NeedsPower)
@@ -152,7 +157,7 @@ namespace Content.Server.Power.EntitySystems
/// </summary>
public bool IsPowered(EntityUid uid, ApcPowerReceiverComponent? receiver = null)
{
if (!Resolve(uid, ref receiver, false))
if (!_recQuery.Resolve(uid, ref receiver, false))
return true;
return receiver.Powered;
@@ -164,7 +169,7 @@ namespace Content.Server.Power.EntitySystems
/// </summary>
public bool TogglePower(EntityUid uid, bool playSwitchSound = true, ApcPowerReceiverComponent? receiver = null, EntityUid? user = null)
{
if (!Resolve(uid, ref receiver, false))
if (!_recQuery.Resolve(uid, ref receiver, false))
return true;
// it'll save a lot of confusion if 'always powered' means 'always powered'