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);
        }
Example #4
0
        public void Process(DataSample data, TimeSpan relativeTime, ref OverlayData.LeaderBoard leaderBoard)
        {
            leaderBoard = captureLeaderBoard.CreateLeaderBoard(data, relativeTime, GetQualifyingOrder(data));

            overlayData.LeaderBoards.Add(leaderBoard);
        }