diff --git a/Content.Client/_Sunrise/AssaultOps/AssaultOps/AssaultOpsSystem.cs b/Content.Client/_Sunrise/AssaultOps/AssaultOps/AssaultOpsSystem.cs new file mode 100644 index 0000000000..500bf2b1f8 --- /dev/null +++ b/Content.Client/_Sunrise/AssaultOps/AssaultOps/AssaultOpsSystem.cs @@ -0,0 +1,23 @@ +using Content.Shared._Sunrise.AssaultOps; +using Content.Shared.StatusIcon.Components; +using Robust.Shared.Prototypes; + +namespace Content.Client._Sunrise.AssaultOps.AssaultOps; + +public sealed class AssaultOpsSystem : EntitySystem +{ + [Dependency] private readonly IPrototypeManager _prototype = default!; + + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(GetVampireIcon); + } + + private void GetVampireIcon(EntityUid uid, AssaultOperativeComponent component, ref GetStatusIconsEvent args) + { + var iconPrototype = _prototype.Index(component.StatusIcon); + args.StatusIcons.Add(iconPrototype); + } +} diff --git a/Content.Client/_Sunrise/AssaultOps/Icarus/IcarusTerminalBoundUserInterface.cs b/Content.Client/_Sunrise/AssaultOps/Icarus/IcarusTerminalBoundUserInterface.cs new file mode 100644 index 0000000000..2b6595be75 --- /dev/null +++ b/Content.Client/_Sunrise/AssaultOps/Icarus/IcarusTerminalBoundUserInterface.cs @@ -0,0 +1,55 @@ +using Content.Shared._Sunrise.AssaultOps.Icarus; + +namespace Content.Client._Sunrise.AssaultOps.Icarus; + +public sealed class IcarusTerminalBoundUserInterface : BoundUserInterface +{ + private IcarusTerminalWindow? _window; + + public IcarusTerminalBoundUserInterface(EntityUid owner, Enum 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/_Sunrise/AssaultOps/Icarus/IcarusTerminalWindow.xaml b/Content.Client/_Sunrise/AssaultOps/Icarus/IcarusTerminalWindow.xaml new file mode 100644 index 0000000000..b33c072eaa --- /dev/null +++ b/Content.Client/_Sunrise/AssaultOps/Icarus/IcarusTerminalWindow.xaml @@ -0,0 +1,21 @@ + + +