diff --git a/Content.Client/GameObjects/Components/Kitchen/MicrowaveBoundUserInterface.cs b/Content.Client/GameObjects/Components/Kitchen/MicrowaveBoundUserInterface.cs index 1d025efc28..e93d016806 100644 --- a/Content.Client/GameObjects/Components/Kitchen/MicrowaveBoundUserInterface.cs +++ b/Content.Client/GameObjects/Components/Kitchen/MicrowaveBoundUserInterface.cs @@ -23,22 +23,33 @@ namespace Content.Client.GameObjects.Components.Kitchen private MicrowaveMenu _menu; private Dictionary _solids = new Dictionary(); + private Dictionary _reagents =new Dictionary(); public MicrowaveBoundUserInterface(ClientUserInterfaceComponent owner, object uiKey) : base(owner,uiKey) { - + } protected override void Open() { base.Open(); _menu = new MicrowaveMenu(this); - _menu.OpenCentered(); _menu.OnClose += Close; _menu.StartButton.OnPressed += args => SendMessage(new SharedMicrowaveComponent.MicrowaveStartCookMessage()); _menu.EjectButton.OnPressed += args => SendMessage(new SharedMicrowaveComponent.MicrowaveEjectMessage()); - _menu.IngredientsList.OnItemSelected += args => SendMessage(new SharedMicrowaveComponent.MicrowaveEjectSolidIndexedMessage(_solids[args.ItemIndex])); + _menu.IngredientsList.OnItemSelected += args => + { + SendMessage(new SharedMicrowaveComponent.MicrowaveEjectSolidIndexedMessage(_solids[args.ItemIndex])); + + }; + + _menu.IngredientsListReagents.OnItemSelected += args => + { + SendMessage( + new SharedMicrowaveComponent.MicrowaveVaporizeReagentIndexedMessage(_reagents[args.ItemIndex])); + }; + _menu.OnCookTimeSelected += args => { var actualButton = args.Button as Button; @@ -76,25 +87,28 @@ namespace Content.Client.GameObjects.Components.Kitchen private void RefreshContentsDisplay(IReadOnlyList reagents, List solids) { - _menu.IngredientsList.Clear(); - foreach (var item in reagents) + _reagents.Clear(); + _menu.IngredientsListReagents.Clear(); + foreach (var reagent in reagents) { - _prototypeManager.TryIndex(item.ReagentId, out ReagentPrototype proto); - - _menu.IngredientsList.AddItem($"{item.Quantity} {proto.Name}"); + _prototypeManager.TryIndex(reagent.ReagentId, out ReagentPrototype proto); + var reagentAdded = _menu.IngredientsListReagents.AddItem($"{reagent.Quantity} {proto.Name}"); + var reagentIndex = _menu.IngredientsListReagents.IndexOf(reagentAdded); + _reagents.Add(reagentIndex, reagent); } _solids.Clear(); + _menu.IngredientsList.Clear(); foreach (var entityID in solids) { var entity = _entityManager.GetEntity(entityID); if (entity.TryGetComponent(out IconComponent icon)) { - var itemItem = _menu.IngredientsList.AddItem(entity.Name, icon.Icon.Default); + var solidItem = _menu.IngredientsList.AddItem(entity.Name, icon.Icon.Default); - var index = _menu.IngredientsList.IndexOf(itemItem); - _solids.Add(index, entityID); + var solidIndex = _menu.IngredientsList.IndexOf(solidItem); + _solids.Add(solidIndex, entityID); } diff --git a/Content.Client/GameObjects/Components/Kitchen/MicrowaveMenu.cs b/Content.Client/GameObjects/Components/Kitchen/MicrowaveMenu.cs index f267c30371..a2a9e02625 100644 --- a/Content.Client/GameObjects/Components/Kitchen/MicrowaveMenu.cs +++ b/Content.Client/GameObjects/Components/Kitchen/MicrowaveMenu.cs @@ -27,6 +27,8 @@ namespace Content.Client.GameObjects.Components.Kitchen private VBoxContainer CookTimeButtonVbox { get; } public ItemList IngredientsList { get;} + + public ItemList IngredientsListReagents { get; } private Label _cookTimeInfoLabel { get; } public MicrowaveMenu(MicrowaveBoundUserInterface owner = null) @@ -39,16 +41,31 @@ namespace Content.Client.GameObjects.Components.Kitchen SizeFlagsVertical = SizeFlags.Fill }; + IngredientsListReagents = new ItemList + { + SizeFlagsVertical = SizeFlags.FillExpand, + SizeFlagsHorizontal = SizeFlags.FillExpand, + SelectMode = ItemList.ItemListSelectMode.Button, + SizeFlagsStretchRatio = 2, + CustomMinimumSize = (100,128) + }; IngredientsList = new ItemList { SizeFlagsVertical = SizeFlags.FillExpand, SizeFlagsHorizontal = SizeFlags.FillExpand, SelectMode = ItemList.ItemListSelectMode.Button, - SizeFlagsStretchRatio = 8, - CustomMinimumSize = (200,256) + SizeFlagsStretchRatio = 2, + CustomMinimumSize = (100,128) }; - + + hSplit.AddChild(IngredientsListReagents); + //Padding between the lists. + hSplit.AddChild(new Control + { + CustomMinimumSize = (0,5), + }); + hSplit.AddChild(IngredientsList); var vSplit = new VBoxContainer diff --git a/Content.Server/GameObjects/Components/Kitchen/KitchenMicrowaveComponent.cs b/Content.Server/GameObjects/Components/Kitchen/KitchenMicrowaveComponent.cs index 6fcd84c124..14723c806d 100644 --- a/Content.Server/GameObjects/Components/Kitchen/KitchenMicrowaveComponent.cs +++ b/Content.Server/GameObjects/Components/Kitchen/KitchenMicrowaveComponent.cs @@ -145,7 +145,16 @@ namespace Content.Server.GameObjects.Components.Kitchen UpdateUserInterface(); } break; - + + case MicrowaveVaporizeReagentIndexedMessage msg: + if (HasContents) + { + _solution.TryRemoveReagent(msg.ReagentQuantity.ReagentId, msg.ReagentQuantity.Quantity); + ClickSound(); + UpdateUserInterface(); + } + break; + case MicrowaveSelectCookTimeMessage msg: _currentCookTimerTime = msg.newCookTime; ClickSound(); @@ -305,7 +314,11 @@ namespace Content.Server.GameObjects.Components.Kitchen private void VaporizeReagents() { _solution.RemoveAllSolution(); + } + private void VaporizeReagentWithIndex() + { + } private void VaporizeSolids() diff --git a/Content.Shared/Kitchen/SharedMicrowaveComponent.cs b/Content.Shared/Kitchen/SharedMicrowaveComponent.cs index 253e9302d4..31349c86b5 100644 --- a/Content.Shared/Kitchen/SharedMicrowaveComponent.cs +++ b/Content.Shared/Kitchen/SharedMicrowaveComponent.cs @@ -41,6 +41,17 @@ namespace Content.Shared.Kitchen EntityID = entityID; } } + + [Serializable, NetSerializable] + public class MicrowaveVaporizeReagentIndexedMessage : BoundUserInterfaceMessage + { + + public Solution.ReagentQuantity ReagentQuantity; + public MicrowaveVaporizeReagentIndexedMessage(Solution.ReagentQuantity reagentQuantity) + { + ReagentQuantity = reagentQuantity; + } + } [Serializable, NetSerializable] public class MicrowaveSelectCookTimeMessage : BoundUserInterfaceMessage {