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 @@ + + + + + + +