diff --git a/Content.Client/NukeOps/WarDeclaratorBoundUserInterface.cs b/Content.Client/NukeOps/WarDeclaratorBoundUserInterface.cs new file mode 100644 index 0000000000..7394e27043 --- /dev/null +++ b/Content.Client/NukeOps/WarDeclaratorBoundUserInterface.cs @@ -0,0 +1,49 @@ +using Content.Shared.NukeOps; +using JetBrains.Annotations; +using Robust.Client.GameObjects; +using Robust.Shared.Timing; + +namespace Content.Client.NukeOps; + +[UsedImplicitly] +public sealed class WarDeclaratorBoundUserInterface : BoundUserInterface +{ + [ViewVariables] + private WarDeclaratorWindow? _window; + + public WarDeclaratorBoundUserInterface(EntityUid owner, Enum uiKey) : base(owner, uiKey) {} + + protected override void Open() + { + base.Open(); + + _window = new WarDeclaratorWindow(); + if (State != null) + UpdateState(State); + + _window.OpenCentered(); + + _window.OnClose += Close; + _window.OnActivated += OnWarDeclaratorActivated; + } + + protected override void UpdateState(BoundUserInterfaceState state) + { + base.UpdateState(state); + if (_window == null || state is not WarDeclaratorBoundUserInterfaceState cast) + return; + + _window?.UpdateState(cast); + } + + protected override void Dispose(bool disposing) + { + base.Dispose(disposing); + if (disposing) _window?.Dispose(); + } + + private void OnWarDeclaratorActivated(string message) + { + SendMessage(new WarDeclaratorActivateMessage(message)); + } +} diff --git a/Content.Client/NukeOps/WarDeclaratorWindow.xaml b/Content.Client/NukeOps/WarDeclaratorWindow.xaml new file mode 100644 index 0000000000..f90ed865a0 --- /dev/null +++ b/Content.Client/NukeOps/WarDeclaratorWindow.xaml @@ -0,0 +1,18 @@ + + + +