Example #1
0
        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");
                    }
                }
            }
        }