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; }
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); } } } } }