private void UpdateLyrics() { if (_FadeOut) { return; } CSong song = CGame.GetSong(); if (song == null) { return; } CLines[] lines = new CLines[song.Notes.Lines.Length]; _CurrentBeat = CGame.CurrentBeat; for (int i = 0; i < lines.Length; i++) { if (i > 1) { break; // for later } lines[i] = song.Notes.GetLines(i); CLine[] line = lines[i].Line; // find current line (it must be the same as in CalcFadingAlpha) int nr = -1; for (int j = 0; j < line.Length; j++) { if (line[j].StartBeat <= _CurrentBeat) { if (CGame.GetTimeFromBeats(line[j].FirstBeat, song.BPM) <= _CurrentTime - song.Gap + 10f) { nr = j; } } } if (nr != -1) { for (int j = 0; j < CGame.NumPlayer; j++) { if (CGame.Player[j].LineNr == i) { SingNotes[htSingNotes(SingBars)].AddLine(NoteLines[j], line, nr, j); } } if (i == 0 && !song.IsDuet || i == 1 && song.IsDuet) { Lyrics[htLyrics(LyricMain)].SetLine(line[nr]); Lyrics[htLyrics(LyricMainTop)].SetLine(line[nr]); _TimeToFirstNote = CGame.GetTimeFromBeats(line[nr].FirstBeat - line[nr].StartBeat, song.BPM); _RemainingTimeToFirstNote = CGame.GetTimeFromBeats(line[nr].FirstBeat - CGame.GetBeatFromTime(_CurrentTime, song.BPM, song.Gap), song.BPM); if (line.Length >= nr + 2) { Lyrics[htLyrics(LyricSub)].SetLine(line[nr + 1]); Lyrics[htLyrics(LyricSubTop)].SetLine(line[nr + 1]); } else { Lyrics[htLyrics(LyricSub)].Clear(); Lyrics[htLyrics(LyricSubTop)].Clear(); } } if (i == 0 && song.IsDuet) { Lyrics[htLyrics(LyricMainDuet)].SetLine(line[nr]); _TimeToFirstNoteDuet = CGame.GetTimeFromBeats(line[nr].FirstBeat - line[nr].StartBeat, song.BPM); _RemainingTimeToFirstNoteDuet = CGame.GetTimeFromBeats(line[nr].FirstBeat - CGame.GetBeatFromTime(_CurrentTime, song.BPM, song.Gap), song.BPM); if (line.Length >= nr + 2) { Lyrics[htLyrics(LyricSubDuet)].SetLine(line[nr + 1]); } else { Lyrics[htLyrics(LyricSubDuet)].Clear(); } } } else { if (i == 0 && !song.IsDuet || i == 1 && song.IsDuet) { Lyrics[htLyrics(LyricMain)].Clear(); Lyrics[htLyrics(LyricSub)].Clear(); Lyrics[htLyrics(LyricMainTop)].Clear(); Lyrics[htLyrics(LyricSubTop)].Clear(); _TimeToFirstNote = 0f; } if (i == 0 && song.IsDuet) { Lyrics[htLyrics(LyricMainDuet)].Clear(); Lyrics[htLyrics(LyricSubDuet)].Clear(); _TimeToFirstNoteDuet = 0f; } } } }