TriggerSystem.Signal.cs 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. using Content.Server.DeviceLinking.Events;
  2. using Content.Server.DeviceLinking.Systems;
  3. using Content.Server.Explosion.Components;
  4. namespace Content.Server.Explosion.EntitySystems
  5. {
  6. public sealed partial class TriggerSystem
  7. {
  8. [Dependency] private readonly DeviceLinkSystem _signalSystem = default!;
  9. private void InitializeSignal()
  10. {
  11. SubscribeLocalEvent<TriggerOnSignalComponent,SignalReceivedEvent>(OnSignalReceived);
  12. SubscribeLocalEvent<TriggerOnSignalComponent,ComponentInit>(OnInit);
  13. SubscribeLocalEvent<TimerStartOnSignalComponent,SignalReceivedEvent>(OnTimerSignalReceived);
  14. SubscribeLocalEvent<TimerStartOnSignalComponent,ComponentInit>(OnTimerSignalInit);
  15. }
  16. private void OnSignalReceived(EntityUid uid, TriggerOnSignalComponent component, ref SignalReceivedEvent args)
  17. {
  18. if (args.Port != component.Port)
  19. return;
  20. Trigger(uid, args.Trigger);
  21. }
  22. private void OnInit(EntityUid uid, TriggerOnSignalComponent component, ComponentInit args)
  23. {
  24. _signalSystem.EnsureSinkPorts(uid, component.Port);
  25. }
  26. private void OnTimerSignalReceived(EntityUid uid, TimerStartOnSignalComponent component, ref SignalReceivedEvent args)
  27. {
  28. if (args.Port != component.Port)
  29. return;
  30. StartTimer(uid, args.Trigger);
  31. }
  32. private void OnTimerSignalInit(EntityUid uid, TimerStartOnSignalComponent component, ComponentInit args)
  33. {
  34. _signalSystem.EnsureSinkPorts(uid, component.Port);
  35. }
  36. }
  37. }