From bc5583a128a6c2fe61dac4d4740001d0cd3eed97 Mon Sep 17 00:00:00 2001 From: keslik Date: Wed, 5 Mar 2025 11:30:37 +0300 Subject: [PATCH] Deep Space Com --- .../DeepSpaceCom/DeepSpaceComBoundUI.cs | 57 +++++++++++++++++ .../_White/DeepSpaceCom/DeepSpaceComMenu.xaml | 29 +++++++++ .../DeepSpaceCom/DeepSpaceComMenu.xaml.cs | 59 ++++++++++++++++++ .../Radio/EntitySystems/RadioDeviceSystem.cs | 57 +++++++++++++++++ .../Radio/EntitySystems/RadioSystem.cs | 10 +-- .../DeepSpaceCom/DeepSpaceComComponent.cs | 15 +++++ .../_White/DeepSpaceCom/SharedDeepSpaceCom.cs | 59 ++++++++++++++++++ .../ru-RU/_white/radio/deepspacecom.ftl | 7 +++ .../ru-RU/_white/radio/deepspacecomui.ftl | 5 ++ .../Structures/Machines/deepspacecom.yml | 61 +++++++++++++++++++ Resources/Prototypes/radio_channels.yml | 6 ++ 11 files changed, 361 insertions(+), 4 deletions(-) create mode 100644 Content.Client/_White/DeepSpaceCom/DeepSpaceComBoundUI.cs create mode 100644 Content.Client/_White/DeepSpaceCom/DeepSpaceComMenu.xaml create mode 100644 Content.Client/_White/DeepSpaceCom/DeepSpaceComMenu.xaml.cs create mode 100644 Content.Shared/_White/DeepSpaceCom/DeepSpaceComComponent.cs create mode 100644 Content.Shared/_White/DeepSpaceCom/SharedDeepSpaceCom.cs create mode 100644 Resources/Locale/ru-RU/_white/radio/deepspacecom.ftl create mode 100644 Resources/Locale/ru-RU/_white/radio/deepspacecomui.ftl create mode 100644 Resources/Prototypes/_White/Structures/Machines/deepspacecom.yml diff --git a/Content.Client/_White/DeepSpaceCom/DeepSpaceComBoundUI.cs b/Content.Client/_White/DeepSpaceCom/DeepSpaceComBoundUI.cs new file mode 100644 index 0000000000..1f6d1a2555 --- /dev/null +++ b/Content.Client/_White/DeepSpaceCom/DeepSpaceComBoundUI.cs @@ -0,0 +1,57 @@ +using Content.Shared._White.DeepSpaceCom; +using JetBrains.Annotations; + +namespace Content.Client._White.DeepSpaceCom; + +[UsedImplicitly] +public sealed class DeepSpaceComBoundUI : BoundUserInterface +{ + [ViewVariables] + private DeepSpaceComMenu? _menu; + + public DeepSpaceComBoundUI(EntityUid owner, Enum uiKey) : base(owner, uiKey) + { + + } + + protected override void Open() + { + base.Open(); + + _menu = new(); + + _menu.OnMicPressed += enabled => + { + SendMessage(new ToggleDeepSpaceComMicrophoneMessage(enabled)); + }; + _menu.OnSpeakerPressed += enabled => + { + SendMessage(new ToggleDeepSpaceComSpeakerMessage(enabled)); + }; + _menu.OnChannelSelected += channel => + { + SendMessage(new SelectDeepSpaceComChannelMessage(channel)); + }; + + _menu.OnClose += Close; + _menu.OpenCentered(); + } + + protected override void Dispose(bool disposing) + { + base.Dispose(disposing); + if (!disposing) + return; + _menu?.Close(); + } + + protected override void UpdateState(BoundUserInterfaceState state) + { + base.UpdateState(state); + + if (state is not DeepSpaceComBoundUIState msg) + return; + + _menu?.Update(msg); + } +} diff --git a/Content.Client/_White/DeepSpaceCom/DeepSpaceComMenu.xaml b/Content.Client/_White/DeepSpaceCom/DeepSpaceComMenu.xaml new file mode 100644 index 0000000000..71bd6e3616 --- /dev/null +++ b/Content.Client/_White/DeepSpaceCom/DeepSpaceComMenu.xaml @@ -0,0 +1,29 @@ + + + + + + + + +