ReagentGrinderBoundUserInterface.cs 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. using Content.Shared.Containers.ItemSlots;
  2. using Content.Shared.Kitchen;
  3. using Robust.Client.GameObjects;
  4. using Robust.Client.UserInterface;
  5. using Robust.Client.UserInterface.Controls;
  6. using Robust.Shared.Prototypes;
  7. namespace Content.Client.Kitchen.UI
  8. {
  9. public sealed class ReagentGrinderBoundUserInterface : BoundUserInterface
  10. {
  11. [ViewVariables]
  12. private GrinderMenu? _menu;
  13. public ReagentGrinderBoundUserInterface(EntityUid owner, Enum uiKey) : base(owner, uiKey)
  14. {
  15. }
  16. protected override void Open()
  17. {
  18. base.Open();
  19. _menu = this.CreateWindow<GrinderMenu>();
  20. _menu.OnToggleAuto += ToggleAutoMode;
  21. _menu.OnGrind += StartGrinding;
  22. _menu.OnJuice += StartJuicing;
  23. _menu.OnEjectAll += EjectAll;
  24. _menu.OnEjectBeaker += EjectBeaker;
  25. _menu.OnEjectChamber += EjectChamberContent;
  26. }
  27. protected override void UpdateState(BoundUserInterfaceState state)
  28. {
  29. base.UpdateState(state);
  30. if (state is not ReagentGrinderInterfaceState cState)
  31. return;
  32. _menu?.UpdateState(cState);
  33. }
  34. protected override void ReceiveMessage(BoundUserInterfaceMessage message)
  35. {
  36. base.ReceiveMessage(message);
  37. _menu?.HandleMessage(message);
  38. }
  39. public void ToggleAutoMode()
  40. {
  41. SendMessage(new ReagentGrinderToggleAutoModeMessage());
  42. }
  43. public void StartGrinding()
  44. {
  45. SendMessage(new ReagentGrinderStartMessage(GrinderProgram.Grind));
  46. }
  47. public void StartJuicing()
  48. {
  49. SendMessage(new ReagentGrinderStartMessage(GrinderProgram.Juice));
  50. }
  51. public void EjectAll()
  52. {
  53. SendMessage(new ReagentGrinderEjectChamberAllMessage());
  54. }
  55. public void EjectBeaker()
  56. {
  57. SendMessage(new ItemSlotButtonPressedEvent(SharedReagentGrinder.BeakerSlotId));
  58. }
  59. public void EjectChamberContent(EntityUid uid)
  60. {
  61. SendMessage(new ReagentGrinderEjectChamberContentMessage(EntMan.GetNetEntity(uid)));
  62. }
  63. }
  64. }