|  |  |  |  | using System.Collections.Generic; | 
					
						
							|  |  |  |  | using System.Text; | 
					
						
							|  |  |  |  | using UnityEngine; | 
					
						
							|  |  |  |  | using FairyGUI.Utils; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | namespace FairyGUI | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  |     /// <summary> | 
					
						
							|  |  |  |  |     ///  | 
					
						
							|  |  |  |  |     /// </summary> | 
					
						
							|  |  |  |  |     public class GTextField : GObject, ITextColorGear | 
					
						
							|  |  |  |  |     { | 
					
						
							|  |  |  |  |         protected TextField _textField; | 
					
						
							|  |  |  |  |         protected string _text; | 
					
						
							|  |  |  |  |         protected bool _ubbEnabled; | 
					
						
							|  |  |  |  |         protected bool _updatingSize; | 
					
						
							|  |  |  |  |         protected Dictionary<string, string> _templateVars; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         public GTextField() | 
					
						
							|  |  |  |  |             : base() | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             TextFormat tf = _textField.textFormat; | 
					
						
							|  |  |  |  |             tf.font = UIConfig.defaultFont; | 
					
						
							|  |  |  |  |             tf.size = 12; | 
					
						
							|  |  |  |  |             tf.color = Color.black; | 
					
						
							|  |  |  |  |             tf.lineSpacing = 3; | 
					
						
							|  |  |  |  |             tf.letterSpacing = 0; | 
					
						
							|  |  |  |  |             _textField.textFormat = tf; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |             _text = string.Empty; | 
					
						
							|  |  |  |  |             _textField.autoSize = AutoSizeType.Both; | 
					
						
							|  |  |  |  |             _textField.wordWrap = false; | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         override protected void CreateDisplayObject() | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             _textField = new TextField(); | 
					
						
							|  |  |  |  |             _textField.gOwner = this; | 
					
						
							|  |  |  |  |             displayObject = _textField; | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         /// <summary> | 
					
						
							|  |  |  |  |         ///  | 
					
						
							|  |  |  |  |         /// </summary> | 
					
						
							|  |  |  |  |         override public string text | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             get | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                 if (this is GTextInput) | 
					
						
							|  |  |  |  |                     _text = ((GTextInput)this).inputTextField.text; | 
					
						
							|  |  |  |  |                 return _text; | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  |             set | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                 if (value == null) | 
					
						
							|  |  |  |  |                     value = string.Empty; | 
					
						
							|  |  |  |  |                 _text = value; | 
					
						
							|  |  |  |  |                 SetTextFieldText(); | 
					
						
							|  |  |  |  |                 UpdateSize(); | 
					
						
							|  |  |  |  |                 UpdateGear(6); | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         virtual protected void SetTextFieldText() | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             string str = _text; | 
					
						
							|  |  |  |  |             if (_templateVars != null) | 
					
						
							|  |  |  |  |                 str = ParseTemplate(str); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |             _textField.maxWidth = maxWidth; | 
					
						
							|  |  |  |  |             if (_ubbEnabled) | 
					
						
							|  |  |  |  |                 _textField.htmlText = UBBParser.inst.Parse(XMLUtils.EncodeString(str)); | 
					
						
							|  |  |  |  |             else | 
					
						
							|  |  |  |  |                 _textField.text = str; | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         /// <summary> | 
					
						
							|  |  |  |  |         ///  | 
					
						
							|  |  |  |  |         /// </summary> | 
					
						
							|  |  |  |  |         public Dictionary<string, string> templateVars | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             get { return _templateVars; } | 
					
						
							|  |  |  |  |             set | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                 if (_templateVars == null && value == null) | 
					
						
							|  |  |  |  |                     return; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |                 _templateVars = value; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |                 FlushVars(); | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         /// <summary> | 
					
						
							|  |  |  |  |         ///  | 
					
						
							|  |  |  |  |         /// </summary> | 
					
						
							|  |  |  |  |         /// <param name="name"></param> | 
					
						
							|  |  |  |  |         /// <param name="value"></param> | 
					
						
							|  |  |  |  |         /// <returns></returns> | 
					
						
							|  |  |  |  |         public GTextField SetVar(string name, string value) | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             if (_templateVars == null) | 
					
						
							|  |  |  |  |                 _templateVars = new Dictionary<string, string>(); | 
					
						
							|  |  |  |  |             _templateVars[name] = value; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |             return this; | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         /// <summary> | 
					
						
							|  |  |  |  |         ///  | 
					
						
							|  |  |  |  |         /// </summary> | 
					
						
							|  |  |  |  |         public void FlushVars() | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             SetTextFieldText(); | 
					
						
							|  |  |  |  |             UpdateSize(); | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         /// <summary> | 
					
						
							|  |  |  |  |         ///  | 
					
						
							|  |  |  |  |         /// </summary> | 
					
						
							|  |  |  |  |         public bool HasCharacter(char ch) | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             return _textField.HasCharacter(ch); | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         protected string ParseTemplate(string template) | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             int pos1 = 0, pos2 = 0; | 
					
						
							|  |  |  |  |             int pos3; | 
					
						
							|  |  |  |  |             string tag; | 
					
						
							|  |  |  |  |             string value; | 
					
						
							|  |  |  |  |             StringBuilder buffer = new StringBuilder(); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |             while ((pos2 = template.IndexOf('{', pos1)) != -1) | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                 if (pos2 > 0 && template[pos2 - 1] == '\\') | 
					
						
							|  |  |  |  |                 { | 
					
						
							|  |  |  |  |                     buffer.Append(template, pos1, pos2 - pos1 - 1); | 
					
						
							|  |  |  |  |                     buffer.Append('{'); | 
					
						
							|  |  |  |  |                     pos1 = pos2 + 1; | 
					
						
							|  |  |  |  |                     continue; | 
					
						
							|  |  |  |  |                 } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |                 buffer.Append(template, pos1, pos2 - pos1); | 
					
						
							|  |  |  |  |                 pos1 = pos2; | 
					
						
							|  |  |  |  |                 pos2 = template.IndexOf('}', pos1); | 
					
						
							|  |  |  |  |                 if (pos2 == -1) | 
					
						
							|  |  |  |  |                     break; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |                 if (pos2 == pos1 + 1) | 
					
						
							|  |  |  |  |                 { | 
					
						
							|  |  |  |  |                     buffer.Append(template, pos1, 2); | 
					
						
							|  |  |  |  |                     pos1 = pos2 + 1; | 
					
						
							|  |  |  |  |                     continue; | 
					
						
							|  |  |  |  |                 } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |                 tag = template.Substring(pos1 + 1, pos2 - pos1 - 1); | 
					
						
							|  |  |  |  |                 pos3 = tag.IndexOf('='); | 
					
						
							|  |  |  |  |                 if (pos3 != -1) | 
					
						
							|  |  |  |  |                 { | 
					
						
							|  |  |  |  |                     if (!_templateVars.TryGetValue(tag.Substring(0, pos3), out value)) | 
					
						
							|  |  |  |  |                         value = tag.Substring(pos3 + 1); | 
					
						
							|  |  |  |  |                 } | 
					
						
							|  |  |  |  |                 else | 
					
						
							|  |  |  |  |                 { | 
					
						
							|  |  |  |  |                     if (!_templateVars.TryGetValue(tag, out value)) | 
					
						
							|  |  |  |  |                         value = ""; | 
					
						
							|  |  |  |  |                 } | 
					
						
							|  |  |  |  |                 buffer.Append(value); | 
					
						
							|  |  |  |  |                 pos1 = pos2 + 1; | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  |             if (pos1 < template.Length) | 
					
						
							|  |  |  |  |                 buffer.Append(template, pos1, template.Length - pos1); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |             return buffer.ToString(); | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         /// <summary> | 
					
						
							|  |  |  |  |         ///  | 
					
						
							|  |  |  |  |         /// </summary> | 
					
						
							|  |  |  |  |         public TextFormat textFormat | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             get | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                 return _textField.textFormat; | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  |             set | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                 _textField.textFormat = value; | 
					
						
							|  |  |  |  |                 if (!underConstruct) | 
					
						
							|  |  |  |  |                     UpdateSize(); | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         /// <summary> | 
					
						
							|  |  |  |  |         ///  | 
					
						
							|  |  |  |  |         /// </summary> | 
					
						
							|  |  |  |  |         public Color color | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             get | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                 return _textField.textFormat.color; | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  |             set | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                 if (_textField.textFormat.color != value) | 
					
						
							|  |  |  |  |                 { | 
					
						
							|  |  |  |  |                     TextFormat tf = _textField.textFormat; | 
					
						
							|  |  |  |  |                     tf.color = value; | 
					
						
							|  |  |  |  |                     _textField.textFormat = tf; | 
					
						
							|  |  |  |  |                     UpdateGear(4); | 
					
						
							|  |  |  |  |                 } | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         /// <summary> | 
					
						
							|  |  |  |  |         ///  | 
					
						
							|  |  |  |  |         /// </summary> | 
					
						
							|  |  |  |  |         public AlignType align | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             get { return _textField.align; } | 
					
						
							|  |  |  |  |             set { _textField.align = value; } | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         /// <summary> | 
					
						
							|  |  |  |  |         ///  | 
					
						
							|  |  |  |  |         /// </summary> | 
					
						
							|  |  |  |  |         public VertAlignType verticalAlign | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             get { return _textField.verticalAlign; } | 
					
						
							|  |  |  |  |             set { _textField.verticalAlign = value; } | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         /// <summary> | 
					
						
							|  |  |  |  |         ///  | 
					
						
							|  |  |  |  |         /// </summary> | 
					
						
							|  |  |  |  |         public bool singleLine | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             get { return _textField.singleLine; } | 
					
						
							|  |  |  |  |             set { _textField.singleLine = value; } | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         /// <summary> | 
					
						
							|  |  |  |  |         ///  | 
					
						
							|  |  |  |  |         /// </summary> | 
					
						
							|  |  |  |  |         public float stroke | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             get { return _textField.stroke; } | 
					
						
							|  |  |  |  |             set { _textField.stroke = value; } | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         /// <summary> | 
					
						
							|  |  |  |  |         ///  | 
					
						
							|  |  |  |  |         /// </summary> | 
					
						
							|  |  |  |  |         public Color strokeColor | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             get { return _textField.strokeColor; } | 
					
						
							|  |  |  |  |             set | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                 _textField.strokeColor = value; | 
					
						
							|  |  |  |  |                 UpdateGear(4); | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         /// <summary> | 
					
						
							|  |  |  |  |         ///  | 
					
						
							|  |  |  |  |         /// </summary> | 
					
						
							|  |  |  |  |         public Vector2 shadowOffset | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             get { return _textField.shadowOffset; } | 
					
						
							|  |  |  |  |             set { _textField.shadowOffset = value; } | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         /// <summary> | 
					
						
							|  |  |  |  |         ///  | 
					
						
							|  |  |  |  |         /// </summary> | 
					
						
							|  |  |  |  |         public bool UBBEnabled | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             get { return _ubbEnabled; } | 
					
						
							|  |  |  |  |             set { _ubbEnabled = value; } | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         /// <summary> | 
					
						
							|  |  |  |  |         ///  | 
					
						
							|  |  |  |  |         /// </summary> | 
					
						
							|  |  |  |  |         public AutoSizeType autoSize | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             get { return _textField.autoSize; } | 
					
						
							|  |  |  |  |             set | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                 _textField.autoSize = value; | 
					
						
							|  |  |  |  |                 if (value == AutoSizeType.Both) | 
					
						
							|  |  |  |  |                 { | 
					
						
							|  |  |  |  |                     _textField.wordWrap = false; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |                     if (!underConstruct) | 
					
						
							|  |  |  |  |                         this.SetSize(_textField.textWidth, _textField.textHeight); | 
					
						
							|  |  |  |  |                 } | 
					
						
							|  |  |  |  |                 else | 
					
						
							|  |  |  |  |                 { | 
					
						
							|  |  |  |  |                     _textField.wordWrap = true; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |                     if (value == AutoSizeType.Height) | 
					
						
							|  |  |  |  |                     { | 
					
						
							|  |  |  |  |                         if (!underConstruct) | 
					
						
							|  |  |  |  |                         { | 
					
						
							|  |  |  |  |                             displayObject.width = this.width; | 
					
						
							|  |  |  |  |                             this.height = _textField.textHeight; | 
					
						
							|  |  |  |  |                         } | 
					
						
							|  |  |  |  |                     } | 
					
						
							|  |  |  |  |                     else | 
					
						
							|  |  |  |  |                         displayObject.SetSize(this.width, this.height); | 
					
						
							|  |  |  |  |                 } | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         /// <summary> | 
					
						
							|  |  |  |  |         ///  | 
					
						
							|  |  |  |  |         /// </summary> | 
					
						
							|  |  |  |  |         public float textWidth | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             get { return _textField.textWidth; } | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         /// <summary> | 
					
						
							|  |  |  |  |         ///  | 
					
						
							|  |  |  |  |         /// </summary> | 
					
						
							|  |  |  |  |         public float textHeight | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             get { return _textField.textHeight; } | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         protected void UpdateSize() | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             if (_updatingSize) | 
					
						
							|  |  |  |  |                 return; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |             _updatingSize = true; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |             if (_textField.autoSize == AutoSizeType.Both) | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                 this.size = displayObject.size; | 
					
						
							|  |  |  |  |                 InvalidateBatchingState(); | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  |             else if (_textField.autoSize == AutoSizeType.Height) | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                 this.height = displayObject.height; | 
					
						
							|  |  |  |  |                 InvalidateBatchingState(); | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |             _updatingSize = false; | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         override protected void HandleSizeChanged() | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             if (_updatingSize) | 
					
						
							|  |  |  |  |                 return; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |             if (underConstruct) | 
					
						
							|  |  |  |  |                 displayObject.SetSize(this.width, this.height); | 
					
						
							|  |  |  |  |             else if (_textField.autoSize != AutoSizeType.Both) | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                 if (_textField.autoSize == AutoSizeType.Height) | 
					
						
							|  |  |  |  |                 { | 
					
						
							|  |  |  |  |                     displayObject.width = this.width;//先调整宽度,让文本重排 | 
					
						
							|  |  |  |  |                     if (_text != string.Empty) //文本为空时,1是本来就不需要调整, 2是为了防止改掉文本为空时的默认高度,造成关联错误 | 
					
						
							|  |  |  |  |                         SetSizeDirectly(this.width, displayObject.height); | 
					
						
							|  |  |  |  |                 } | 
					
						
							|  |  |  |  |                 else | 
					
						
							|  |  |  |  |                     displayObject.SetSize(this.width, this.height); | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         override public void Setup_BeforeAdd(ByteBuffer buffer, int beginPos) | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             base.Setup_BeforeAdd(buffer, beginPos); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |             buffer.Seek(beginPos, 5); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |             TextFormat tf = _textField.textFormat; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |             tf.font = buffer.ReadS(); | 
					
						
							|  |  |  |  |             tf.size = buffer.ReadShort(); | 
					
						
							|  |  |  |  |             tf.color = buffer.ReadColor(); | 
					
						
							|  |  |  |  |             this.align = (AlignType)buffer.ReadByte(); | 
					
						
							|  |  |  |  |             this.verticalAlign = (VertAlignType)buffer.ReadByte(); | 
					
						
							|  |  |  |  |             tf.lineSpacing = buffer.ReadShort(); | 
					
						
							|  |  |  |  |             tf.letterSpacing = buffer.ReadShort(); | 
					
						
							|  |  |  |  |             _ubbEnabled = buffer.ReadBool(); | 
					
						
							|  |  |  |  |             this.autoSize = (AutoSizeType)buffer.ReadByte(); | 
					
						
							|  |  |  |  |             tf.underline = buffer.ReadBool(); | 
					
						
							|  |  |  |  |             tf.italic = buffer.ReadBool(); | 
					
						
							|  |  |  |  |             tf.bold = buffer.ReadBool(); | 
					
						
							|  |  |  |  |             this.singleLine = buffer.ReadBool(); | 
					
						
							|  |  |  |  |             if (buffer.ReadBool()) | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                 tf.outlineColor = buffer.ReadColor(); | 
					
						
							|  |  |  |  |                 tf.outline = buffer.ReadFloat(); | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |             if (buffer.ReadBool()) | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                 tf.shadowColor = buffer.ReadColor(); | 
					
						
							|  |  |  |  |                 float f1 = buffer.ReadFloat(); | 
					
						
							|  |  |  |  |                 float f2 = buffer.ReadFloat(); | 
					
						
							|  |  |  |  |                 tf.shadowOffset = new Vector2(f1, f2); | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |             if (buffer.ReadBool()) | 
					
						
							|  |  |  |  |                 _templateVars = new Dictionary<string, string>(); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |             if (buffer.version >= 3) | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                 tf.strikethrough = buffer.ReadBool(); | 
					
						
							|  |  |  |  | #if FAIRYGUI_TMPRO | 
					
						
							|  |  |  |  |                 tf.faceDilate = buffer.ReadFloat(); | 
					
						
							|  |  |  |  |                 tf.outlineSoftness = buffer.ReadFloat(); | 
					
						
							|  |  |  |  |                 tf.underlaySoftness = buffer.ReadFloat(); | 
					
						
							|  |  |  |  | #else | 
					
						
							|  |  |  |  |                 buffer.Skip(12); | 
					
						
							|  |  |  |  | #endif | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |             _textField.textFormat = tf; | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         override public void Setup_AfterAdd(ByteBuffer buffer, int beginPos) | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             base.Setup_AfterAdd(buffer, beginPos); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |             buffer.Seek(beginPos, 6); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |             string str = buffer.ReadS(); | 
					
						
							|  |  |  |  |             if (str != null) | 
					
						
							|  |  |  |  |                 this.text = str; | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | } |