private void FlushText()
        {
            string mTextQueue = this.mTextQueue;

            this.mTextQueue = (string)null;
            if (this.mCharacters == null || this.mCharacters.Length < mTextQueue.Length)
            {
                this.mCharacters = new EventDialogBubbleCustom.Character[mTextQueue.Length * 2];
            }
            string str      = "REPLACE_PLAYER_NAME";
            string newValue = string.Empty;

            if (Object.op_Inequality((Object)MonoSingleton <GameManager> .GetInstanceDirect(), (Object)null))
            {
                newValue = MonoSingleton <GameManager> .GetInstanceDirect().Player.Name;
            }
            string s = mTextQueue.Replace("<p_name>", str).Replace("<br>", "\n");

            EventAction_Dialog.TextSpeedTypes speed = EventAction_Dialog.TextSpeedTypes.Normal;
            int n = 0;

            EventDialogBubbleCustom.Ctx ctx = new EventDialogBubbleCustom.Ctx();
            ctx.Interval        = speed.ToFloat();
            ctx.Color           = Color32.op_Implicit(!Object.op_Inequality((Object)this.BodyText, (Object)null) ? Color.get_black() : ((Graphic)this.BodyText).get_color());
            this.mNumCharacters = 0;
            EventDialogBubbleCustom.Element[] c = EventDialogBubbleCustom.SplitTags(s);
            for (int index = 0; index < c.Length; ++index)
            {
                if (c[index] != null)
                {
                    c[index].Value = c[index].Value.Replace(str, newValue);
                }
            }
            this.Parse(c, ref n, (string)null, ctx);
            if (Object.op_Inequality((Object)this.BodyText, (Object)null))
            {
                this.BodyText.set_text(string.Empty);
            }
            this.mStartTime       = Time.get_time() + this.FadeInTime;
            this.mTextNeedsUpdate = this.mNumCharacters > 0;
            this.mFadingOut       = false;
            if (string.IsNullOrEmpty(this.VoiceSheetName) || string.IsNullOrEmpty(this.VoiceCueName))
            {
                this.FadeOutVoice();
            }
            else
            {
                this.mVoice = new MySound.Voice(this.VoiceSheetName, (string)null, (string)null);
                this.mVoice.Play(this.VoiceCueName, 0.0f);
                this.VoiceCueName = (string)null;
            }
        }
        private void PushCharacters(string s, EventDialogBubbleCustom.Ctx ctx)
        {
            float num = this.mNumCharacters <= 0 ? 0.0f : this.mCharacters[this.mNumCharacters - 1].TimeOffset;

            for (int index = 0; index < s.Length; ++index)
            {
                float interval = ctx.Interval;
                if ((int)s[index] == 10)
                {
                    interval = this.NewLineInterval;
                }
                this.mCharacters[this.mNumCharacters] = new EventDialogBubbleCustom.Character(s[index], ctx.Color, interval, num + interval);
                num = this.mCharacters[this.mNumCharacters].TimeOffset;
                ++this.mNumCharacters;
            }
        }
 private void Parse(EventDialogBubbleCustom.Element[] c, ref int n, string end, EventDialogBubbleCustom.Ctx ctx)
 {
     while (n < c.Length)
     {
         if (!string.IsNullOrEmpty(c[n].Tag))
         {
             Match match1;
             if ((match1 = EventDialogBubbleCustom.regEndTag.Match(c[n].Tag)).Success)
             {
                 if (match1.Groups[1].Value == end)
                 {
                     ++n;
                     break;
                 }
                 ++n;
             }
             else
             {
                 Match match2;
                 if ((match2 = EventDialogBubbleCustom.regColor.Match(c[n].Tag)).Success)
                 {
                     ++n;
                     Color32 color = ctx.Color;
                     ctx.Color = ColorUtility.ParseColor(match2.Groups[1].Value);
                     this.Parse(c, ref n, "color", ctx);
                     ctx.Color = color;
                 }
                 else
                 {
                     ++n;
                 }
             }
         }
         else
         {
             this.PushCharacters(c[n].Value, ctx);
             ++n;
         }
     }
 }