protected override void DrawSelf(SpriteBatch spriteBatch) { spriteBatch.DrawSlot(Dimensions, Color.White, backgroundTexture); float scale = Math.Min(Dimensions.Width / backgroundTexture.Width, Dimensions.Height / backgroundTexture.Height); if (!Item.IsAir) { Texture2D itemTexture = Main.itemTexture[Item.type]; Rectangle rect = Main.itemAnimations[Item.type] != null ? Main.itemAnimations[Item.type].GetFrame(itemTexture) : itemTexture.Frame(); Color newColor = Color.White; float pulseScale = 1f; ItemSlot.GetItemLight(ref newColor, ref pulseScale, Item); int height = rect.Height; int width = rect.Width; float drawScale = 1f; float availableWidth = InnerDimensions.Width; if (width > availableWidth || height > availableWidth) { if (width > height) { drawScale = availableWidth / width; } else { drawScale = availableWidth / height; } } drawScale *= scale; Vector2 vector = backgroundTexture.Size() * scale; Vector2 position2 = Dimensions.Position() + vector / 2f - rect.Size() * drawScale / 2f; Vector2 origin = rect.Size() * (pulseScale / 2f - 0.5f); if (ItemLoader.PreDrawInInventory(Item, spriteBatch, position2, rect, Item.GetAlpha(newColor), Item.GetColor(Color.White), origin, drawScale * pulseScale)) { spriteBatch.Draw(itemTexture, position2, rect, Item.GetAlpha(newColor), 0f, origin, drawScale * pulseScale, SpriteEffects.None, 0f); if (Item.color != Color.Transparent) { spriteBatch.Draw(itemTexture, position2, rect, Item.GetColor(Color.White), 0f, origin, drawScale * pulseScale, SpriteEffects.None, 0f); } } ItemLoader.PostDrawInInventory(Item, spriteBatch, position2, rect, Item.GetAlpha(newColor), Item.GetColor(Color.White), origin, drawScale * pulseScale); if (ItemID.Sets.TrapSigned[Item.type]) { spriteBatch.Draw(Main.wireTexture, Dimensions.Position() + new Vector2(40f, 40f) * scale, new Rectangle(4, 58, 8, 8), Color.White, 0f, new Vector2(4f), 1f, SpriteEffects.None, 0f); } if (Stack > 1) { ChatManager.DrawColorCodedStringWithShadow(spriteBatch, Main.fontItemStack, Stack < 1000 ? Stack.ToString() : Stack.ToSI("N0"), Dimensions.Position() + new Vector2(10f, 26f) * scale, Color.White, 0f, Vector2.Zero, new Vector2(scale), -1f, scale); } if (IsMouseHovering) { Main.LocalPlayer.showItemIcon = false; Main.ItemIconCacheUpdate(0); Main.HoverItem = Item.Clone(); Main.HoverItem.stack = Stack; Main.hoverItemName = Main.HoverItem.Name; if (ItemSlot.ShiftInUse) { Hooking.SetCursor("Terraria/UI/Cursor_7"); } } } }