PortableGeneratorBoundUserInterface.cs 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. using Content.Shared.Power.Generator;
  2. using JetBrains.Annotations;
  3. using Robust.Client.GameObjects;
  4. using Robust.Client.UserInterface;
  5. namespace Content.Client.Power.Generator;
  6. [UsedImplicitly]
  7. public sealed class PortableGeneratorBoundUserInterface : BoundUserInterface
  8. {
  9. private GeneratorWindow? _window;
  10. public PortableGeneratorBoundUserInterface(EntityUid owner, Enum uiKey) : base(owner, uiKey)
  11. {
  12. }
  13. protected override void Open()
  14. {
  15. base.Open();
  16. _window = this.CreateWindowCenteredLeft<GeneratorWindow>();
  17. _window.SetEntity(Owner);
  18. _window.OnState += args =>
  19. {
  20. if (args)
  21. {
  22. Start();
  23. }
  24. else
  25. {
  26. Stop();
  27. }
  28. };
  29. _window.OnPower += SetTargetPower;
  30. _window.OnEjectFuel += EjectFuel;
  31. _window.OnSwitchOutput += SwitchOutput;
  32. }
  33. protected override void UpdateState(BoundUserInterfaceState state)
  34. {
  35. if (state is not PortableGeneratorComponentBuiState msg)
  36. return;
  37. _window?.Update(msg);
  38. }
  39. public void SetTargetPower(int target)
  40. {
  41. SendMessage(new PortableGeneratorSetTargetPowerMessage(target));
  42. }
  43. public void Start()
  44. {
  45. SendMessage(new PortableGeneratorStartMessage());
  46. }
  47. public void Stop()
  48. {
  49. SendMessage(new PortableGeneratorStopMessage());
  50. }
  51. public void SwitchOutput()
  52. {
  53. SendMessage(new PortableGeneratorSwitchOutputMessage());
  54. }
  55. public void EjectFuel()
  56. {
  57. SendMessage(new PortableGeneratorEjectFuelMessage());
  58. }
  59. }