From 4f7deb8452c6b6522e1f423ade801244d69c1571 Mon Sep 17 00:00:00 2001 From: FL-OZ Date: Sun, 3 May 2020 03:09:54 -0500 Subject: [PATCH] Next up timer buttons --- .../Kitchen/MicrowaveBoundUserInterface.cs | 70 +++++++++++--- .../Components/Kitchen/MicrowaveMenu.cs | 94 +++++++++---------- .../Kitchen/KitchenMicrowaveComponent.cs | 7 +- .../Kitchen/SharedMicrowaveComponent.cs | 6 +- 4 files changed, 109 insertions(+), 68 deletions(-) diff --git a/Content.Client/GameObjects/Components/Kitchen/MicrowaveBoundUserInterface.cs b/Content.Client/GameObjects/Components/Kitchen/MicrowaveBoundUserInterface.cs index bb70363912..a9f676fc48 100644 --- a/Content.Client/GameObjects/Components/Kitchen/MicrowaveBoundUserInterface.cs +++ b/Content.Client/GameObjects/Components/Kitchen/MicrowaveBoundUserInterface.cs @@ -1,6 +1,14 @@ using Robust.Client.GameObjects.Components.UserInterface; using Content.Shared.Kitchen; using Robust.Shared.GameObjects.Components.UserInterface; +using Robust.Shared.IoC; +using Robust.Shared.Prototypes; +using Content.Shared.Chemistry; +using Robust.Shared.GameObjects; +using System.Collections.Generic; +using Robust.Shared.Interfaces.GameObjects; +using Robust.Client.UserInterface.Controls; +using Robust.Client.GameObjects; namespace Content.Client.GameObjects.Components.Kitchen { @@ -8,6 +16,8 @@ namespace Content.Client.GameObjects.Components.Kitchen { private MicrowaveMenu _menu; + private Dictionary _solids = new Dictionary(); + public MicrowaveBoundUserInterface(ClientUserInterfaceComponent owner, object uiKey) : base(owner,uiKey) { @@ -17,32 +27,70 @@ namespace Content.Client.GameObjects.Components.Kitchen { 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 => EjectSolidWithIndex(args.ItemIndex); } + protected override void Dispose(bool disposing) + { + base.Dispose(disposing); + if (!disposing) + { + return; + } + _solids?.Clear(); + _menu?.Dispose(); + } + + protected override void UpdateState(BoundUserInterfaceState state) { base.UpdateState(state); if (!(state is MicrowaveUpdateUserInterfaceState cstate)) + { return; - _menu.RefreshContentsDisplay(cstate.ReagentsReagents, cstate.ContainedSolids); + } + + RefreshContentsDisplay(cstate.ReagentsReagents, cstate.ContainedSolids); } - public void Cook() - { - SendMessage(new SharedMicrowaveComponent.MicrowaveStartCookMessage()); - } - - public void Eject() - { - SendMessage(new SharedMicrowaveComponent.MicrowaveEjectMessage()); - } public void EjectSolidWithIndex(int index) { - SendMessage(new SharedMicrowaveComponent.MicrowaveEjectSolidIndexedMessage(index)); + SendMessage(new SharedMicrowaveComponent.MicrowaveEjectSolidIndexedMessage(_solids[index])); + } + + public void RefreshContentsDisplay(List reagents, List solids) + { + _menu.IngredientsList.Clear(); + foreach (var item in reagents) + { + IoCManager.Resolve().TryIndex(item.ReagentId, out ReagentPrototype proto); + + _menu.IngredientsList.AddItem($"{item.Quantity} {proto.Name}"); + } + + _solids.Clear(); + foreach (var entityID in solids) + { + var entity = IoCManager.Resolve().GetEntity(entityID); + + if (entity.TryGetComponent(out IconComponent icon)) + { + var itemItem = _menu.IngredientsList.AddItem(entity.Name, icon.Icon.Default); + + var index = _menu.IngredientsList.IndexOf(itemItem); + _solids.Add(index, entityID); + } + + + } + } } } diff --git a/Content.Client/GameObjects/Components/Kitchen/MicrowaveMenu.cs b/Content.Client/GameObjects/Components/Kitchen/MicrowaveMenu.cs index 828b06ad25..1c43d5cdac 100644 --- a/Content.Client/GameObjects/Components/Kitchen/MicrowaveMenu.cs +++ b/Content.Client/GameObjects/Components/Kitchen/MicrowaveMenu.cs @@ -17,79 +17,73 @@ namespace Content.Client.GameObjects.Components.Kitchen private MicrowaveBoundUserInterface Owner { get; set; } - private List _heldReagents; + public Button StartButton { get;} + public Button EjectButton { get;} - private VBoxContainer InnerScrollContainer { get; set; } + public GridContainer TimerButtons { get; } + + public ItemList IngredientsList { get;} public MicrowaveMenu(MicrowaveBoundUserInterface owner = null) { Owner = owner; - _heldReagents = new List(); Title = Loc.GetString("Microwave"); - var vbox = new VBoxContainer() + var hSplit = new HSplitContainer { + SizeFlagsHorizontal = SizeFlags.Fill, SizeFlagsVertical = SizeFlags.Fill }; - var startButton = new Button() + + IngredientsList = new ItemList { - Label = { Text = Loc.GetString("START"), FontColorOverride = Color.Green} - }; - var ejectButton = new Button() - { - Label = { Text = Loc.GetString("EJECT REAGENTS"),FontColorOverride = Color.Red} - }; - var scrollContainer = new ScrollContainer() - { - SizeFlagsVertical = SizeFlags.FillExpand + SizeFlagsVertical = SizeFlags.Expand, + SelectMode = ItemList.ItemListSelectMode.Button, + SizeFlagsStretchRatio = 8, + CustomMinimumSize = (100,100) }; - InnerScrollContainer = new VBoxContainer() + hSplit.AddChild(IngredientsList); + + var vSplit = new VSplitContainer(); + hSplit.AddChild(vSplit); + + var buttonGridContainer = new GridContainer { - SizeFlagsVertical = SizeFlags.FillExpand + Columns = 2, + }; + StartButton = new Button + { + Text = Loc.GetString("START"), + }; + EjectButton = new Button + { + Text = Loc.GetString("EJECT CONTENTS"), + }; + buttonGridContainer.AddChild(StartButton); + buttonGridContainer.AddChild(EjectButton); + vSplit.AddChild(buttonGridContainer); + + + TimerButtons = new GridContainer + { + Columns = 5, + }; - scrollContainer.AddChild(InnerScrollContainer); - vbox.AddChild(startButton); - vbox.AddChild(ejectButton); - vbox.AddChild(scrollContainer); - Contents.AddChild(vbox); - startButton.OnPressed += args => Owner.Cook(); - ejectButton.OnPressed += args => Owner.Eject(); + vSplit.AddChild(TimerButtons); + + + Contents.AddChild(hSplit); + } - public void RefreshContentsDisplay(List reagents, List solids) - { - InnerScrollContainer.RemoveAllChildren(); - foreach (var item in reagents) - { - IoCManager.Resolve().TryIndex(item.ReagentId, out ReagentPrototype proto); - - InnerScrollContainer.AddChild(new Label() - { - Text = $"{item.Quantity} {proto.Name}" - }); - } - - foreach (var item in solids) - { - var name = IoCManager.Resolve().GetEntity(item).Prototype.Name; - var solidButton = new Button() - { - Text = $"{name}" - }; - - solidButton.OnPressed += args => Owner.EjectSolidWithIndex(solids.IndexOf(item)); - InnerScrollContainer.AddChild(solidButton); - } - - } + protected override void Dispose(bool disposing) { base.Dispose(disposing); - InnerScrollContainer.Dispose(); } } } diff --git a/Content.Server/GameObjects/Components/Kitchen/KitchenMicrowaveComponent.cs b/Content.Server/GameObjects/Components/Kitchen/KitchenMicrowaveComponent.cs index 7b72081d1c..d678c7f7e6 100644 --- a/Content.Server/GameObjects/Components/Kitchen/KitchenMicrowaveComponent.cs +++ b/Content.Server/GameObjects/Components/Kitchen/KitchenMicrowaveComponent.cs @@ -112,7 +112,7 @@ namespace Content.Server.GameObjects.Components.Kitchen break; case MicrowaveEjectSolidIndexedMessage msg: - EjectIndexedSolid(msg.index); + EjectIndexedSolid(msg.EntityID); UpdateUserInterface(); break; } @@ -272,10 +272,9 @@ namespace Content.Server.GameObjects.Components.Kitchen _solids.Clear(); } - private void EjectIndexedSolid(int index) + private void EjectIndexedSolid(EntityUid entityID) { - var entityToRemove = _storage.ContainedEntities.ToArray()[index]; - _storage.Remove(entityToRemove); + _storage.Remove(_entityManager.GetEntity(entityID)); } diff --git a/Content.Shared/Kitchen/SharedMicrowaveComponent.cs b/Content.Shared/Kitchen/SharedMicrowaveComponent.cs index bbe20d244b..4c9860dc43 100644 --- a/Content.Shared/Kitchen/SharedMicrowaveComponent.cs +++ b/Content.Shared/Kitchen/SharedMicrowaveComponent.cs @@ -38,10 +38,10 @@ namespace Content.Shared.Kitchen public class MicrowaveEjectSolidIndexedMessage : BoundUserInterfaceMessage { - public int index; - public MicrowaveEjectSolidIndexedMessage(int i) + public EntityUid EntityID; + public MicrowaveEjectSolidIndexedMessage(EntityUid entityID) { - index = i; + EntityID = entityID; } } }