예제 #1
0
    private void OnToggleAction(EntityUid uid, BlockingComponent component, ToggleActionEvent args)
    {
        if (args.Handled)
        {
            return;
        }

        foreach (var shield in _handsSystem.EnumerateHeld(args.Performer))
        {
            if (shield == uid)
            {
                continue;
            }
            if (TryComp <BlockingComponent>(shield, out var otherBlockComp) && otherBlockComp.IsBlocking)
            {
                CantBlockError(args.Performer);
                return;
            }
        }

        if (component.IsBlocking)
        {
            StopBlocking(uid, component, args.Performer);
        }
        else
        {
            StartBlocking(uid, component, args.Performer);
        }

        args.Handled = true;
    }
    private void OnToggleAction(EntityUid uid, MagbootsComponent component, ToggleActionEvent args)
    {
        if (args.Handled)
        {
            return;
        }

        args.Handled = true;
        component.On = !component.On;

        if (_sharedContainer.TryGetContainingContainer(uid, out var container) &&
            _inventory.TryGetSlotEntity(container.Owner, "shoes", out var entityUid) && entityUid == component.Owner)
        {
            UpdateMagbootEffects(container.Owner, uid, true, component);
        }

        if (TryComp <ItemComponent>(uid, out var item))
        {
            _item.SetHeldPrefix(uid, component.On ? "on" : null, item);
            _clothing.SetEquippedPrefix(uid, component.On ? "on" : null);
        }

        if (TryComp(uid, out AppearanceComponent? appearance))
        {
            appearance.SetData(ToggleVisuals.Toggled, component.On);
        }

        OnChanged(component);
        Dirty(component);
    }
        private void OnActionToggle(EntityUid uid, GasTankComponent component, ToggleActionEvent args)
        {
            if (args.Handled)
            {
                return;
            }

            ToggleInternals(component);
            args.Handled = true;
        }
예제 #4
0
    private void OnToggleAction(EntityUid uid, SharedMagbootsComponent component, ToggleActionEvent args)
    {
        if (args.Handled)
        {
            return;
        }

        component.On = !component.On;

        args.Handled = true;
    }
예제 #5
0
        /// <summary>
        /// For vehicles with horn sirens (like the secway) this uses different logic that makes the siren
        /// loop instead of using a normal honk.
        /// </summary>
        private void OnSirenToggle(EntityUid uid, VehicleComponent vehicle, ToggleActionEvent args)
        {
            if (args.Handled || !vehicle.HornIsLooping)
            {
                return;
            }

            if (!vehicle.LoopingHornIsPlaying)
            {
                vehicle.SirenPlayingStream?.Stop();
                vehicle.LoopingHornIsPlaying = true;
                if (vehicle.HornSound != null)
                {
                    vehicle.SirenPlayingStream = SoundSystem.Play(vehicle.HornSound.GetSound(), Filter.Pvs(uid), uid, AudioParams.Default.WithLoop(true).WithVolume(1.8f));
                }
                return;
            }
            vehicle.SirenPlayingStream?.Stop();
            vehicle.LoopingHornIsPlaying = false;
        }
        private void OnToggleAction(EntityUid uid, UnpoweredFlashlightComponent component, ToggleActionEvent args)
        {
            if (args.Handled)
            {
                return;
            }

            ToggleLight(component);

            args.Handled = true;
        }