Пример #1
0
    private void OnProxAnimation(EntityUid uid, TriggerOnProximityComponent component, AnimationCompletedEvent args)
    {
        if (!TryComp <AppearanceComponent>(uid, out var appearance))
        {
            return;
        }

        // So animation doesn't get spammed if no server state comes in.
        appearance.SetData(ProximityTriggerVisualState.State, ProximityTriggerVisuals.Inactive);
        OnChangeData(uid, component, appearance);
    }
Пример #2
0
    private void OnChangeData(EntityUid uid, TriggerOnProximityComponent component, AppearanceComponent appearance)
    {
        if (!TryComp <SpriteComponent>(component.Owner, out var spriteComponent))
        {
            return;
        }

        TryComp <AnimationPlayerComponent>(component.Owner, out var player);
        appearance.TryGetData(ProximityTriggerVisualState.State, out ProximityTriggerVisuals state);

        switch (state)
        {
        case ProximityTriggerVisuals.Inactive:
            // Don't interrupt the flash animation
            if (_player.HasRunningAnimation(uid, player, AnimKey))
            {
                return;
            }
            _player.Stop(uid, player, AnimKey);
            spriteComponent.LayerSetState(ProximityTriggerVisualLayers.Base, "on");
            break;

        case ProximityTriggerVisuals.Active:
            if (_player.HasRunningAnimation(uid, player, AnimKey))
            {
                return;
            }
            _player.Play(uid, player, _flasherAnimation, AnimKey);
            break;

        case ProximityTriggerVisuals.Off:
        default:
            _player.Stop(uid, player, AnimKey);
            spriteComponent.LayerSetState(ProximityTriggerVisualLayers.Base, "off");
            break;
        }
    }
Пример #3
0
 private void OnProxAppChange(EntityUid uid, TriggerOnProximityComponent component, ref AppearanceChangeEvent args)
 {
     OnChangeData(uid, component, args.Component);
 }
Пример #4
0
 private void OnProximityInit(EntityUid uid, TriggerOnProximityComponent component, ComponentInit args)
 {
     EntityManager.EnsureComponent <AnimationPlayerComponent>(uid);
 }