diff --git a/Content.Client/UserInterface/ItemSlotButton.cs b/Content.Client/UserInterface/ItemSlotButton.cs index cb68416c09..1438b48c88 100644 --- a/Content.Client/UserInterface/ItemSlotButton.cs +++ b/Content.Client/UserInterface/ItemSlotButton.cs @@ -12,6 +12,7 @@ namespace Content.Client.UserInterface { public TextureRect Button { get; } public SpriteView SpriteView { get; } + public SpriteView HoverSpriteView { get; } public BaseButton StorageButton { get; } public CooldownGraphic CooldownDisplay { get; } @@ -19,7 +20,7 @@ namespace Content.Client.UserInterface public Action OnStoragePressed { get; set; } public Action OnHover { get; set; } - public bool EntityHover { get; set; } = false; + public bool EntityHover => HoverSpriteView.Sprite != null; public bool MouseIsHovering = false; public ItemSlotButton(Texture texture, Texture storageTexture) @@ -41,6 +42,12 @@ namespace Content.Client.UserInterface OverrideDirection = Direction.South }); + AddChild(HoverSpriteView = new SpriteView + { + Scale = (2, 2), + OverrideDirection = Direction.South + }); + AddChild(StorageButton = new TextureButton { TextureNormal = storageTexture, @@ -69,13 +76,7 @@ namespace Content.Client.UserInterface Button.OnMouseExited += _ => { MouseIsHovering = false; - if (EntityHover) - { - SpriteView.Sprite?.Owner.Delete(); - EntityHover = false; - SpriteView.Sprite = null; - StorageButton.Visible = false; - } + ClearHover(); }; AddChild(CooldownDisplay = new CooldownGraphic @@ -86,6 +87,15 @@ namespace Content.Client.UserInterface }); } + public void ClearHover() + { + if (EntityHover) + { + HoverSpriteView.Sprite?.Owner.Delete(); + HoverSpriteView.Sprite = null; + } + } + private void OnButtonPressed(GUIBoundKeyEventArgs args) { OnPressed?.Invoke(args); diff --git a/Content.Client/UserInterface/ItemSlotManager.cs b/Content.Client/UserInterface/ItemSlotManager.cs index 3c0170af84..ff8872553d 100644 --- a/Content.Client/UserInterface/ItemSlotManager.cs +++ b/Content.Client/UserInterface/ItemSlotManager.cs @@ -47,7 +47,8 @@ namespace Content.Client.UserInterface { if (!entity.TryGetComponent(out ISpriteComponent sprite)) return false; - button.EntityHover = false; + + button.ClearHover(); button.SpriteView.Sprite = sprite; button.StorageButton.Visible = entity.HasComponent(); } @@ -132,9 +133,7 @@ namespace Content.Client.UserInterface { if (entity == null || !button.MouseIsHovering) { - button.SpriteView.Sprite?.Owner.Delete(); - button.SpriteView.Sprite = null; - button.StorageButton.Visible = false; + button.ClearHover(); return; } @@ -149,9 +148,7 @@ namespace Content.Client.UserInterface hoverSprite.CopyFrom(entity.GetComponent()); hoverSprite.Color = fits ? new Color(0, 255, 0, 127) : new Color(255, 0, 0, 127); - button.EntityHover = true; - button.SpriteView.Sprite = hoverSprite; - button.StorageButton.Visible = entity.HasComponent(); + button.HoverSpriteView.Sprite = hoverSprite; } } }