VendingMachineContrabandWireAction.cs 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. using Content.Server.Wires;
  2. using Content.Shared.VendingMachines;
  3. using Content.Shared.Wires;
  4. namespace Content.Server.VendingMachines;
  5. [DataDefinition]
  6. public sealed partial class VendingMachineContrabandWireAction : BaseToggleWireAction
  7. {
  8. private VendingMachineSystem _vendingMachineSystem = default!;
  9. public override Color Color { get; set; } = Color.Green;
  10. public override string Name { get; set; } = "wire-name-vending-contraband";
  11. public override object? StatusKey { get; } = ContrabandWireKey.StatusKey;
  12. public override object? TimeoutKey { get; } = ContrabandWireKey.TimeoutKey;
  13. public override void Initialize()
  14. {
  15. base.Initialize();
  16. _vendingMachineSystem = EntityManager.System<VendingMachineSystem>();
  17. }
  18. public override StatusLightState? GetLightState(Wire wire)
  19. {
  20. if (EntityManager.TryGetComponent(wire.Owner, out VendingMachineComponent? vending))
  21. {
  22. return vending.Contraband
  23. ? StatusLightState.BlinkingSlow
  24. : StatusLightState.On;
  25. }
  26. return StatusLightState.Off;
  27. }
  28. public override void ToggleValue(EntityUid owner, bool setting)
  29. {
  30. if (EntityManager.TryGetComponent(owner, out VendingMachineComponent? vending))
  31. {
  32. _vendingMachineSystem.SetContraband(owner, !vending.Contraband, vending);
  33. }
  34. }
  35. public override bool GetValue(EntityUid owner)
  36. {
  37. return EntityManager.TryGetComponent(owner, out VendingMachineComponent? vending) && !vending.Contraband;
  38. }
  39. }