Refactor TriggerSystem.Proximity (#17554)
This commit is contained in:
@@ -1,4 +1,3 @@
|
||||
using Content.Client.Trigger;
|
||||
using Content.Shared.Trigger;
|
||||
using Robust.Client.Animations;
|
||||
using Robust.Client.GameObjects;
|
||||
@@ -20,7 +19,7 @@ public sealed partial class TriggerSystem
|
||||
|
||||
private static readonly Animation _flasherAnimation = new Animation
|
||||
{
|
||||
Length = TimeSpan.FromSeconds(0.3f),
|
||||
Length = TimeSpan.FromSeconds(0.6f),
|
||||
AnimationTracks = {
|
||||
new AnimationTrackSpriteFlick
|
||||
{
|
||||
@@ -51,7 +50,8 @@ public sealed partial class TriggerSystem
|
||||
|
||||
private void OnProxAnimation(EntityUid uid, TriggerOnProximityComponent component, AnimationCompletedEvent args)
|
||||
{
|
||||
if (!TryComp<AppearanceComponent>(uid, out var appearance)) return;
|
||||
if (!TryComp<AppearanceComponent>(uid, out var appearance))
|
||||
return;
|
||||
|
||||
// So animation doesn't get spammed if no server state comes in.
|
||||
_appearance.SetData(uid, ProximityTriggerVisualState.State, ProximityTriggerVisuals.Inactive, appearance);
|
||||
@@ -73,8 +73,15 @@ public sealed partial class TriggerSystem
|
||||
if (!Resolve(uid, ref spriteComponent))
|
||||
return;
|
||||
|
||||
TryComp<AnimationPlayerComponent>(component.Owner, out var player);
|
||||
_appearance.TryGetData<ProximityTriggerVisuals>(appearance.Owner, ProximityTriggerVisualState.State, out var state, appearance);
|
||||
if (!TryComp<AnimationPlayerComponent>(uid, out var player))
|
||||
return;
|
||||
|
||||
if (!_appearance.TryGetData<ProximityTriggerVisuals>(uid, ProximityTriggerVisualState.State, out var state, appearance))
|
||||
return;
|
||||
|
||||
if (!spriteComponent.LayerMapTryGet(ProximityTriggerVisualLayers.Base, out var layer))
|
||||
// Don't do anything if the sprite doesn't have the layer.
|
||||
return;
|
||||
|
||||
switch (state)
|
||||
{
|
||||
@@ -82,7 +89,7 @@ public sealed partial class TriggerSystem
|
||||
// Don't interrupt the flash animation
|
||||
if (_player.HasRunningAnimation(uid, player, AnimKey)) return;
|
||||
_player.Stop(uid, player, AnimKey);
|
||||
spriteComponent.LayerSetState(ProximityTriggerVisualLayers.Base, "on");
|
||||
spriteComponent.LayerSetState(layer, "on");
|
||||
break;
|
||||
case ProximityTriggerVisuals.Active:
|
||||
if (_player.HasRunningAnimation(uid, player, AnimKey)) return;
|
||||
@@ -91,7 +98,7 @@ public sealed partial class TriggerSystem
|
||||
case ProximityTriggerVisuals.Off:
|
||||
default:
|
||||
_player.Stop(uid, player, AnimKey);
|
||||
spriteComponent.LayerSetState(ProximityTriggerVisualLayers.Base, "off");
|
||||
spriteComponent.LayerSetState(layer, "off");
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user