diff --git a/Content.Client/Xenoarchaeology/Artifact/XenoArtifactSystem.cs b/Content.Client/Xenoarchaeology/Artifact/XenoArtifactSystem.cs new file mode 100644 index 000000000000..0e8680e22a88 --- /dev/null +++ b/Content.Client/Xenoarchaeology/Artifact/XenoArtifactSystem.cs @@ -0,0 +1,6 @@ +using Content.Shared.Xenoarchaeology.Artifact; + +namespace Content.Client.Xenoarchaeology.Artifact; + +/// +public sealed class XenoArtifactSystem : SharedXenoArtifactSystem; diff --git a/Content.Client/Xenoarchaeology/Equipment/ArtifactAnalyzerSystem.cs b/Content.Client/Xenoarchaeology/Equipment/ArtifactAnalyzerSystem.cs new file mode 100644 index 000000000000..557d46f46b6c --- /dev/null +++ b/Content.Client/Xenoarchaeology/Equipment/ArtifactAnalyzerSystem.cs @@ -0,0 +1,40 @@ +using Content.Client.Xenoarchaeology.Ui; +using Content.Shared.Xenoarchaeology.Equipment; +using Content.Shared.Xenoarchaeology.Equipment.Components; +using Robust.Client.GameObjects; + +namespace Content.Client.Xenoarchaeology.Equipment; + +/// +public sealed class ArtifactAnalyzerSystem : SharedArtifactAnalyzerSystem +{ + [Dependency] private readonly UserInterfaceSystem _ui = default!; + + /// + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnAnalysisConsoleAfterAutoHandleState); + SubscribeLocalEvent(OnAnalyzerAfterAutoHandleState); + } + + private void OnAnalysisConsoleAfterAutoHandleState(Entity ent, ref AfterAutoHandleStateEvent args) + { + UpdateBuiIfCanGetAnalysisConsoleUi(ent); + } + + private void OnAnalyzerAfterAutoHandleState(Entity ent, ref AfterAutoHandleStateEvent args) + { + if (!TryGetAnalysisConsole(ent, out var analysisConsole)) + return; + + UpdateBuiIfCanGetAnalysisConsoleUi(analysisConsole.Value); + } + + private void UpdateBuiIfCanGetAnalysisConsoleUi(Entity analysisConsole) + { + if (_ui.TryGetOpenUi(analysisConsole.Owner, ArtifactAnalyzerUiKey.Key, out var bui)) + bui.Update(analysisConsole); + } +} diff --git a/Content.Client/Xenoarchaeology/Equipment/ArtifactCrusherSystem.cs b/Content.Client/Xenoarchaeology/Equipment/ArtifactCrusherSystem.cs index a57ef5557475..d4a88cdd0378 100644 --- a/Content.Client/Xenoarchaeology/Equipment/ArtifactCrusherSystem.cs +++ b/Content.Client/Xenoarchaeology/Equipment/ArtifactCrusherSystem.cs @@ -6,4 +6,4 @@ namespace Content.Client.Xenoarchaeology.Equipment; public sealed class ArtifactCrusherSystem : SharedArtifactCrusherSystem { -} +} \ No newline at end of file diff --git a/Content.Client/Xenoarchaeology/Equipment/NodeScannerSystem.cs b/Content.Client/Xenoarchaeology/Equipment/NodeScannerSystem.cs new file mode 100644 index 000000000000..35a60682fc40 --- /dev/null +++ b/Content.Client/Xenoarchaeology/Equipment/NodeScannerSystem.cs @@ -0,0 +1,30 @@ +using Content.Client.Xenoarchaeology.Ui; +using Content.Shared.Xenoarchaeology.Equipment; +using Content.Shared.Xenoarchaeology.Equipment.Components; +using Robust.Client.GameObjects; + +namespace Content.Client.Xenoarchaeology.Equipment; + +public sealed class NodeScannerSystem : SharedNodeScannerSystem +{ + [Dependency] private readonly UserInterfaceSystem _ui = default!; + + /// + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnAnalysisConsoleAfterAutoHandleState); + } + + protected override void TryOpenUi(Entity device, EntityUid actor) + { + _ui.TryOpenUi(device.Owner, NodeScannerUiKey.Key, actor, true); + } + + private void OnAnalysisConsoleAfterAutoHandleState(Entity ent, ref AfterAutoHandleStateEvent args) + { + if (_ui.TryGetOpenUi(ent.Owner, NodeScannerUiKey.Key, out var bui)) + bui.Update(ent); + } +} diff --git a/Content.Client/Xenoarchaeology/Ui/AnalysisConsoleBoundUserInterface.cs b/Content.Client/Xenoarchaeology/Ui/AnalysisConsoleBoundUserInterface.cs index c7a74815b6b8..9c275540ab18 100644 --- a/Content.Client/Xenoarchaeology/Ui/AnalysisConsoleBoundUserInterface.cs +++ b/Content.Client/Xenoarchaeology/Ui/AnalysisConsoleBoundUserInterface.cs @@ -1,66 +1,44 @@ -using Content.Shared.Xenoarchaeology.Equipment; +using Content.Shared.Research.Components; +using Content.Shared.Xenoarchaeology.Equipment.Components; using JetBrains.Annotations; -using Robust.Client.GameObjects; -using Robust.Client.UserInterface; namespace Content.Client.Xenoarchaeology.Ui; [UsedImplicitly] -public sealed class AnalysisConsoleBoundUserInterface : BoundUserInterface +public sealed class AnalysisConsoleBoundUserInterface(EntityUid owner, Enum uiKey) : BoundUserInterface(owner, uiKey) { [ViewVariables] private AnalysisConsoleMenu? _consoleMenu; - public AnalysisConsoleBoundUserInterface(EntityUid owner, Enum uiKey) : base(owner, uiKey) - { - } - + /// protected override void Open() { base.Open(); - _consoleMenu = this.CreateWindow(); + _consoleMenu = new AnalysisConsoleMenu(Owner); + + _consoleMenu.OnClose += Close; + _consoleMenu.OpenCentered(); _consoleMenu.OnServerSelectionButtonPressed += () => { - SendMessage(new AnalysisConsoleServerSelectionMessage()); - }; - _consoleMenu.OnScanButtonPressed += () => - { - SendMessage(new AnalysisConsoleScanButtonPressedMessage()); - }; - _consoleMenu.OnPrintButtonPressed += () => - { - SendMessage(new AnalysisConsolePrintButtonPressedMessage()); + SendMessage(new ConsoleServerSelectionMessage()); }; _consoleMenu.OnExtractButtonPressed += () => { SendMessage(new AnalysisConsoleExtractButtonPressedMessage()); }; - _consoleMenu.OnUpBiasButtonPressed += () => - { - SendMessage(new AnalysisConsoleBiasButtonPressedMessage(false)); - }; - _consoleMenu.OnDownBiasButtonPressed += () => - { - SendMessage(new AnalysisConsoleBiasButtonPressedMessage(true)); - }; } - protected override void UpdateState(BoundUserInterfaceState state) + /// + /// Update UI state based on corresponding component. + /// + public void Update(Entity ent) { - base.UpdateState(state); - - switch (state) - { - case AnalysisConsoleUpdateState msg: - _consoleMenu?.SetButtonsDisabled(msg); - _consoleMenu?.UpdateInformationDisplay(msg); - _consoleMenu?.UpdateProgressBar(msg); - break; - } + _consoleMenu?.Update(ent); } + /// protected override void Dispose(bool disposing) { base.Dispose(disposing); diff --git a/Content.Client/Xenoarchaeology/Ui/AnalysisConsoleMenu.xaml b/Content.Client/Xenoarchaeology/Ui/AnalysisConsoleMenu.xaml index 29f4a5484790..30cd8647f9a3 100644 --- a/Content.Client/Xenoarchaeology/Ui/AnalysisConsoleMenu.xaml +++ b/Content.Client/Xenoarchaeology/Ui/AnalysisConsoleMenu.xaml @@ -1,80 +1,91 @@ - + MinSize="700 350" + SetSize="980 550"> - - - - - - - - - - - + + + + + + + - - + + + + + + + + + + + + + + + + + - - - - + + + + + + + +