VendingMachineEjectItemWireAction.cs 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. using Content.Server.Wires;
  2. using Content.Shared.VendingMachines;
  3. using Content.Shared.Wires;
  4. namespace Content.Server.VendingMachines;
  5. public sealed partial class VendingMachineEjectItemWireAction : ComponentWireAction<VendingMachineComponent>
  6. {
  7. private VendingMachineSystem _vendingMachineSystem = default!;
  8. public override Color Color { get; set; } = Color.Red;
  9. public override string Name { get; set; } = "wire-name-vending-eject";
  10. public override object? StatusKey { get; } = EjectWireKey.StatusKey;
  11. public override StatusLightState? GetLightState(Wire wire, VendingMachineComponent comp)
  12. => comp.CanShoot ? StatusLightState.BlinkingFast : StatusLightState.On;
  13. public override void Initialize()
  14. {
  15. base.Initialize();
  16. _vendingMachineSystem = EntityManager.System<VendingMachineSystem>();
  17. }
  18. public override bool Cut(EntityUid user, Wire wire, VendingMachineComponent vending)
  19. {
  20. _vendingMachineSystem.SetShooting(wire.Owner, true, vending);
  21. return true;
  22. }
  23. public override bool Mend(EntityUid user, Wire wire, VendingMachineComponent vending)
  24. {
  25. _vendingMachineSystem.SetShooting(wire.Owner, false, vending);
  26. return true;
  27. }
  28. public override void Pulse(EntityUid user, Wire wire, VendingMachineComponent vending)
  29. {
  30. _vendingMachineSystem.EjectRandom(wire.Owner, true, vendComponent: vending);
  31. }
  32. }