Esempio n. 1
0
    public void PushIcon(HUDTilteType titleType, int nSpriteID)
    {
        HudTitleAttribute titleAttrib = HudSetting.Instance.TitleSets[(int)titleType].GetTitle(0);

        UISpriteInfo sp      = CAtlasMng.instance.GetSafeSpriteByID(nSpriteID);
        int          nWidth  = 0;
        int          nHeight = 0;
        int          nStart  = m_aSprite.size;

        if (sp != null)
        {
            nWidth  = (int)sp.outer.width;
            nHeight = (int)sp.outer.height;
            PushSprite(nSpriteID, nWidth, nHeight, 0.0f, titleAttrib.SpriteOffsetY);
        }
        if (m_TitleLine[m_nTitleNumb] == null)
        {
            m_TitleLine[m_nTitleNumb] = new HUDTilteLine();
        }
        m_TitleLine[m_nTitleNumb].m_nType       = titleType;
        m_TitleLine[m_nTitleNumb].m_fWidth      = nWidth;
        m_TitleLine[m_nTitleNumb].m_nHeight     = nHeight;
        m_TitleLine[m_nTitleNumb].m_nStart      = nStart;
        m_TitleLine[m_nTitleNumb].m_nEnd        = m_aSprite.size;
        m_TitleLine[m_nTitleNumb].m_szText      = string.Empty;
        m_TitleLine[m_nTitleNumb].m_nColorIndex = 0;
        m_TitleLine[m_nTitleNumb].m_nLine       = m_nLines;
        m_TitleLine[m_nTitleNumb].m_nSpriteID   = nSpriteID;

        if (titleAttrib.AlignType == HUDAlignType.align_center)
        {
            m_fCurLineWidth = nWidth;
        }
        nHeight += titleAttrib.SpriteReduceHeight;
        if (nHeight < titleAttrib.LockMaxHeight && titleAttrib.LockMaxHeight > 0)
        {
            nHeight = titleAttrib.LockMaxHeight;
        }
        if (m_fCurLineHeight < nHeight)
        {
            m_fCurLineHeight = nHeight;
        }
        ++m_nTitleNumb;
    }
Esempio n. 2
0
    // 必须先有居中的
    public void PushTitle(string szText, HUDTilteType titleType, int nColorIndex)
    {
        if (m_nTitleNumb >= m_TitleLine.Length)
        {
            return;
        }

        UIFont        mFont        = GetHUDTitleFont();
        CharacterInfo tempCharInfo = new CharacterInfo();

        HudTitleAttribute titleAttrib = HudSetting.Instance.TitleSets[(int)titleType].GetTitle(nColorIndex);
        int nLineGap = titleAttrib.LineGap;
        int nCharGap = titleAttrib.CharGap;

        HUDTextParse hudParse = HUDTextParse.Instance;

        hudParse.ParseText(szText);
        mFont.PrepareQueryText(hudParse.m_szText);

        HudTitleAttribute.Effect nStyle = titleAttrib.Style;
        int nSpriteCount = hudParse.m_SpriteCount;

        HUDCharInfo[] Sprites = hudParse.m_Sprites;
        char          ch;
        float         fShadowX     = titleAttrib.OffsetX;
        float         fShadowY     = titleAttrib.OffsetY;
        float         fx           = 0.0f;
        Color32       clrLeftUp    = titleAttrib.clrLeftUp;
        Color32       clrLeftDown  = titleAttrib.clrLeftDown;
        Color32       clrRightUp   = titleAttrib.clrRightUp;
        Color32       clrRightDown = titleAttrib.clrRightDown;
        Color32       clrShadow    = titleAttrib.clrShadow;
        Color32       clrCustom;

        int nStart       = m_aSprite.size;
        int nHeight      = mFont.GetFontHeight();
        int nFontH       = titleAttrib.Height;
        int nFontOffsetY = titleAttrib.FontOffsetY;
        int nY           = 0;

        for (int i = 0; i < nSpriteCount; ++i)
        {
            if (Sprites[i].bChar)
            {
                ch = Sprites[i].ch;
                mFont.GetCharacterInfo(ch, ref tempCharInfo);
                nY = (tempCharInfo.glyphHeight - nFontH) / 2 + nFontOffsetY;

                if (nStyle != HudTitleAttribute.Effect.None)
                {
                    PushShadow(ref tempCharInfo, ch, fx, nY, clrShadow, fShadowX, fShadowY);
                    if (nStyle == HudTitleAttribute.Effect.Outline)
                    {
                        PushShadow(ref tempCharInfo, ch, fx, nY, clrShadow, fShadowX, -fShadowY);
                        PushShadow(ref tempCharInfo, ch, fx, nY, clrShadow, -fShadowX, fShadowY);
                        PushShadow(ref tempCharInfo, ch, fx, nY, clrShadow, -fShadowX, -fShadowY);
                    }
                }
                if (Sprites[i].bCustomColor)
                {
                    clrCustom = Sprites[i].CustomColor;
                    HUDVertex node = PushChar(ref tempCharInfo, ch, fx, nY, clrCustom, clrCustom, clrCustom, clrCustom);
                    fx += node.width + nCharGap;
                }
                else
                {
                    HUDVertex node = PushChar(ref tempCharInfo, ch, fx, nY, clrLeftUp, clrLeftDown, clrRightUp, clrRightDown);
                    fx += node.width + nCharGap;
                }
            }
            else
            {
                // 图片
                if (Sprites[i].CharType == UIFontUnitType.UnitType_Icon)
                {
                    HUDVertex node = PushSprite(Sprites[i].SpriteID, Sprites[i].SpriteWidth, Sprites[i].SpriteHeight, fx, titleAttrib.SpriteOffsetY);
                    fx += node.width + nCharGap;
                    if (nHeight < node.height - titleAttrib.SpriteReduceHeight)
                    {
                        nHeight = node.height - titleAttrib.SpriteReduceHeight;
                    }
                }
            }
        }

        if (m_TitleLine[m_nTitleNumb] == null)
        {
            m_TitleLine[m_nTitleNumb] = new HUDTilteLine();
        }
        m_TitleLine[m_nTitleNumb].m_nType       = titleType;
        m_TitleLine[m_nTitleNumb].m_fWidth      = fx - nCharGap;
        m_TitleLine[m_nTitleNumb].m_nHeight     = nHeight;
        m_TitleLine[m_nTitleNumb].m_nStart      = nStart;
        m_TitleLine[m_nTitleNumb].m_nEnd        = m_aSprite.size;
        m_TitleLine[m_nTitleNumb].m_szText      = szText;
        m_TitleLine[m_nTitleNumb].m_szValidText = hudParse.m_szText;
        m_TitleLine[m_nTitleNumb].m_nColorIndex = nColorIndex;
        m_TitleLine[m_nTitleNumb].m_nLine       = m_nLines;
        m_TitleLine[m_nTitleNumb].m_nSpriteID   = 0;

        if (titleAttrib.AlignType == HUDAlignType.align_center)
        {
            m_fCurLineWidth = fx - nCharGap;
        }
        if (nHeight < titleAttrib.LockMaxHeight && titleAttrib.LockMaxHeight > 0)
        {
            nHeight = titleAttrib.LockMaxHeight;
        }
        if (m_fCurLineHeight < nHeight)
        {
            m_fCurLineHeight = nHeight;
        }
        ++m_nTitleNumb;
    }