NukeBoundUserInterface.cs 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. using Content.Shared.Containers.ItemSlots;
  2. using Content.Shared.Nuke;
  3. using JetBrains.Annotations;
  4. using Robust.Client.GameObjects;
  5. using Robust.Client.UserInterface;
  6. namespace Content.Client.Nuke
  7. {
  8. [UsedImplicitly]
  9. public sealed class NukeBoundUserInterface : BoundUserInterface
  10. {
  11. [ViewVariables]
  12. private NukeMenu? _menu;
  13. public NukeBoundUserInterface(EntityUid owner, Enum uiKey) : base(owner, uiKey)
  14. {
  15. }
  16. protected override void Open()
  17. {
  18. base.Open();
  19. _menu = this.CreateWindow<NukeMenu>();
  20. _menu.OnKeypadButtonPressed += i =>
  21. {
  22. SendMessage(new NukeKeypadMessage(i));
  23. };
  24. _menu.OnEnterButtonPressed += () =>
  25. {
  26. SendMessage(new NukeKeypadEnterMessage());
  27. };
  28. _menu.OnClearButtonPressed += () =>
  29. {
  30. SendMessage(new NukeKeypadClearMessage());
  31. };
  32. _menu.EjectButton.OnPressed += _ =>
  33. {
  34. SendMessage(new ItemSlotButtonPressedEvent(SharedNukeComponent.NukeDiskSlotId));
  35. };
  36. _menu.AnchorButton.OnPressed += _ =>
  37. {
  38. SendMessage(new NukeAnchorMessage());
  39. };
  40. _menu.ArmButton.OnPressed += _ =>
  41. {
  42. SendMessage(new NukeArmedMessage());
  43. };
  44. }
  45. protected override void UpdateState(BoundUserInterfaceState state)
  46. {
  47. base.UpdateState(state);
  48. if (_menu == null)
  49. return;
  50. switch (state)
  51. {
  52. case NukeUiState msg:
  53. _menu.UpdateState(msg);
  54. break;
  55. }
  56. }
  57. }
  58. }