ResearchClientBoundUserInterface.cs 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. using Content.Shared.Research.Components;
  2. using Robust.Client.GameObjects;
  3. using Robust.Client.UserInterface;
  4. namespace Content.Client.Research.UI
  5. {
  6. public sealed class ResearchClientBoundUserInterface : BoundUserInterface
  7. {
  8. [ViewVariables]
  9. private ResearchClientServerSelectionMenu? _menu;
  10. public ResearchClientBoundUserInterface(EntityUid owner, Enum uiKey) : base(owner, uiKey)
  11. {
  12. SendMessage(new ResearchClientSyncMessage());
  13. }
  14. protected override void Open()
  15. {
  16. base.Open();
  17. _menu = this.CreateWindow<ResearchClientServerSelectionMenu>();
  18. _menu.OnServerSelected += SelectServer;
  19. _menu.OnServerDeselected += DeselectServer;
  20. }
  21. public void SelectServer(int serverId)
  22. {
  23. SendMessage(new ResearchClientServerSelectedMessage(serverId));
  24. }
  25. public void DeselectServer()
  26. {
  27. SendMessage(new ResearchClientServerDeselectedMessage());
  28. }
  29. protected override void UpdateState(BoundUserInterfaceState state)
  30. {
  31. base.UpdateState(state);
  32. if (state is not ResearchClientBoundInterfaceState rState) return;
  33. _menu?.Populate(rState.ServerCount, rState.ServerNames, rState.ServerIds, rState.SelectedServerId);
  34. }
  35. }
  36. }