Use entity queries in ambient sound & power receiver systems (#26410)
This commit is contained in:
@@ -20,6 +20,8 @@ namespace Content.Server.Power.EntitySystems
|
|||||||
[Dependency] private readonly IAdminManager _adminManager = default!;
|
[Dependency] private readonly IAdminManager _adminManager = default!;
|
||||||
[Dependency] private readonly AppearanceSystem _appearance = default!;
|
[Dependency] private readonly AppearanceSystem _appearance = default!;
|
||||||
[Dependency] private readonly AudioSystem _audio = default!;
|
[Dependency] private readonly AudioSystem _audio = default!;
|
||||||
|
private EntityQuery<ApcPowerReceiverComponent> _recQuery;
|
||||||
|
private EntityQuery<ApcPowerProviderComponent> _provQuery;
|
||||||
|
|
||||||
public override void Initialize()
|
public override void Initialize()
|
||||||
{
|
{
|
||||||
@@ -35,6 +37,9 @@ namespace Content.Server.Power.EntitySystems
|
|||||||
|
|
||||||
SubscribeLocalEvent<ApcPowerReceiverComponent, GetVerbsEvent<Verb>>(OnGetVerbs);
|
SubscribeLocalEvent<ApcPowerReceiverComponent, GetVerbsEvent<Verb>>(OnGetVerbs);
|
||||||
SubscribeLocalEvent<PowerSwitchComponent, GetVerbsEvent<AlternativeVerb>>(AddSwitchPowerVerb);
|
SubscribeLocalEvent<PowerSwitchComponent, GetVerbsEvent<AlternativeVerb>>(AddSwitchPowerVerb);
|
||||||
|
|
||||||
|
_recQuery = GetEntityQuery<ApcPowerReceiverComponent>();
|
||||||
|
_provQuery = GetEntityQuery<ApcPowerProviderComponent>();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OnGetVerbs(EntityUid uid, ApcPowerReceiverComponent component, GetVerbsEvent<Verb> args)
|
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)
|
private void OnProviderConnected(Entity<ApcPowerReceiverComponent> receiver, ref ExtensionCableSystem.ProviderConnectedEvent args)
|
||||||
{
|
{
|
||||||
var providerUid = args.Provider.Owner;
|
var providerUid = args.Provider.Owner;
|
||||||
if (!EntityManager.TryGetComponent<ApcPowerProviderComponent>(providerUid, out var provider))
|
if (!_provQuery.TryGetComponent(providerUid, out var provider))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
receiver.Comp.Provider = provider;
|
receiver.Comp.Provider = provider;
|
||||||
@@ -94,7 +99,7 @@ namespace Content.Server.Power.EntitySystems
|
|||||||
|
|
||||||
private void OnReceiverConnected(Entity<ApcPowerProviderComponent> provider, ref ExtensionCableSystem.ReceiverConnectedEvent args)
|
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);
|
provider.Comp.AddReceiver(receiver);
|
||||||
}
|
}
|
||||||
@@ -102,7 +107,7 @@ namespace Content.Server.Power.EntitySystems
|
|||||||
|
|
||||||
private void OnReceiverDisconnected(EntityUid uid, ApcPowerProviderComponent provider, ExtensionCableSystem.ReceiverDisconnectedEvent args)
|
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);
|
provider.RemoveReceiver(receiver);
|
||||||
}
|
}
|
||||||
@@ -116,7 +121,7 @@ namespace Content.Server.Power.EntitySystems
|
|||||||
if (!HasComp<HandsComponent>(args.User))
|
if (!HasComp<HandsComponent>(args.User))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (!TryComp<ApcPowerReceiverComponent>(uid, out var receiver))
|
if (!_recQuery.TryGetComponent(uid, out var receiver))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (!receiver.NeedsPower)
|
if (!receiver.NeedsPower)
|
||||||
@@ -152,7 +157,7 @@ namespace Content.Server.Power.EntitySystems
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public bool IsPowered(EntityUid uid, ApcPowerReceiverComponent? receiver = null)
|
public bool IsPowered(EntityUid uid, ApcPowerReceiverComponent? receiver = null)
|
||||||
{
|
{
|
||||||
if (!Resolve(uid, ref receiver, false))
|
if (!_recQuery.Resolve(uid, ref receiver, false))
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
return receiver.Powered;
|
return receiver.Powered;
|
||||||
@@ -164,7 +169,7 @@ namespace Content.Server.Power.EntitySystems
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public bool TogglePower(EntityUid uid, bool playSwitchSound = true, ApcPowerReceiverComponent? receiver = null, EntityUid? user = null)
|
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;
|
return true;
|
||||||
|
|
||||||
// it'll save a lot of confusion if 'always powered' means 'always powered'
|
// it'll save a lot of confusion if 'always powered' means 'always powered'
|
||||||
|
|||||||
@@ -5,16 +5,19 @@ namespace Content.Shared.Audio;
|
|||||||
|
|
||||||
public abstract class SharedAmbientSoundSystem : EntitySystem
|
public abstract class SharedAmbientSoundSystem : EntitySystem
|
||||||
{
|
{
|
||||||
|
private EntityQuery<AmbientSoundComponent> _query;
|
||||||
|
|
||||||
public override void Initialize()
|
public override void Initialize()
|
||||||
{
|
{
|
||||||
base.Initialize();
|
base.Initialize();
|
||||||
SubscribeLocalEvent<AmbientSoundComponent, ComponentGetState>(GetCompState);
|
SubscribeLocalEvent<AmbientSoundComponent, ComponentGetState>(GetCompState);
|
||||||
SubscribeLocalEvent<AmbientSoundComponent, ComponentHandleState>(HandleCompState);
|
SubscribeLocalEvent<AmbientSoundComponent, ComponentHandleState>(HandleCompState);
|
||||||
|
_query = GetEntityQuery<AmbientSoundComponent>();
|
||||||
}
|
}
|
||||||
|
|
||||||
public virtual void SetAmbience(EntityUid uid, bool value, AmbientSoundComponent? ambience = null)
|
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;
|
return;
|
||||||
|
|
||||||
ambience.Enabled = value;
|
ambience.Enabled = value;
|
||||||
@@ -24,7 +27,7 @@ public abstract class SharedAmbientSoundSystem : EntitySystem
|
|||||||
|
|
||||||
public virtual void SetRange(EntityUid uid, float value, AmbientSoundComponent? ambience = null)
|
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;
|
return;
|
||||||
|
|
||||||
ambience.Range = value;
|
ambience.Range = value;
|
||||||
@@ -39,7 +42,7 @@ public abstract class SharedAmbientSoundSystem : EntitySystem
|
|||||||
|
|
||||||
public virtual void SetVolume(EntityUid uid, float value, AmbientSoundComponent? ambience = null)
|
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;
|
return;
|
||||||
|
|
||||||
ambience.Volume = value;
|
ambience.Volume = value;
|
||||||
@@ -48,7 +51,7 @@ public abstract class SharedAmbientSoundSystem : EntitySystem
|
|||||||
|
|
||||||
public virtual void SetSound(EntityUid uid, SoundSpecifier sound, AmbientSoundComponent? ambience = null)
|
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;
|
return;
|
||||||
|
|
||||||
ambience.Sound = sound;
|
ambience.Sound = sound;
|
||||||
|
|||||||
Reference in New Issue
Block a user