From b329abc9ee7ff9e411c8a05b839efffabd88737a Mon Sep 17 00:00:00 2001 From: Checkraze <71046427+Cheackraze@users.noreply.github.com> Date: Mon, 13 Mar 2023 16:36:35 -0400 Subject: [PATCH] Cargo Pallet Sale Console (#14422) --- .../CargoPalletConsoleBoundUserInterface.cs | 56 ++++++++ Content.Client/Cargo/UI/CargoPalletMenu.xaml | 25 ++++ .../Cargo/UI/CargoPalletMenu.xaml.cs | 47 +++++++ .../Components/CargoPalletConsoleComponent.cs | 13 ++ .../Cargo/Systems/CargoSystem.Shuttle.cs | 120 ++++++++++++++---- .../BUI/CargoPalletConsoleInterfaceState.cs | 29 +++++ .../Events/CargoPalletAppraiseMessage.cs | 12 ++ .../Cargo/Events/CargoPalletSellMessage.cs | 12 ++ Content.Shared/Cargo/SharedCargoSystem.cs | 6 + .../cargo/cargo-pallet-console-component.ftl | 7 + .../Machines/Computers/computers.yml | 30 +++++ 11 files changed, 335 insertions(+), 22 deletions(-) create mode 100644 Content.Client/Cargo/BUI/CargoPalletConsoleBoundUserInterface.cs create mode 100644 Content.Client/Cargo/UI/CargoPalletMenu.xaml create mode 100644 Content.Client/Cargo/UI/CargoPalletMenu.xaml.cs create mode 100644 Content.Server/Cargo/Components/CargoPalletConsoleComponent.cs create mode 100644 Content.Shared/Cargo/BUI/CargoPalletConsoleInterfaceState.cs create mode 100644 Content.Shared/Cargo/Events/CargoPalletAppraiseMessage.cs create mode 100644 Content.Shared/Cargo/Events/CargoPalletSellMessage.cs create mode 100644 Resources/Locale/en-US/cargo/cargo-pallet-console-component.ftl diff --git a/Content.Client/Cargo/BUI/CargoPalletConsoleBoundUserInterface.cs b/Content.Client/Cargo/BUI/CargoPalletConsoleBoundUserInterface.cs new file mode 100644 index 0000000000..3c7b7fe0c0 --- /dev/null +++ b/Content.Client/Cargo/BUI/CargoPalletConsoleBoundUserInterface.cs @@ -0,0 +1,56 @@ +using Content.Client.Cargo.UI; +using Content.Shared.Cargo.BUI; +using Content.Shared.Cargo.Events; +using Robust.Client.GameObjects; + +namespace Content.Client.Cargo.BUI; + +public sealed class CargoPalletConsoleBoundUserInterface : BoundUserInterface +{ + private CargoPalletMenu? _menu; + + public CargoPalletConsoleBoundUserInterface(ClientUserInterfaceComponent owner, Enum uiKey) : base(owner, uiKey) {} + + protected override void Open() + { + base.Open(); + + _menu = new CargoPalletMenu(); + _menu.AppraiseRequested += OnAppraisal; + _menu.SellRequested += OnSell; + _menu.OnClose += Close; + + _menu.OpenCentered(); + } + + protected override void Dispose(bool disposing) + { + base.Dispose(disposing); + if (disposing) + { + _menu?.Dispose(); + } + } + + private void OnAppraisal() + { + SendMessage(new CargoPalletAppraiseMessage()); + } + + private void OnSell() + { + SendMessage(new CargoPalletSellMessage()); + } + + protected override void UpdateState(BoundUserInterfaceState state) + { + base.UpdateState(state); + + if (state is not CargoPalletConsoleInterfaceState palletState) + return; + + _menu?.SetEnabled(palletState.Enabled); + _menu?.SetAppraisal(palletState.Appraisal); + _menu?.SetCount(palletState.Count); + } +} diff --git a/Content.Client/Cargo/UI/CargoPalletMenu.xaml b/Content.Client/Cargo/UI/CargoPalletMenu.xaml new file mode 100644 index 0000000000..489c6cb8f6 --- /dev/null +++ b/Content.Client/Cargo/UI/CargoPalletMenu.xaml @@ -0,0 +1,25 @@ + + + + + + +