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); }
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; }
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); } }