////////////////

        public void DrawHUD(BetterPaintMod mymod, SpriteBatch sb, PaintBlasterItem myblaster)
        {
            int x = mymod.Config.HudPaintAmmoOffsetX >= 0 ?
                    mymod.Config.HudPaintAmmoOffsetX :
                    (Main.screenWidth + mymod.Config.HudPaintAmmoOffsetX);
            int y = mymod.Config.HudPaintAmmoOffsetY >= 0 ?
                    mymod.Config.HudPaintAmmoOffsetY :
                    (Main.screenHeight + mymod.Config.HudPaintAmmoOffsetY);

            sb.Draw(PaintBlasterHUD.AmmoCan, new Vector2(x, y), Color.White);

            Item paintItem = myblaster.GetCurrentPaintItem();

            if (paintItem != null)
            {
                BlasterPaintType paintType  = PaintBlasterHelpers.GetPaintType(paintItem);
                Color            paintColor = PaintBlasterHelpers.GetPaintColor(paintItem);
                float            quantity   = PaintBlasterHelpers.GetPaintAmount(paintItem);
                float            capacity   = paintType == BlasterPaintType.Can ?
                                              (float)paintItem.maxStack :
                                              (float)mymod.Config.PaintCartridgeCapacity;

                float capacityPercent = quantity / capacity;

                int height = (int)(capacityPercent * 50f) * 2;
                int top    = 100 - height;

                Color color = capacityPercent >= 0.01f ? paintColor : paintColor * 0.25f;

                sb.Draw(PaintBlasterHUD.AmmoTop, new Vector2(x, y + 16 + top), color);
                sb.Draw(PaintBlasterHUD.AmmoBot, new Vector2(x, y + 124), color);
                sb.Draw(Main.magicPixel, new Rectangle(x + 4, y + 24 + top, 16, height), color);

                if (Main.mouseX >= x && Main.mouseX < (x + PaintBlasterHUD.AmmoCan.Width))
                {
                    if (Main.mouseY >= y && Main.mouseY < (y + PaintBlasterHUD.AmmoCan.Height))
                    {
                        string percentStr = capacityPercent.ToString("P", CultureInfo.InvariantCulture);

                        Utils.DrawBorderStringFourWay(sb, Main.fontMouseText, percentStr, Main.mouseX - 40, Main.mouseY + 16, Color.White, Color.Black, default(Vector2), 1f);
                    }
                }
            }
            else
            {
                if (Main.mouseX >= x && Main.mouseX < (x + PaintBlasterHUD.AmmoCan.Width))
                {
                    if (Main.mouseY >= y && Main.mouseY < (y + PaintBlasterHUD.AmmoCan.Height))
                    {
                        string str = "Color Cartridge needed";

                        Utils.DrawBorderStringFourWay(sb, Main.fontMouseText, str, Main.mouseX - 160, Main.mouseY + 16, Color.White, Color.Black, default(Vector2), 1f);
                    }
                }
            }
        }
        public static IDictionary <string, PaintDisplayInfo> GetPaintSelection(Player player)
        {
            var         mymod     = BetterPaintMod.Instance;
            IList <int> paintIdxs = new List <int>();

            Item[] inv = player.inventory;

            for (int i = 0; i < inv.Length; i++)
            {
                Item item = inv[i];
                if (item == null || item.IsAir)
                {
                    continue;
                }

                if (PaintBlasterHelpers.IsPaint(item))
                {
                    paintIdxs.Add(i);
                }
            }

            var paintInfo = new Dictionary <string, PaintDisplayInfo>(paintIdxs.Count);

            foreach (int idx in paintIdxs)
            {
                Item item = Main.LocalPlayer.inventory[idx];
                if (PaintBlasterHelpers.GetPaintAmount(item) <= 0)
                {
                    continue;
                }

                string key = PaintBlasterHelpers.GetPaintColor(item).ToString() + "_" + PaintBlasterHelpers.GetPaintType(item);

                if (!paintInfo.ContainsKey(key))
                {
                    paintInfo[key] = new PaintDisplayInfo(idx, item);
                }
                else
                {
                    paintInfo[key].Copies++;
                }
            }

            return(paintInfo);
        }