public RaceLaps(ITrackRaceViewModel race, IDistanceDisciplineCalculator calculator) { this.race = race; this.calculator = calculator; Points = new RacePoints(groups); }
public RaceLapsGroup(ITrackRaceViewModel race, IDistanceDisciplineCalculator calculator, int index) { Race = race; this.calculator = calculator; Index = index; notPresented.CollectionChanged += NotPresentedChanged; }
public TrackCompetitorStoryboard(IActiveTrackRaceViewModel race, IDistanceDisciplineCalculator calculator) { if (race == null) { throw new ArgumentNullException(nameof(race)); } this.race = race; this.calculator = calculator; }
public HeatState(IDistance distance, Heat number, IEnumerable <TRace> races, IDistanceDisciplineCalculator calculator) { this.distance = distance; this.calculator = calculator; Number = number; Races = races.ToList(); foreach (var race in Races) { laps.Add(race.RaceId, race.Laps.ToList()); calculatedLaps.Add(race.RaceId, calculator.CalculateLaps(distance, race.Laps.Presented().Cast <IReadOnlyActiveRaceLap>()).ToList()); passings.Add(race.RaceId, race.Passings.ToList()); nextLapIndices.Add(race.RaceId, 0); } }
public static RaceLapIndex LapIndex(this IDistanceDisciplineCalculator calculator, Distance distance, int index) { return(new RaceLapIndex(index, calculator.Rounds(distance, index + 1), calculator.RoundsToGo(distance, index + 1), calculator.LapPassedLength(distance, index + 1))); }
public static LapRound LapRound(this IDistanceDisciplineCalculator calculator, IDistance distance, int lap) { return(new LapRound(calculator.Rounds(distance, lap), calculator.RoundsToGo(distance, lap), calculator.LapPassedLength(distance, lap))); }
private static void CommitRace(IDistance distance, IEnumerable <DistanceCombination> combinations, Race race, IDistanceDisciplineCalculator calculator, string headerLine, int timeInfoOffset) { TimeInfo timeInfo; if (!TryParseTimeInfo(headerLine.Substring(timeInfoOffset, 2), out timeInfo)) { timeInfo = TimeInfo.None; } race.PresentedInstanceName = ResultInstanceName; var result = race.Results?.SingleOrDefault(r => r.InstanceName == ResultInstanceName); var finalLap = race.Laps?.Presented().ElementAtOrDefault(calculator.Laps(distance) - 1); if (result == null || finalLap == null) { return; } var time = new RaceTime { Race = race, InstanceName = ResultInstanceName, PresentationSource = finalLap.PresentationSource, Time = finalLap.Time, TimeInfo = timeInfo }; if (race.Times == null) { race.Times = new Collection <RaceTime>(); } race.Times.Add(time); var classificationWeight = combinations.FirstOrDefault()?.ClassificationWeight ?? DefaultClassificationWeight; if (calculator.CanCalculateRacePoints(distance, classificationWeight, distance.ClassificationPrecision, result, time)) { result.Points = calculator.CalculateRacePoints(distance, classificationWeight, distance.ClassificationPrecision, result, time); } }