Ejemplo n.º 1
0
    private void _Parse()
    {
        for (int i = 0; i < this.m_Symbols.Count; i++)
        {
            this.m_Symbols[i].Recycle();
        }
        this.m_Symbols.Clear();
        this.m_Label.text = string.Empty;
        this.m_Label.ProcessText();
        this.m_Label.UpdateDefaultPrintedSize();
        if (this._UniSpaceWidth < 0f)
        {
            this._UniSpaceWidth = NGUIText.CalculatePrintedSize(new string(XUILabelSymbol._UniSpace, 1), 1000).x;
            this._SpaceWidth    = NGUIText.CalculatePrintedSize(" ", 1000).x;
            if (Mathf.Abs(this._SpaceWidth) < 0.01f)
            {
                XSingleton <XDebug> .singleton.AddErrorLog("_SpaceWidth = ", this._SpaceWidth.ToString(), " gameobject = ", base.gameObject.ToString(), null, null);
            }
        }
        this._CheckAttachments();
        string text = string.Empty;
        int    num  = 0;
        int    j    = 0;
        int    k    = 0;
        int    num2 = this.m_Label.width;

        if (this.m_Label.overflowMethod == UILabel.Overflow.ResizeFreely)
        {
            num2 = 10000;
        }
        string text2 = null;

        XUILabelSymbol.SymbolData symbolData = null;
        int l = 0;

        while (l < this.m_StringData.Count)
        {
            if (num != 0 && num >= text.Length)
            {
                break;
            }
            XUILabelSymbol.StringData stringData = this.m_StringData[l];
            if (XUILabelSymbol.SymbolData.IsImage(stringData.type))
            {
                XUILabelSymbol.ImageSymbolData data = XDataPool <XUILabelSymbol.ImageSymbolData> .GetData();

                text2 = data.SetSprite(this, stringData.str, stringData.startIndex, stringData.length, ref j);
                if (text2 != null)
                {
                    symbolData = data;
                    goto IL_224;
                }
                data.Recycle();
            }
            else if (XUILabelSymbol.SymbolData.IsAnimation(stringData.type))
            {
                XUILabelSymbol.AnimationSymbolData data2 = XDataPool <XUILabelSymbol.AnimationSymbolData> .GetData();

                text2 = data2.SetSprite(this, stringData.str, stringData.startIndex, stringData.length, ref k);
                if (text2 != null)
                {
                    symbolData = data2;
                    goto IL_224;
                }
                data2.Recycle();
            }
            else
            {
                if (XUILabelSymbol.SymbolData.IsHyperLink(stringData.type))
                {
                    XUILabelSymbol.HyperLinkSymbolData.CreateHyperLinkSymbolData(stringData, out symbolData, out text2);
                    goto IL_224;
                }
                goto IL_224;
            }
IL_3B7:
            l++;
            continue;
IL_224:
            if (text2 != null)
            {
                XUILabelSymbol.s_TempSB.Length = 0;
                XUILabelSymbol.s_TempSB.Append(text, num, text.Length - num);
                XUILabelSymbol.s_TempSB.Append(text2);
                int num3 = Mathf.CeilToInt(NGUIText.CalculatePrintedSize(XUILabelSymbol.s_TempSB.ToString(), num2 + 1000).x);
                if (num3 > num2)
                {
                    symbolData.startIndex = text.Length + 1;
                    num = text.Length + 1;
                    XUILabelSymbol.s_TempSB.Length = 0;
                    XUILabelSymbol.s_TempSB.Append(text);
                    XUILabelSymbol.s_TempSB.Append('\n');
                    XUILabelSymbol.s_TempSB.Append(text2);
                    text = XUILabelSymbol.s_TempSB.ToString();
                }
                else
                {
                    symbolData.startIndex          = text.Length;
                    XUILabelSymbol.s_TempSB.Length = 0;
                    XUILabelSymbol.s_TempSB.Append(text);
                    XUILabelSymbol.s_TempSB.Append(text2);
                    text = XUILabelSymbol.s_TempSB.ToString();
                }
                symbolData.endIndex = symbolData.startIndex + text2.Length;
                this.m_Symbols.Add(symbolData);
                NGUIText.WrapText(text, out text, false);
                text2 = null;
                goto IL_3B7;
            }
            XUILabelSymbol.s_TempSB.Length = 0;
            XUILabelSymbol.s_TempSB.Append(text);
            XUILabelSymbol.s_TempSB.Append(stringData.str, stringData.startIndex, stringData.length);
            NGUIText.WrapText(XUILabelSymbol.s_TempSB.ToString(), out text, false);
            num = text.LastIndexOf('\n');
            if (num == -1)
            {
                num = 0;
                goto IL_3B7;
            }
            num++;
            goto IL_3B7;
        }
        while (j < this.m_SpriteList.Count)
        {
            this.m_SpriteList[j].gameObject.SetActive(false);
            j++;
        }
        while (k < this.m_AnimationList.Count)
        {
            this.m_AnimationList[k].gameObject.SetActive(false);
            k++;
        }
        this.m_Label.text = text;
    }