feat(inventory): Add secondary smart-equip star (#25696)

* feat(inventory): Add secondary quick-remove star

* style: Fix end of file newline

* feat(inventory): Change secondary smart-equip star to silver star

* feat(inventory): Decrease secondary quick-equip star luminosity to better match the primary
This commit is contained in:
exincore
2024-03-02 17:57:42 -06:00
committed by GitHub
parent 10cf94859b
commit c8cc806a8f
4 changed files with 33 additions and 9 deletions

View File

@@ -18,7 +18,7 @@ public sealed class ItemGridPiece : Control
public readonly EntityUid Entity; public readonly EntityUid Entity;
public ItemStorageLocation Location; public ItemStorageLocation Location;
public bool Marked = false; public ItemGridPieceMarks? Marked;
public event Action<GUIBoundKeyEventArgs, ItemGridPiece>? OnPiecePressed; public event Action<GUIBoundKeyEventArgs, ItemGridPiece>? OnPiecePressed;
public event Action<GUIBoundKeyEventArgs, ItemGridPiece>? OnPieceUnpressed; public event Action<GUIBoundKeyEventArgs, ItemGridPiece>? OnPieceUnpressed;
@@ -42,8 +42,10 @@ public sealed class ItemGridPiece : Control
private Texture? _bottomLeftTexture; private Texture? _bottomLeftTexture;
private readonly string _bottomRightTexturePath = "Storage/piece_bottomRight"; private readonly string _bottomRightTexturePath = "Storage/piece_bottomRight";
private Texture? _bottomRightTexture; private Texture? _bottomRightTexture;
private readonly string _markedTexturePath = "Storage/marked"; private readonly string _markedFirstTexturePath = "Storage/marked_first";
private Texture? _markedTexture; private Texture? _markedFirstTexture;
private readonly string _markedSecondTexturePath = "Storage/marked_second";
private Texture? _markedSecondTexture;
#endregion #endregion
public ItemGridPiece(Entity<ItemComponent> entity, ItemStorageLocation location, IEntityManager entityManager) public ItemGridPiece(Entity<ItemComponent> entity, ItemStorageLocation location, IEntityManager entityManager)
@@ -88,7 +90,8 @@ public sealed class ItemGridPiece : Control
_topRightTexture = Theme.ResolveTextureOrNull(_topRightTexturePath)?.Texture; _topRightTexture = Theme.ResolveTextureOrNull(_topRightTexturePath)?.Texture;
_bottomLeftTexture = Theme.ResolveTextureOrNull(_bottomLeftTexturePath)?.Texture; _bottomLeftTexture = Theme.ResolveTextureOrNull(_bottomLeftTexturePath)?.Texture;
_bottomRightTexture = Theme.ResolveTextureOrNull(_bottomRightTexturePath)?.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) 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) //yeah, this coloring is kinda hardcoded. deal with it. B)
Color? colorModulate = hovering ? null : Color.FromHex("#a8a8a8"); Color? colorModulate = hovering ? null : Color.FromHex("#a8a8a8");
var marked = Marked; var marked = Marked != null;
Vector2i? maybeMarkedPos = null; Vector2i? maybeMarkedPos = null;
_texturesPositions.Clear(); _texturesPositions.Clear();
@@ -189,9 +192,19 @@ public sealed class ItemGridPiece : Control
overrideDirection: Direction.South); 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); return actualSize * new Vector2i(8, 8);
} }
} }
public enum ItemGridPieceMarks
{
First,
Second,
}

View File

@@ -249,7 +249,7 @@ public sealed class StorageContainer : BaseWindow
var boundingGrid = storageComp.Grid.GetBoundingBox(); var boundingGrid = storageComp.Grid.GetBoundingBox();
var size = _emptyTexture!.Size * 2; 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. //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) var gridPiece = new ItemGridPiece((itemEnt, itemEntComponent), itemPos, _entity)
{ {
MinSize = size, MinSize = size,
Marked = itemEnt == lastEntity Marked = Array.IndexOf(containedEntities, itemEnt) switch
{
0 => ItemGridPieceMarks.First,
1 => ItemGridPieceMarks.Second,
_ => null,
}
}; };
gridPiece.OnPiecePressed += OnPiecePressed; gridPiece.OnPiecePressed += OnPiecePressed;
gridPiece.OnPieceUnpressed += OnPieceUnpressed; gridPiece.OnPieceUnpressed += OnPieceUnpressed;

View File

Before

Width:  |  Height:  |  Size: 134 B

After

Width:  |  Height:  |  Size: 134 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 146 B