From ddd080f5f8780354156d4067330becd8d055d498 Mon Sep 17 00:00:00 2001 From: Arthur <14136326+Morb0@users.noreply.github.com> Date: Sat, 9 Jul 2022 22:29:10 +0300 Subject: [PATCH] Add simple terminal UI for firing --- .../IcarusTerminalBoundUserInterface.cs | 58 +++++++++++++++++++ .../Icarus/IcarusTerminalWindow.xaml | 14 +++++ .../Icarus/IcarusTerminalWindow.xaml.cs | 32 ++++++++++ Content.Server/Icarus/IcarusTerminalSystem.cs | 32 +++++++++- Content.Shared/Icarus/SharedIcarus.cs | 31 +++++++++- .../icarus-terminal-component.ftl | 14 +++++ .../icarus-terminal-component.ftl | 28 +++++---- .../Corvax/AssaultOperatives/terminal.yml | 6 ++ 8 files changed, 202 insertions(+), 13 deletions(-) create mode 100644 Content.Client/Icarus/IcarusTerminalBoundUserInterface.cs create mode 100644 Content.Client/Icarus/IcarusTerminalWindow.xaml create mode 100644 Content.Client/Icarus/IcarusTerminalWindow.xaml.cs create mode 100644 Resources/Locale/en-US/corvax/assault-operatives/icarus-terminal-component.ftl diff --git a/Content.Client/Icarus/IcarusTerminalBoundUserInterface.cs b/Content.Client/Icarus/IcarusTerminalBoundUserInterface.cs new file mode 100644 index 0000000000..a18afef2eb --- /dev/null +++ b/Content.Client/Icarus/IcarusTerminalBoundUserInterface.cs @@ -0,0 +1,58 @@ +using Content.Shared.Icarus; +using JetBrains.Annotations; +using Robust.Client.GameObjects; + +namespace Content.Client.Icarus; + +[UsedImplicitly] +public sealed class IcarusTerminalBoundUserInterface : BoundUserInterface +{ + private IcarusTerminalWindow? _window; + + public IcarusTerminalBoundUserInterface([NotNull] ClientUserInterfaceComponent owner, [NotNull] object uiKey) : base(owner, uiKey) + { + } + + protected override void Open() + { + base.Open(); + _window = new IcarusTerminalWindow(); + _window.OnClose += Close; + _window.OpenCentered(); + + _window.FireButtonPressed += OnFireButtonPressed; + } + + private void OnFireButtonPressed() + { + if (_window == null) + return; + + SendMessage(new IcarusTerminalFireMessage()); + } + + protected override void UpdateState(BoundUserInterfaceState state) + { + base.UpdateState(state); + + if (_window == null) + return; + + if (state is not IcarusTerminalUiState cast) + return; + + _window.UpdateState(cast); + } + + protected override void Dispose(bool disposing) + { + base.Dispose(disposing); + if (!disposing) + return; + + if (_window != null) + _window.OnClose -= Close; + + _window?.Dispose(); + } +} diff --git a/Content.Client/Icarus/IcarusTerminalWindow.xaml b/Content.Client/Icarus/IcarusTerminalWindow.xaml new file mode 100644 index 0000000000..6787d48f42 --- /dev/null +++ b/Content.Client/Icarus/IcarusTerminalWindow.xaml @@ -0,0 +1,14 @@ + + + +