Beispiel #1
0
        public override void LoadLyric(WordLyric lyric)
        {
            OnAddLyricLine?.Invoke(lyric);

            commandList  = new SortedList <float, FlagCommand>();
            CurrentCusor = -1;
            for (int i = 0; i < lyric.Length; i++)
            {
                var line = lyric[i];
                //行切换的指令
                LineCommand lineCmd = new LineCommand(line)
                {
                    linecode = i
                };
                if (i + 1 < lyric.Length)
                {
                    lineCmd.SetupExitStatus(lyric[i + 1].ActiveTime);
                }
                else
                {
                    lineCmd.SetupExitStatus(float.PositiveInfinity);
                }

                commandList.Add(line.ActiveTime, lineCmd);
                //组切换的指令
                HandleGroupCollection(lineCmd, line.LyricGroup, false, lineCmd.enter_group_status, lineCmd.exit_group_status);
                HandleGroupCollection(lineCmd, line.TranslateGroup, true, lineCmd.enter_group_status_translate, lineCmd.exit_group_status_translate);
            }
        }
Beispiel #2
0
        public override void LoadLyric(WordLyric lyric)
        {
            currentLine = -1;
            lines.Clear();
            foreach (var x in lyric)
            {
                lines.Add(x.ActiveTime, new LyricLineBundle {
                    LineText = x.Text
                });
            }

            for (int i = 0; i < lines.Values.Count; i++)
            {
                lines.Values[i].LineNumber = i;
            }
            OnAddLyricLine?.Invoke(lines.Values);
        }