/// <summary> /// Initializes a new FormattedText. /// </summary> /// <param name='text'> /// The clean line of text, without formatting codes. /// </param> /// <param name='emphases'> /// Emphases. /// </param> /// <param name='italic'> /// Italic. /// </param> /// <param name='position'> /// Position. /// </param> /// <param name='forceMenu'> /// Force menu. /// </param> /// <param name='pic'> /// The [pic] value, or <c>0</c> for unused. /// </param> /// <param name='picActor'> /// The [pica] value, or <c>0</c> for unused. /// </param> /// <param name='picConversant'> /// The [picc] value, or <c>0</c> for unused. /// </param> public FormattedText(string text = null, Emphasis[] emphases = null, bool italic = false, int position = NoAssignedPosition, bool forceMenu = true, int pic = NoPicOverride, int picActor = NoPicOverride, int picConversant = NoPicOverride, string variableInputPrompt = null) { this.text = text ?? string.Empty; this.emphases = emphases ?? noEmphases; this.italic = italic; this.position = position; this.forceMenu = forceMenu; this.pic = pic; this.picActor = picActor; this.picConversant = picConversant; this.variableInputPrompt = variableInputPrompt; }
/// <summary> /// Extracts the emphasis tags. /// </summary> /// <returns> /// An array of emphases. /// </returns> /// <param name='text'> /// Text (returned without the emphasis tags). /// </param> /// <param name='emphasisSettings'> /// Emphasis settings to use when parsing an emphasis tag. /// </param> /// @todo Apply emphasis to specified substring. Currently returns a max of one emphasis, which covers the whole text. private static Emphasis[] ExtractEmphasisTags(ref string text, EmphasisSetting[] emphasisSettings) { List<Emphasis> emphases = new List<Emphasis>(); if (text.Contains("[em")) { Regex regex = new Regex(@"\[\/?em[1-4]\]"); text = regex.Replace(text, delegate(Match match) { string numString = match.Value.Substring(match.Value.Length - 2, 1); // Get # from "[em#]" int num = 1; int.TryParse(numString, out num); num--; if ((emphasisSettings != null) && (0 <= num) && (num < emphasisSettings.Length)) { Emphasis emphasis = new Emphasis(0, int.MaxValue, emphasisSettings[num].color, emphasisSettings[num].bold, emphasisSettings[num].italic, emphasisSettings[num].underline); emphases.Clear(); emphases.Add(emphasis); } return string.Empty; }); } return emphases.ToArray(); }
/// <summary> /// Gets the Unity FonyStyle represented by an emphasis. /// </summary> /// <returns> /// The font style. /// </returns> /// <param name='emphasis'> /// Emphasis. /// </param> public static FontStyle GetFontStyle(Emphasis emphasis) { if (emphasis.bold && emphasis.italic) { return FontStyle.BoldAndItalic; } else if (emphasis.bold) { return FontStyle.Bold; } else if (emphasis.italic) { return FontStyle.Italic; } else { return FontStyle.Normal; } }