diff --git a/Content.Client/UserInterface/Systems/Storage/Controls/ItemGridPiece.cs b/Content.Client/UserInterface/Systems/Storage/Controls/ItemGridPiece.cs index 8b51a3f219..f436cc8c39 100644 --- a/Content.Client/UserInterface/Systems/Storage/Controls/ItemGridPiece.cs +++ b/Content.Client/UserInterface/Systems/Storage/Controls/ItemGridPiece.cs @@ -18,7 +18,7 @@ public sealed class ItemGridPiece : Control public readonly EntityUid Entity; public ItemStorageLocation Location; - public bool Marked = false; + public ItemGridPieceMarks? Marked; public event Action? OnPiecePressed; public event Action? OnPieceUnpressed; @@ -42,8 +42,10 @@ public sealed class ItemGridPiece : Control private Texture? _bottomLeftTexture; private readonly string _bottomRightTexturePath = "Storage/piece_bottomRight"; private Texture? _bottomRightTexture; - private readonly string _markedTexturePath = "Storage/marked"; - private Texture? _markedTexture; + private readonly string _markedFirstTexturePath = "Storage/marked_first"; + private Texture? _markedFirstTexture; + private readonly string _markedSecondTexturePath = "Storage/marked_second"; + private Texture? _markedSecondTexture; #endregion public ItemGridPiece(Entity entity, ItemStorageLocation location, IEntityManager entityManager) @@ -88,7 +90,8 @@ public sealed class ItemGridPiece : Control _topRightTexture = Theme.ResolveTextureOrNull(_topRightTexturePath)?.Texture; _bottomLeftTexture = Theme.ResolveTextureOrNull(_bottomLeftTexturePath)?.Texture; _bottomRightTexture = Theme.ResolveTextureOrNull(_bottomRightTexturePath)?.Texture; - _markedTexture = Theme.ResolveTextureOrNull(_markedTexturePath)?.Texture; + _markedFirstTexture = Theme.ResolveTextureOrNull(_markedFirstTexturePath)?.Texture; + _markedSecondTexture = Theme.ResolveTextureOrNull(_markedSecondTexturePath)?.Texture; } protected override void Draw(DrawingHandleScreen handle) @@ -113,7 +116,7 @@ public sealed class ItemGridPiece : Control //yeah, this coloring is kinda hardcoded. deal with it. B) Color? colorModulate = hovering ? null : Color.FromHex("#a8a8a8"); - var marked = Marked; + var marked = Marked != null; Vector2i? maybeMarkedPos = null; _texturesPositions.Clear(); @@ -189,9 +192,19 @@ public sealed class ItemGridPiece : Control overrideDirection: Direction.South); } - if (maybeMarkedPos is {} markedPos && _markedTexture != null) + if (maybeMarkedPos is {} markedPos) { - handle.DrawTextureRect(_markedTexture, new UIBox2(markedPos, markedPos + size)); + var markedTexture = Marked switch + { + ItemGridPieceMarks.First => _markedFirstTexture, + ItemGridPieceMarks.Second => _markedSecondTexture, + _ => null, + }; + + if (markedTexture != null) + { + handle.DrawTextureRect(markedTexture, new UIBox2(markedPos, markedPos + size)); + } } } @@ -275,3 +288,9 @@ public sealed class ItemGridPiece : Control return actualSize * new Vector2i(8, 8); } } + +public enum ItemGridPieceMarks +{ + First, + Second, +} diff --git a/Content.Client/UserInterface/Systems/Storage/Controls/StorageContainer.cs b/Content.Client/UserInterface/Systems/Storage/Controls/StorageContainer.cs index 53a820edaa..bd952fe957 100644 --- a/Content.Client/UserInterface/Systems/Storage/Controls/StorageContainer.cs +++ b/Content.Client/UserInterface/Systems/Storage/Controls/StorageContainer.cs @@ -249,7 +249,7 @@ public sealed class StorageContainer : BaseWindow var boundingGrid = storageComp.Grid.GetBoundingBox(); var size = _emptyTexture!.Size * 2; - var lastEntity = storageComp.Container.ContainedEntities.LastOrDefault(); + var containedEntities = storageComp.Container.ContainedEntities.Reverse().ToArray(); //todo. at some point, we may want to only rebuild the pieces that have actually received new data. @@ -277,7 +277,12 @@ public sealed class StorageContainer : BaseWindow var gridPiece = new ItemGridPiece((itemEnt, itemEntComponent), itemPos, _entity) { MinSize = size, - Marked = itemEnt == lastEntity + Marked = Array.IndexOf(containedEntities, itemEnt) switch + { + 0 => ItemGridPieceMarks.First, + 1 => ItemGridPieceMarks.Second, + _ => null, + } }; gridPiece.OnPiecePressed += OnPiecePressed; gridPiece.OnPieceUnpressed += OnPieceUnpressed; diff --git a/Resources/Textures/Interface/Default/Storage/marked.png b/Resources/Textures/Interface/Default/Storage/marked_first.png similarity index 100% rename from Resources/Textures/Interface/Default/Storage/marked.png rename to Resources/Textures/Interface/Default/Storage/marked_first.png diff --git a/Resources/Textures/Interface/Default/Storage/marked_second.png b/Resources/Textures/Interface/Default/Storage/marked_second.png new file mode 100644 index 0000000000..26314b47e6 Binary files /dev/null and b/Resources/Textures/Interface/Default/Storage/marked_second.png differ