Ejemplo n.º 1
0
        private void DriverTimingOnNewLapStarted(object sender, DriverTiming.LapEventArgs e)
        {
            /*if (!Laps.Last().LapInfo.Completed)
             * {
             *  Laps.RemoveAt(Laps.Count - 1);
             * }*/
            var newLapModel = new LapViewModel(e.Lap);

            if (Laps.Any() && Laps.Last().LapNumber == newLapModel.LapNumber)
            {
                Laps.Remove(Laps.Last());
            }
            Laps.Add(newLapModel);
            _gui.LapsGrid.ScrollIntoView(newLapModel);
        }
Ejemplo n.º 2
0
        private void EvaluateLaps(out RaceLap zeroLapOfPolePosition)
        {
            Minner <RaceLap> m = new Minner <RaceLap>(
                (RaceLap l) => l.CrossedAtTime
                );
            RaceLap lapZero;

            var drivers = Laps.GetDrivers();

            foreach (var driver in drivers)
            {
                RecalculateLapTimesOfDriver(driver, out lapZero);
                m.Add(lapZero as RaceLap);
                Laps.Remove(0, driver);
                RefreshLinksOfDriver(driver);
            }

            zeroLapOfPolePosition = m.MinimumItem;
        }
Ejemplo n.º 3
0
        public void RecalculateLapTimes()
        {
            var drivers = Laps.GetDrivers();

            // order laps of all drivers by time
            foreach (var driver in drivers)
            {
                var laps = Laps[driver];
                laps.Sort(new Lap.ByCrossedAtTimeComparer());
                for (int i = 1; i < laps.Count; i++)
                {
                    Time bef  = laps[i - 1].CrossedAtTime;
                    Time curr = laps[i].CrossedAtTime;
                    Time diff = curr - bef;
                    laps[i].Time      = diff;
                    laps[i].LapNumber = i;
                }

                Laps.Remove(0, driver);
            }
        }