// SPDX-FileCopyrightText: 2025 GoobBot // SPDX-FileCopyrightText: 2025 deltanedas <@deltanedas:kde.org> // // SPDX-License-Identifier: AGPL-3.0-or-later using Content.Shared.DeviceLinking.Events; using Content.Server.Power.EntitySystems; using Content.Shared.DeviceLinking; using Content.Shared.Disposal.Unit; using Robust.Shared.Prototypes; using Content.Shared.Disposal.Components; using Content.Server.Disposal.Unit; namespace Content.Server._Goobstation.Disposals; public sealed class DisposalSignalSystem : EntitySystem { [Dependency] private readonly DisposalUnitSystem _disposal = default!; [Dependency] private readonly PowerReceiverSystem _power = default!; public static readonly ProtoId FlushPort = "DisposalFlush"; public static readonly ProtoId EjectPort = "DisposalEject"; public static readonly ProtoId TogglePort = "Toggle"; public override void Initialize() { base.Initialize(); SubscribeLocalEvent(OnSignalReceived); } private void OnSignalReceived(Entity ent, ref SignalReceivedEvent args) { if (args.Port == FlushPort) _disposal.ToggleEngage(ent, ent); else if (args.Port == EjectPort) _disposal.TryEjectContents(ent, ent); else if (args.Port == TogglePort) _power.TogglePower(ent); } }