diff --git a/Content.Client/VoiceMask/VoiceMaskBoundUserInterface.cs b/Content.Client/VoiceMask/VoiceMaskBoundUserInterface.cs new file mode 100644 index 0000000000..1427248c35 --- /dev/null +++ b/Content.Client/VoiceMask/VoiceMaskBoundUserInterface.cs @@ -0,0 +1,46 @@ +using Content.Shared.VoiceMask; +using Robust.Client.GameObjects; + +namespace Content.Client.VoiceMask; + +public sealed class VoiceMaskBoundUserInterface : BoundUserInterface +{ + public VoiceMaskBoundUserInterface(ClientUserInterfaceComponent owner, Enum uiKey) : base(owner, uiKey) + { + } + + private VoiceMaskNameChangeWindow? _window; + + protected override void Open() + { + base.Open(); + + _window = new(); + + _window.OpenCentered(); + _window.OnNameChange += OnNameSelected; + _window.OnClose += Close; + } + + private void OnNameSelected(string name) + { + SendMessage(new VoiceMaskChangeNameMessage(name)); + } + + protected override void UpdateState(BoundUserInterfaceState state) + { + if (state is not VoiceMaskBuiState cast || _window == null) + { + return; + } + + _window.UpdateState(cast.Name); + } + + protected override void Dispose(bool disposing) + { + base.Dispose(disposing); + + _window?.Close(); + } +} diff --git a/Content.Client/VoiceMask/VoiceMaskNameChangeWindow.xaml b/Content.Client/VoiceMask/VoiceMaskNameChangeWindow.xaml new file mode 100644 index 0000000000..2316ec9c7d --- /dev/null +++ b/Content.Client/VoiceMask/VoiceMaskNameChangeWindow.xaml @@ -0,0 +1,11 @@ + + +