--- /dev/null
+using Content.Shared.DeviceLinking;
+using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype;
+
+namespace Content.Server.Explosion.Components
+{
+ /// <summary>
+ /// Sends a trigger when signal is received.
+ /// </summary>
+ [RegisterComponent]
+ public sealed partial class TimerStartOnSignalComponent : Component
+ {
+ [DataField("port", customTypeSerializer: typeof(PrototypeIdSerializer<SinkPortPrototype>))]
+ public string Port = "Timer";
+ }
+}
{
SubscribeLocalEvent<TriggerOnSignalComponent,SignalReceivedEvent>(OnSignalReceived);
SubscribeLocalEvent<TriggerOnSignalComponent,ComponentInit>(OnInit);
+
+ SubscribeLocalEvent<TimerStartOnSignalComponent,SignalReceivedEvent>(OnTimerSignalReceived);
+ SubscribeLocalEvent<TimerStartOnSignalComponent,ComponentInit>(OnTimerSignalInit);
}
private void OnSignalReceived(EntityUid uid, TriggerOnSignalComponent component, ref SignalReceivedEvent args)
{
_signalSystem.EnsureSinkPorts(uid, component.Port);
}
+
+ private void OnTimerSignalReceived(EntityUid uid, TimerStartOnSignalComponent component, ref SignalReceivedEvent args)
+ {
+ if (args.Port != component.Port)
+ return;
+
+ StartTimer(uid, args.Trigger);
+ }
+ private void OnTimerSignalInit(EntityUid uid, TimerStartOnSignalComponent component, ComponentInit args)
+ {
+ _signalSystem.EnsureSinkPorts(uid, component.Port);
+ }
}
}
id: Pressed
name: signal-port-name-pressed
description: signal-port-description-pressed
- defaultLinks: [ Toggle, Trigger ]
+ defaultLinks: [ Toggle, Trigger, Timer ]
- type: sourcePort
id: On
name: signal-port-name-on-transmitter
description: signal-port-description-on-transmitter
- defaultLinks: [ On, Open, Forward, Trigger ]
+ defaultLinks: [ On, Open, Forward, Trigger, Timer ]
- type: sourcePort
id: Off
id: Left
name: signal-port-name-left
description: signal-port-description-left
- defaultLinks: [ On, Open, Forward, Trigger ]
+ defaultLinks: [ On, Open, Forward, Trigger, Timer ]
- type: sourcePort
id: Right
name: signal-port-name-right
description: signal-port-description-right
- defaultLinks: [ On, Open, Reverse, Trigger ]
+ defaultLinks: [ On, Open, Reverse, Trigger, Timer ]
- type: sourcePort
id: Middle
id: Timer
name: signal-port-name-timer-trigger
description: signal-port-description-timer-trigger
- defaultLinks: [ AutoClose, On, Open, Forward, Trigger ]
+ defaultLinks: [ AutoClose, On, Open, Forward, Trigger, Timer ]
- type: sourcePort
id: Start
id: OutputHigh
name: signal-port-name-logic-output-high
description: signal-port-description-logic-output-high
- defaultLinks: [ On, Open, Forward, Trigger ]
+ defaultLinks: [ On, Open, Forward, Trigger, Timer ]
- type: sourcePort
id: OutputLow