Esempio n. 1
0
 /// <summary>
 /// Update
 /// </summary>
 protected override void Update()
 {
     if (Skill.Framework.Global.IsGamePaused)
     {
         return;
     }
     while (_Queue.Count > 0 && _Queue.Peek().Time <= Time.time)
     {
         SubTime st        = _Queue.Dequeue();
         string  valueText = GetText(st.Title.TitleKey);
         if (SubRenderer != null && valueText != null)
         {
             if (!string.IsNullOrEmpty(valueText))
             {
                 if (st.Title.OverrideStyle)
                 {
                     SubRenderer.ShowTitle(valueText, st.Title.Duration, st.Title.FontColor, st.Title.FontStyle, st.Title.Alignment);
                 }
                 else
                 {
                     SubRenderer.ShowTitle(valueText, st.Title.Duration);
                 }
             }
         }
     }
     base.Update();
 }
Esempio n. 2
0
        /// <summary>
        /// VTT 格式處理的實作
        /// <para>未來介面化或要支援其它格式,改這裡即可</para>
        /// </summary>
        /// <returns></returns>
        private List <Sentence> VTTLinesToSentences(string[] lines)
        {
            /* VTT 格式範例
             * WEBVTT
             *
             * 00:01.950 --> 00:03.720
             * What is programming.
             *
             * 00:03.930 --> 00:11.580
             * What is programming, what is programming.
             */
            var sentences = new List <Sentence>();

            var lineCount = lines.Length;

            for (var i = 0; i < lineCount; i++)
            {
                var(time, isOk) = SubTime.TryParse(lines[i].Trim());

                if (isOk)
                {
                    if (i + 1 < lineCount && !string.IsNullOrEmpty(lines[i + 1]))
                    {
                        sentences.Add(new Sentence(time.ToSrtFormat(), lines[i + 1]));
                        i++;
                    }
                }
            }

            return(sentences);
        }
Esempio n. 3
0
 /// <summary>
 /// Start show subtitles of specified AudioClip
 /// </summary>
 /// <param name="clip">AudioClip to show it's subtitles (must be exists in Dictionaries)</param>
 public void Show(AudioClip clip)
 {
     if (clip != null)
     {
         _Queue.Clear();
         Dictionary        dictionary = null;
         AudioClipSubtitle at         = GetSubtitle(clip, out dictionary);
         if (at != null)
         {
             if (at.Titles.Length > 0)
             {
                 if (at.Titles.Length > 1)
                 {
                     Skill.Framework.Utility.QuickSort(at.Titles, SubtitleComparer.Instance);
                 }
                 for (int i = 0; i < at.Titles.Length; i++)
                 {
                     SubTime st = new SubTime();
                     st.Time  = Time.time + at.Titles[i].Time;
                     st.Title = at.Titles[i];
                     _Queue.Enqueue(st);
                 }
             }
         }
     }
 }