]> git.smokeofanarchy.ru Git - space-station-14.git/commitdiff
Add a container display to dispenser UI (#25391)
authorTayrtahn <tayrtahn@gmail.com>
Sun, 25 Feb 2024 23:03:22 +0000 (18:03 -0500)
committerGitHub <noreply@github.com>
Sun, 25 Feb 2024 23:03:22 +0000 (00:03 +0100)
* Implemented contents display for dispenser UI

* Update Content.Client/Chemistry/UI/ReagentDispenserWindow.xaml.cs

Co-authored-by: Nemanja <98561806+EmoGarbage404@users.noreply.github.com>
* Resolve the netent into a euid first

---------

Co-authored-by: Nemanja <98561806+EmoGarbage404@users.noreply.github.com>
Content.Client/Chemistry/UI/ReagentDispenserWindow.xaml
Content.Client/Chemistry/UI/ReagentDispenserWindow.xaml.cs
Content.Server/Chemistry/EntitySystems/ReagentDispenserSystem.cs
Content.Shared/Chemistry/SharedReagentDispenser.cs

index d9e480f132b8ee063f51a164716cb5847f7a70aa..3b812ba56b21e0d18b321b77b58c0e0ab7e6a95b 100644 (file)
                     StyleClasses="OpenLeft"/>
         </BoxContainer>
         <Control MinSize="0 10"/>
-        <ScrollContainer HScrollEnabled="False" HorizontalExpand="True" VerticalExpand="True" MinSize="0 160">
-            <PanelContainer VerticalExpand="True"
-                            SizeFlagsStretchRatio="6"
-                            MinSize="0 150">
-                <PanelContainer.PanelOverride>
-                    <gfx:StyleBoxFlat BackgroundColor="#1b1b1e" />
-                </PanelContainer.PanelOverride>
-                <BoxContainer Name="ContainerInfo"
-                              Orientation="Vertical"
-                              HorizontalExpand="True">
-                    <Label Text="{Loc 'reagent-dispenser-window-no-container-loaded-text'}"/>
-                </BoxContainer>
-            </PanelContainer>
-        </ScrollContainer>
+        <BoxContainer Orientation="Horizontal">
+            <SpriteView Name="View" Scale="4 4" MinSize="150 150"/>
+            <ScrollContainer HScrollEnabled="False" HorizontalExpand="True" VerticalExpand="True" MinSize="0 160">
+                <PanelContainer VerticalExpand="True"
+                                SizeFlagsStretchRatio="6"
+                                MinSize="0 150">
+                    <PanelContainer.PanelOverride>
+                        <gfx:StyleBoxFlat BackgroundColor="#1b1b1e" />
+                    </PanelContainer.PanelOverride>
+                    <BoxContainer Name="ContainerInfo"
+                                Orientation="Vertical"
+                                HorizontalExpand="True">
+                        <Label Text="{Loc 'reagent-dispenser-window-no-container-loaded-text'}"/>
+                    </BoxContainer>
+                </PanelContainer>
+            </ScrollContainer>
+        </BoxContainer>
     </BoxContainer>
 </DefaultWindow>
index a36cc2fe54f5b35989e5263eaf98dc39961b982f..7fcf0191f2193495a53ef7638f599bcc02af66e4 100644 (file)
@@ -1,4 +1,3 @@
-using System.Linq;
 using Content.Client.Stylesheets;
 using Content.Shared.Chemistry;
 using Content.Shared.Chemistry.Reagent;
@@ -19,6 +18,7 @@ namespace Content.Client.Chemistry.UI
     public sealed partial class ReagentDispenserWindow : DefaultWindow
     {
         [Dependency] private readonly IPrototypeManager _prototypeManager = default!;
+        [Dependency] private readonly IEntityManager _entityManager = default!;
         public event Action<BaseButton.ButtonEventArgs, DispenseReagentButton>? OnDispenseReagentButtonPressed;
         public event Action<GUIMouseHoverEventArgs, DispenseReagentButton>? OnDispenseReagentButtonMouseEntered;
         public event Action<GUIMouseHoverEventArgs, DispenseReagentButton>? OnDispenseReagentButtonMouseExited;
@@ -52,7 +52,7 @@ namespace Content.Client.Chemistry.UI
         /// Update the button grid of reagents which can be dispensed.
         /// </summary>
         /// <param name="inventory">Reagents which can be dispensed by this dispenser</param>
-        public void UpdateReagentsList(List<KeyValuePair<string, KeyValuePair<string,string>>> inventory)
+        public void UpdateReagentsList(List<KeyValuePair<string, KeyValuePair<string, string>>> inventory)
         {
             if (ChemicalList == null)
                 return;
@@ -86,6 +86,9 @@ namespace Content.Client.Chemistry.UI
             UpdateContainerInfo(castState);
             UpdateReagentsList(castState.Inventory);
 
+            _entityManager.TryGetEntity(castState.OutputContainerEntity, out var outputContainerEnt);
+            View.SetEntity(outputContainerEnt);
+
             // Disable the Clear & Eject button if no beaker
             ClearButton.Disabled = castState.OutputContainer is null;
             EjectButton.Disabled = castState.OutputContainer is null;
@@ -134,7 +137,7 @@ namespace Content.Client.Chemistry.UI
 
             if (state.OutputContainer is null)
             {
-                ContainerInfo.Children.Add(new Label {Text = Loc.GetString("reagent-dispenser-window-no-container-loaded-text") });
+                ContainerInfo.Children.Add(new Label { Text = Loc.GetString("reagent-dispenser-window-no-container-loaded-text") });
                 return;
             }
 
@@ -159,11 +162,11 @@ namespace Content.Client.Chemistry.UI
                     ? p.LocalizedName
                     : Loc.GetString("reagent-dispenser-window-reagent-name-not-found-text");
 
-                var nameLabel = new Label {Text = $"{localizedName}: "};
+                var nameLabel = new Label { Text = $"{localizedName}: " };
                 var quantityLabel = new Label
                 {
                     Text = Loc.GetString("reagent-dispenser-window-quantity-label-text", ("quantity", quantity)),
-                    StyleClasses = {StyleNano.StyleClassLabelSecondaryColor},
+                    StyleClasses = { StyleNano.StyleClassLabelSecondaryColor },
                 };
 
                 ContainerInfo.Children.Add(new BoxContainer
index d5ec310f87e26a1c167999f9b4af467681cecf59..7a09d16265e0353b23f6b8bc4c4e6f101e68803d 100644 (file)
@@ -68,7 +68,7 @@ namespace Content.Server.Chemistry.EntitySystems
 
             var inventory = GetInventory(reagentDispenser);
 
-            var state = new ReagentDispenserBoundUserInterfaceState(outputContainerInfo, inventory, reagentDispenser.Comp.DispenseAmount);
+            var state = new ReagentDispenserBoundUserInterfaceState(outputContainerInfo, GetNetEntity(outputContainer), inventory, reagentDispenser.Comp.DispenseAmount);
             _userInterfaceSystem.TrySetUiState(reagentDispenser, ReagentDispenserUiKey.Key, state);
         }
 
index 22cb87dcdb91ec820ddd03703b284471c88280f7..2b9c318c58dbae723013f5ccd474019f064be2eb 100644 (file)
@@ -56,6 +56,8 @@ namespace Content.Shared.Chemistry
     public sealed class ReagentDispenserBoundUserInterfaceState : BoundUserInterfaceState
     {
         public readonly ContainerInfo? OutputContainer;
+
+        public readonly NetEntity? OutputContainerEntity;
         /// <summary>
         /// A list of the reagents which this dispenser can dispense.
         /// </summary>
@@ -63,9 +65,10 @@ namespace Content.Shared.Chemistry
 
         public readonly ReagentDispenserDispenseAmount SelectedDispenseAmount;
 
-        public ReagentDispenserBoundUserInterfaceState(ContainerInfo? outputContainer, List<KeyValuePair<string, KeyValuePair<string, string>>> inventory, ReagentDispenserDispenseAmount selectedDispenseAmount)
+        public ReagentDispenserBoundUserInterfaceState(ContainerInfo? outputContainer, NetEntity? outputContainerEntity, List<KeyValuePair<string, KeyValuePair<string, string>>> inventory, ReagentDispenserDispenseAmount selectedDispenseAmount)
         {
             OutputContainer = outputContainer;
+            OutputContainerEntity = outputContainerEntity;
             Inventory = inventory;
             SelectedDispenseAmount = selectedDispenseAmount;
         }