VoiceMaskBoundUserInterface.cs 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. using Content.Shared.VoiceMask;
  2. using Robust.Client.GameObjects;
  3. using Robust.Client.UserInterface;
  4. using Robust.Shared.Prototypes;
  5. namespace Content.Client.VoiceMask;
  6. public sealed class VoiceMaskBoundUserInterface : BoundUserInterface
  7. {
  8. [Dependency] private readonly IPrototypeManager _protomanager = default!;
  9. [ViewVariables]
  10. private VoiceMaskNameChangeWindow? _window;
  11. public VoiceMaskBoundUserInterface(EntityUid owner, Enum uiKey) : base(owner, uiKey)
  12. {
  13. }
  14. protected override void Open()
  15. {
  16. base.Open();
  17. _window = this.CreateWindow<VoiceMaskNameChangeWindow>();
  18. _window.ReloadVerbs(_protomanager);
  19. _window.AddVerbs();
  20. _window.OnNameChange += OnNameSelected;
  21. _window.OnVerbChange += verb => SendMessage(new VoiceMaskChangeVerbMessage(verb));
  22. }
  23. private void OnNameSelected(string name)
  24. {
  25. SendMessage(new VoiceMaskChangeNameMessage(name));
  26. }
  27. protected override void UpdateState(BoundUserInterfaceState state)
  28. {
  29. if (state is not VoiceMaskBuiState cast || _window == null)
  30. {
  31. return;
  32. }
  33. _window.UpdateState(cast.Name, cast.Verb);
  34. }
  35. protected override void Dispose(bool disposing)
  36. {
  37. base.Dispose(disposing);
  38. _window?.Close();
  39. }
  40. }