コード例 #1
0
        public RaceLaps(ITrackRaceViewModel race, IDistanceDisciplineCalculator calculator)
        {
            this.race       = race;
            this.calculator = calculator;

            Points = new RacePoints(groups);
        }
コード例 #2
0
        public RaceLapsGroup(ITrackRaceViewModel race, IDistanceDisciplineCalculator calculator, int index)
        {
            Race            = race;
            this.calculator = calculator;
            Index           = index;

            notPresented.CollectionChanged += NotPresentedChanged;
        }
コード例 #3
0
        public TrackCompetitorStoryboard(IActiveTrackRaceViewModel race, IDistanceDisciplineCalculator calculator)
        {
            if (race == null)
            {
                throw new ArgumentNullException(nameof(race));
            }

            this.race       = race;
            this.calculator = calculator;
        }
コード例 #4
0
ファイル: HeatState.cs プロジェクト: reitse/VantageGroningen
        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);
            }
        }
コード例 #5
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)));
 }
コード例 #7
0
        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);
            }
        }