Files
Delta-v/Content.Shared/Beeper/Systems/ProximityBeeperSystem.cs
T
Winkarst 0c4cc5dfd8 Refactor: ProximityDetectionSystem (#35133)
* Refactor: ProximityDetectionSystem

* Update

* Update

* Update

* Yikes

* Update

* Dirty

* Update

* Update

* Lil cleanup

* Update

* Update
2025-05-18 17:14:54 +01:00

37 lines
1.3 KiB
C#

using Content.Shared.Beeper.Components;
using Content.Shared.Item.ItemToggle;
using Content.Shared.Pinpointer;
using Content.Shared.ProximityDetection;
using Content.Shared.ProximityDetection.Components;
using Content.Shared.ProximityDetection.Systems;
namespace Content.Shared.Beeper.Systems;
/// <summary>
/// This handles controlling a beeper from proximity detector events.
/// </summary>
public sealed class ProximityBeeperSystem : EntitySystem
{
[Dependency] private readonly BeeperSystem _beeper = default!;
/// <inheritdoc/>
public override void Initialize()
{
SubscribeLocalEvent<ProximityBeeperComponent, NewProximityTargetEvent>(OnNewProximityTarget);
SubscribeLocalEvent<ProximityBeeperComponent, ProximityTargetUpdatedEvent>(OnProximityTargetUpdate);
}
private void OnProximityTargetUpdate(EntityUid owner, ProximityBeeperComponent proxBeeper, ref ProximityTargetUpdatedEvent args)
{
if (!TryComp<BeeperComponent>(owner, out var beeper))
return;
_beeper.SetIntervalScaling(owner, args.Distance / args.Detector.Comp.Range, beeper);
}
private void OnNewProximityTarget(EntityUid owner, ProximityBeeperComponent proxBeeper, ref NewProximityTargetEvent args)
{
_beeper.SetMute(owner, args.Target != null);
}
}