]> git.smokeofanarchy.ru Git - space-station-14.git/commitdiff
Use entity queries in ambient sound & power receiver systems (#26410)
authorLeon Friedrich <60421075+ElectroJr@users.noreply.github.com>
Mon, 25 Mar 2024 00:52:05 +0000 (11:52 +1100)
committerGitHub <noreply@github.com>
Mon, 25 Mar 2024 00:52:05 +0000 (17:52 -0700)
Content.Server/Power/EntitySystems/PowerReceiverSystem.cs
Content.Shared/Audio/SharedAmbientSoundSystem.cs

index 5ed39d51787ebd5d6e906507140f37793be6e48f..048fda23553ad7b010718e223c10162e6419328f 100644 (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'
index 6318ba2557316deeea8f68f961d35acb4fc96a0c..5f17261825c3638ec5a4ff39d2d2772d7361a228 100644 (file)
@@ -5,16 +5,19 @@ namespace Content.Shared.Audio;
 
 public abstract class SharedAmbientSoundSystem : EntitySystem
 {
+    private EntityQuery<AmbientSoundComponent> _query;
+
     public override void Initialize()
     {
         base.Initialize();
         SubscribeLocalEvent<AmbientSoundComponent, ComponentGetState>(GetCompState);
         SubscribeLocalEvent<AmbientSoundComponent, ComponentHandleState>(HandleCompState);
+        _query = GetEntityQuery<AmbientSoundComponent>();
     }
 
     public virtual void SetAmbience(EntityUid uid, bool value, AmbientSoundComponent? ambience = null)
     {
-        if (!Resolve(uid, ref ambience, false) || ambience.Enabled == value)
+        if (!_query.Resolve(uid, ref ambience, false) || ambience.Enabled == value)
             return;
 
         ambience.Enabled = value;
@@ -24,7 +27,7 @@ public abstract class SharedAmbientSoundSystem : EntitySystem
 
     public virtual void SetRange(EntityUid uid, float value, AmbientSoundComponent? ambience = null)
     {
-        if (!Resolve(uid, ref ambience, false) || MathHelper.CloseToPercent(ambience.Range, value))
+        if (!_query.Resolve(uid, ref ambience, false) || MathHelper.CloseToPercent(ambience.Range, value))
             return;
 
         ambience.Range = value;
@@ -39,7 +42,7 @@ public abstract class SharedAmbientSoundSystem : EntitySystem
 
     public virtual void SetVolume(EntityUid uid, float value, AmbientSoundComponent? ambience = null)
     {
-        if (!Resolve(uid, ref ambience, false) || MathHelper.CloseToPercent(ambience.Volume, value))
+        if (!_query.Resolve(uid, ref ambience, false) || MathHelper.CloseToPercent(ambience.Volume, value))
             return;
 
         ambience.Volume = value;
@@ -48,7 +51,7 @@ public abstract class SharedAmbientSoundSystem : EntitySystem
 
     public virtual void SetSound(EntityUid uid, SoundSpecifier sound, AmbientSoundComponent? ambience = null)
     {
-        if (!Resolve(uid, ref ambience, false) || ambience.Sound == sound)
+        if (!_query.Resolve(uid, ref ambience, false) || ambience.Sound == sound)
             return;
 
         ambience.Sound = sound;