Beispiel #1
0
        private void DrawBadge(BadgeInfo badge, bool left, float itemX, float itemY, float itemW, float itemH, out float offsetX)
        {
            // Badges don't look exactly like how game menus do it, but close enough

            // use checkbox texture to have a constant size, since different badges have different texture resolution
            UIMenu.GetTextureDrawSize(UIMenu.CommonTxd, UIMenu.CheckboxTickTextureName, out float badgeW, out float badgeH);

            const float Offset      = 0.00078125f * 2.5f;
            float       badgeOffset = (badgeW * 0.5f) + Offset;

            offsetX = badgeOffset + (0.00078125f * 8f);
            if (!badge.IsBlank)
            {
                Color c        = badge.ApplyForeColor ? CurrentForeColor : Color.White;
                float sizeMult = badge.SizeMultiplier;
                float badgeX   = left ?
                                 itemX + badgeOffset :
                                 itemX + itemW - badgeOffset;
                badge.GetTexture(Selected, out string txd, out string tex);
                if (badge.Style == BadgeStyle.Custom)
                {
                    // built-in badges have textures from 'commonmenu' txd which is already loaded by UIMenu,
                    // in the case of custom badges we don't know which txd is used so request it
                    N.RequestStreamedTextureDict(txd);
                    if (!N.HasStreamedTextureDictLoaded(txd))
                    {
                        return;
                    }
                }

                UIMenu.DrawSprite(
                    txd, tex,
                    badgeX,
                    itemY + (itemH * 0.5f),
                    badgeW * sizeMult,
                    badgeH * sizeMult,
                    c);
            }
        }