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;
    }
Ejemplo n.º 2
0
    public void Parse()
    {
        this.m_OutputSB.Length = 0;
        this._Separate();
        this._Parse();
        if (this.bAutoDisableBoxCollider && this.m_collider != null)
        {
            this.m_collider.enabled = false;
        }
        if (this.m_Symbols.Count <= 0)
        {
            return;
        }
        XUILabelSymbol.verts.Clear();
        XUILabelSymbol.indices.Clear();
        NGUIText.PrintCharacterPositions(this.m_Label.processedText, XUILabelSymbol.verts, XUILabelSymbol.indices);
        if (XUILabelSymbol.verts.size <= 0)
        {
            return;
        }
        this.m_Label.ApplyOffset(XUILabelSymbol.verts, 0);
        int i = 0;

        for (int j = 0; j < this.m_Symbols.Count; j++)
        {
            XUILabelSymbol.SymbolData symbolData = this.m_Symbols[j];
            if (XUILabelSymbol.SymbolData.IsImage(symbolData.type) || XUILabelSymbol.SymbolData.IsAnimation(symbolData.type))
            {
                UISprite sprite;
                if (XUILabelSymbol.SymbolData.IsImage(symbolData.type))
                {
                    XUILabelSymbol.ImageSymbolData imageSymbolData = symbolData as XUILabelSymbol.ImageSymbolData;
                    sprite = imageSymbolData.sprite;
                }
                else
                {
                    XUILabelSymbol.AnimationSymbolData animationSymbolData = symbolData as XUILabelSymbol.AnimationSymbolData;
                    sprite = animationSymbolData.sprite;
                }
                while (i < XUILabelSymbol.indices.size)
                {
                    if (XUILabelSymbol.indices[i] == symbolData.startIndex)
                    {
                        sprite.transform.localPosition = XUILabelSymbol.verts[i] + new Vector3(0f, (float)this.ImageHeightAdjustment);
                        break;
                    }
                    i++;
                }
                if (i == XUILabelSymbol.indices.size && sprite != null)
                {
                    sprite.gameObject.SetActive(false);
                }
            }
            else if (XUILabelSymbol.SymbolData.IsHyperLink(symbolData.type))
            {
                if (this.m_collider == null)
                {
                    this.m_collider = NGUITools.AddWidgetCollider(base.gameObject, this.m_Label, false);
                    UIEventListener uIEventListener = UIEventListener.Get(base.gameObject);
                    UIEventListener expr_1E5        = uIEventListener;
                    expr_1E5.onClick = (UIEventListener.VoidDelegate)Delegate.Remove(expr_1E5.onClick, new UIEventListener.VoidDelegate(this.OnSymbolClick));
                    UIEventListener expr_208 = uIEventListener;
                    expr_208.onClick           = (UIEventListener.VoidDelegate)Delegate.Combine(expr_208.onClick, new UIEventListener.VoidDelegate(this.OnSymbolClick));
                    this.m_bBoxColliderCreator = true;
                }
                else
                {
                    this.m_collider.enabled = true;
                    if (this.m_bBoxColliderCreator)
                    {
                        NGUITools.UpdateWidgetCollider(this.m_Label, this.m_collider, false);
                    }
                }
            }
        }
    }