public void Process(DataSample data, TimeSpan relativeTime, ref OverlayData.LeaderBoard leaderBoard) { var session = data.SessionData.SessionInfo.Sessions[data.Telemetry.SessionNum]; leaderBoard = captureLeaderBoard.CreateLeaderBoard(data, relativeTime, leaderBoard.Drivers); for (int i = 1; i < data.SessionData.DriverInfo.CompetingDrivers.Length; i++) { AnnounceIfDriverHasFinished(data, relativeTime, session, i, ref leaderBoard); MarkResultFlashCardStart(data, relativeTime, session, i); } overlayData.LeaderBoards.Add(leaderBoard); }
public void Process(DataSample data, TimeSpan relativeTime, ref OverlayData.LeaderBoard leaderBoard) { if (leaderBoardUpdateRate == 0 || leaderBoard == null) { leaderBoard = captureLeaderBoard.CreateLeaderBoard(data, relativeTime, LatestRunningOrder(data, relativeTime)); } else { leaderBoard = captureLeaderBoard.CreateLeaderBoard(data, relativeTime, leaderBoard.Drivers); } leaderBoardUpdateRate++; leaderBoardUpdateRate = leaderBoardUpdateRate % 8; overlayData.LeaderBoards.Add(leaderBoard); }
void AnnounceIfDriverHasFinished(DataSample data, TimeSpan relativeTime, SessionData._SessionInfo._Sessions session, int i, ref OverlayData.LeaderBoard leaderBoard) { if (!data.LastSample.Telemetry.Cars[i].HasSeenCheckeredFlag || haveNotedCheckerdFlag[i]) { return; } haveNotedCheckerdFlag[i] = true; var driver = data.SessionData.DriverInfo.CompetingDrivers[i]; var position = (int)session.ResultsPositions.First(r => r.CarIdx == i).Position; var pitStopCount = data.Telemetry.Cars[i].PitStopCount; var drivers = leaderBoard.Drivers.Where(d => d.CarIdx != i) .Select(d => d.Clone()) .ToList(); drivers.Insert((int)position - 1, new OverlayData.Driver { CarNumber = driver.CarNumber, UserName = driver.UserName, Position = position, CarIdx = i, PitStopCount = pitStopCount }); var p = 1; foreach (var d in drivers) { d.Position = p++; } leaderBoard = captureLeaderBoard.CreateLeaderBoard(data, relativeTime, drivers.ToArray()); var msg = string.Format("{0} finished in {1}{2}", driver.UserName, position, position.Ordinal()); TraceInfo.WriteLine("{0} {1}", data.Telemetry.SessionTimeSpan, msg); commentaryMessages.Add(msg, relativeTime.TotalSeconds); }
public void Process(DataSample data, TimeSpan relativeTime, ref OverlayData.LeaderBoard leaderBoard) { leaderBoard = captureLeaderBoard.CreateLeaderBoard(data, relativeTime, GetQualifyingOrder(data)); overlayData.LeaderBoards.Add(leaderBoard); }