AiVisionWireAction.cs 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. using Content.Server.Wires;
  2. using Content.Shared.Doors;
  3. using Content.Shared.Silicons.StationAi;
  4. using Content.Shared.StationAi;
  5. using Content.Shared.Wires;
  6. namespace Content.Server.Silicons.StationAi;
  7. /// <summary>
  8. /// Handles StationAiVision functionality for the attached entity.
  9. /// </summary>
  10. public sealed partial class AiVisionWireAction : ComponentWireAction<StationAiVisionComponent>
  11. {
  12. public override string Name { get; set; } = "wire-name-ai-vision-light";
  13. public override Color Color { get; set; } = Color.White;
  14. public override object StatusKey => AirlockWireStatus.AiVisionIndicator;
  15. public override StatusLightState? GetLightState(Wire wire, StationAiVisionComponent component)
  16. {
  17. return component.Enabled ? StatusLightState.On : StatusLightState.Off;
  18. }
  19. public override bool Cut(EntityUid user, Wire wire, StationAiVisionComponent component)
  20. {
  21. return EntityManager.System<SharedStationAiSystem>()
  22. .SetVisionEnabled((component.Owner, component), false, announce: true);
  23. }
  24. public override bool Mend(EntityUid user, Wire wire, StationAiVisionComponent component)
  25. {
  26. return EntityManager.System<SharedStationAiSystem>()
  27. .SetVisionEnabled((component.Owner, component), true);
  28. }
  29. public override void Pulse(EntityUid user, Wire wire, StationAiVisionComponent component)
  30. {
  31. // TODO: This should turn it off for a bit
  32. // Need timer cleanup first out of scope.
  33. }
  34. }