From 5a69877fe7e4fabd07d059523d72e46c63797be3 Mon Sep 17 00:00:00 2001 From: Ed <96445749+TheShuEd@users.noreply.github.com> Date: Thu, 17 Apr 2025 03:42:22 +0300 Subject: [PATCH] storedOffset bugfix (#33606) * Update ItemGridPiece.cs * Update SharedItemSystem.cs * Update ItemGridPiece.cs * EmoGarbage Review --------- Co-authored-by: EmoGarbage404 --- .../Systems/Storage/Controls/ItemGridPiece.cs | 8 +++++--- Content.Shared/Item/SharedItemSystem.cs | 14 ++++++++++++++ 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/Content.Client/UserInterface/Systems/Storage/Controls/ItemGridPiece.cs b/Content.Client/UserInterface/Systems/Storage/Controls/ItemGridPiece.cs index f4c4158b5c..92035ba8d9 100644 --- a/Content.Client/UserInterface/Systems/Storage/Controls/ItemGridPiece.cs +++ b/Content.Client/UserInterface/Systems/Storage/Controls/ItemGridPiece.cs @@ -163,14 +163,16 @@ public sealed class ItemGridPiece : Control, IEntityControl } // typically you'd divide by two, but since the textures are half a tile, this is done implicitly - var iconPosition = new Vector2((boundingGrid.Width + 1) * size.X + itemComponent.StoredOffset.X * 2, - (boundingGrid.Height + 1) * size.Y + itemComponent.StoredOffset.Y * 2); + var iconOffset = Location.Rotation.RotateVec(itemComponent.StoredOffset) * 2 * UIScale; + var iconPosition = new Vector2( + (boundingGrid.Width + 1) * size.X + iconOffset.X, + (boundingGrid.Height + 1) * size.Y + iconOffset.Y); var iconRotation = Location.Rotation + Angle.FromDegrees(itemComponent.StoredRotation); if (itemComponent.StoredSprite is { } storageSprite) { var scale = 2 * UIScale; - var offset = (((Box2) boundingGrid).Size - Vector2.One) * size; + var offset = (((Box2) boundingGrid).Size - Vector2.One) * size + iconOffset; var sprite = _entityManager.System().Frame0(storageSprite); var spriteBox = new Box2Rotated(new Box2(0f, sprite.Height * scale, sprite.Width * scale, 0f), -iconRotation, Vector2.Zero); diff --git a/Content.Shared/Item/SharedItemSystem.cs b/Content.Shared/Item/SharedItemSystem.cs index a058cb8658..8ba26fd349 100644 --- a/Content.Shared/Item/SharedItemSystem.cs +++ b/Content.Shared/Item/SharedItemSystem.cs @@ -55,6 +55,20 @@ public abstract class SharedItemSystem : EntitySystem Dirty(uid, component); } + /// + /// Sets the offset used for the item's sprite inside the storage UI. + /// Dirties. + /// + [PublicAPI] + public void SetStoredOffset(EntityUid uid, Vector2i newOffset, ItemComponent? component = null) + { + if (!Resolve(uid, ref component, false)) + return; + + component.StoredOffset = newOffset; + Dirty(uid, component); + } + public void SetHeldPrefix(EntityUid uid, string? heldPrefix, bool force = false, ItemComponent? component = null) { if (!Resolve(uid, ref component, false)) -- 2.51.2