From 78a63ae4b58300a01b9c1691d653fe75d7dbc1ed Mon Sep 17 00:00:00 2001 From: Hero010h <163765999+Hero010h@users.noreply.github.com> Date: Thu, 25 Dec 2025 19:47:18 +0300 Subject: [PATCH] Code lock console (#3060) Co-authored-by: KaiserMaus --- .../CodeConsoleBoundUserInterface.cs | 62 +++++ .../_Sunrise/CodeConsole/CodeConsoleMenu.xaml | 42 ++++ .../CodeConsole/CodeConsoleMenu.xaml.cs | 83 +++++++ .../_Sunrise/CodeConsole/CodeConsoleSystem.cs | 220 ++++++++++++++++++ .../CodeConsole/CodeConsoleComponent.cs | 55 +++++ .../CodeConsole/CodeConsoleMessages.cs | 40 ++++ .../structures/computers/code-console.ftl | 2 + .../_sunrise/code-console/code-console.ftl | 13 ++ .../_Sunrise/DeviceLinking/source_ports.yml | 4 + .../Machines/Computers/computers.yml | 44 ++++ 10 files changed, 565 insertions(+) create mode 100644 Content.Client/_Sunrise/CodeConsole/CodeConsoleBoundUserInterface.cs create mode 100644 Content.Client/_Sunrise/CodeConsole/CodeConsoleMenu.xaml create mode 100644 Content.Client/_Sunrise/CodeConsole/CodeConsoleMenu.xaml.cs create mode 100644 Content.Server/_Sunrise/CodeConsole/CodeConsoleSystem.cs create mode 100644 Content.Shared/_Sunrise/CodeConsole/CodeConsoleComponent.cs create mode 100644 Content.Shared/_Sunrise/CodeConsole/CodeConsoleMessages.cs create mode 100644 Resources/Locale/ru-RU/_prototypes/_sunrise/structures/computers/code-console.ftl create mode 100644 Resources/Locale/ru-RU/_strings/_sunrise/code-console/code-console.ftl create mode 100644 Resources/Prototypes/_Sunrise/DeviceLinking/source_ports.yml diff --git a/Content.Client/_Sunrise/CodeConsole/CodeConsoleBoundUserInterface.cs b/Content.Client/_Sunrise/CodeConsole/CodeConsoleBoundUserInterface.cs new file mode 100644 index 0000000000..978f0b25f8 --- /dev/null +++ b/Content.Client/_Sunrise/CodeConsole/CodeConsoleBoundUserInterface.cs @@ -0,0 +1,62 @@ +using Content.Shared._Sunrise.CodeConsole; +using JetBrains.Annotations; +using Robust.Client.UserInterface; + +namespace Content.Client._Sunrise.CodeConsole; + +[UsedImplicitly] +public sealed class CodeConsoleBoundUserInterface : BoundUserInterface +{ + [ViewVariables] + private CodeConsoleMenu? _menu; + + public CodeConsoleBoundUserInterface(EntityUid owner, Enum uiKey) : base(owner, uiKey) + { + } + + protected override void Open() + { + base.Open(); + + _menu = this.CreateWindow(); + + _menu.OnKeypadButtonPressed += i => + { + SendMessage(new CodeConsoleKeypadMessage(i)); + }; + _menu.OnEnterButtonPressed += () => + { + SendMessage(new CodeConsoleKeypadEnterMessage()); + }; + _menu.OnClearButtonPressed += () => + { + SendMessage(new CodeConsoleKeypadClearMessage()); + }; + + _menu.ActivateButton.OnPressed += _ => + { + SendMessage(new CodeConsoleActivateButtonMessage()); + }; + _menu.LockButton.OnPressed += _ => + { + SendMessage(new CodeConsoleLockButtonMessage()); + }; + + _menu.OnClose += Close; + } + + protected override void UpdateState(BoundUserInterfaceState state) + { + base.UpdateState(state); + + if (_menu == null) + return; + + switch (state) + { + case CodeConsoleUiState msg: + _menu.UpdateState(msg); + break; + } + } +} diff --git a/Content.Client/_Sunrise/CodeConsole/CodeConsoleMenu.xaml b/Content.Client/_Sunrise/CodeConsole/CodeConsoleMenu.xaml new file mode 100644 index 0000000000..22aa3a0391 --- /dev/null +++ b/Content.Client/_Sunrise/CodeConsole/CodeConsoleMenu.xaml @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + +