Exemplo n.º 1
0
        protected virtual IList <TSDriverModel> FormatLeaderboardData(NascarFeed.Models.LiveFeed.RootObject feedData)
        {
            double previousDelta = 0.0;

            var models = new List <TSDriverModel>();

            foreach (var vehicle in feedData.vehicles)
            {
                var model = new TSDriverModel()
                {
                    Position         = vehicle.running_position,
                    CarNumber        = vehicle.vehicle_number,
                    Driver           = vehicle.driver.full_name,
                    BehindLeader     = vehicle.delta,
                    Manufacturer     = vehicle.vehicle_manufacturer,
                    StartPosition    = vehicle.starting_position,
                    LastLapTime      = vehicle.last_lap_time,
                    FastestLapTime   = vehicle.best_lap_time,
                    FastestLapNumber = vehicle.best_lap,
                    LastPitLap       = vehicle.pit_stops.Count > 0 ? vehicle.pit_stops.LastOrDefault().pit_in_leader_lap : 0,
                    LapsComplete     = vehicle.laps_completed,
                    BehindNext       = vehicle.delta < 0 ?
                                       previousDelta < 0 ?
                                       vehicle.delta - previousDelta :
                                       vehicle.delta :
                                       vehicle.delta - previousDelta
                };

                models.Add(model);

                previousDelta = vehicle.delta;
            }

            return(models);
        }
Exemplo n.º 2
0
        protected virtual IList <TSDriverModel> FormatLeaderboardData(NascarFeed.Models.LiveFeed.RootObject feedData)
        {
            double previousDelta = 0.0;

            var models = new List <TSDriverModel>();

            var fastestThisLap = new List <TSDriverModel>();

            double fastestLapTimeThisLap = 999999;

            foreach (var vehicle in feedData.vehicles)
            {
                var model = new TSDriverModel()
                {
                    Position         = vehicle.running_position,
                    CarNumber        = vehicle.vehicle_number,
                    Driver           = vehicle.driver.full_name,
                    BehindLeader     = vehicle.delta,
                    Manufacturer     = vehicle.vehicle_manufacturer,
                    StartPosition    = vehicle.starting_position,
                    LastLapTime      = vehicle.last_lap_time,
                    FastestLapTime   = vehicle.best_lap_time,
                    FastestLapNumber = vehicle.best_lap,
                    LastPitLap       = vehicle.pit_stops.Count > 0 ? vehicle.pit_stops.LastOrDefault().pit_in_leader_lap : 0,
                    LapsComplete     = vehicle.laps_completed,
                    BehindNext       = vehicle.delta < 0 ?
                                       previousDelta < 0 ?
                                       vehicle.delta - previousDelta :
                                       vehicle.delta :
                                       vehicle.delta - previousDelta,
                    IsOnTrack      = vehicle.is_on_track,
                    VehicleStatus  = (VehicleStatus)vehicle.status,
                    IsUserFavorite = _userSettings.FavoriteDrivers.Any(f => f.Driver == vehicle.driver.full_name)
                };

                models.Add(model);

                previousDelta = vehicle.delta;

                if (model.VehicleStatus == VehicleStatus.OnTrack)
                {
                    if (model.LastLapTime == fastestLapTimeThisLap)
                    {
                        fastestThisLap.Add(model);
                    }
                    else if (model.LastLapTime < fastestLapTimeThisLap)
                    {
                        fastestThisLap.Clear();
                        fastestThisLap.Add(model);
                        fastestLapTimeThisLap = model.LastLapTime;
                    }
                }
            }

            foreach (var model in fastestThisLap)
            {
                model.FastestThisLap = true;
            }

            return(models);
        }
Exemplo n.º 3
0
        protected virtual void UpdateDisplay(TSDriverModel model)
        {
            if (model == null)
            {
                return;
            }

            this.BackColor = model.Position % 2 == 1 ?
                             TSColorMap.AlternatingRowBackColor0 :
                             TSColorMap.AlternatingRowBackColor1;

            this.tsDriverFastestLap1.BackColor = this.BackColor;

            lblPosition.Text = $"{model.Position}.";
            lblCar.Text      = model.CarNumber.ToString();
            lblDriver.Text   = model.Driver;
            lblBehind.Text   = model.BehindLeader == 0 ? "- -" :
                               model.BehindLeader < 0 ?
                               model.BehindLeader == -1 ?
                               $"{(model.BehindLeader * -1)} lap" :
                               $"{(model.BehindLeader * -1)} laps" :
                               model.BehindLeader.ToString("0.00");
            lblLastLap.Text = model.LastLapTime.ToString("##.00");
            tsDriverFastestLap1.FastestLapTime   = model.FastestLapTime.ToString("0.00");
            tsDriverFastestLap1.FastestLapNumber = model.FastestLapNumber.ToString();
            tsDriverFastestLap1.IsFastestLap     = ((model.LastLapTime <= model.FastestLapTime) && model.FastestLapTime > 0);
            tsDriverFastestLap1.IsOffTrack       = (model.VehicleStatus == VehicleStatus.OutOfRace);

            if (Configuration.RunType == RunType.Race)
            {
                lblLastPit.Text = model.LastPitLap.ToString();
                lblStart.Text   = model.StartPosition.ToString();
            }
            else
            {
                lblLastPit.Text = String.Empty;
                lblStart.Text   = String.Empty;
            }

            if (model.IsUserFavorite)
            {
                this.BorderStyle = BorderStyle.Fixed3D;
            }
            else
            {
                this.BorderStyle = BorderStyle.None;
            }

            if (model.VehicleStatus == VehicleStatus.OutOfRace)
            {
                lblPosition.ForeColor = TSColorMap.OutOfEventColor;
                lblCar.ForeColor      = TSColorMap.OutOfEventColor;
                lblDriver.ForeColor   = TSColorMap.OutOfEventColor;
                lblBehind.ForeColor   = TSColorMap.OutOfEventColor;
                lblLastLap.ForeColor  = TSColorMap.OutOfEventColor;
                lblCar.ForeColor      = TSColorMap.OutOfEventColor;
                lblLastPit.ForeColor  = TSColorMap.OutOfEventColor;
                lblStart.ForeColor    = TSColorMap.OutOfEventColor;
            }
            else if (model.VehicleStatus == VehicleStatus.BehindTheWall)
            {
                lblPosition.ForeColor = TSColorMap.BehindTheWallColor;
                lblCar.ForeColor      = TSColorMap.BehindTheWallColor;
                lblDriver.ForeColor   = TSColorMap.BehindTheWallColor;
                lblBehind.ForeColor   = TSColorMap.BehindTheWallColor;
                lblLastLap.ForeColor  = TSColorMap.BehindTheWallColor;
                lblCar.ForeColor      = TSColorMap.BehindTheWallColor;
                lblLastPit.ForeColor  = TSColorMap.BehindTheWallColor;
                lblStart.ForeColor    = TSColorMap.BehindTheWallColor;
            }
            else
            {
                lblPosition.ForeColor = TSColorMap.StartPositionForeColor;
                lblCar.ForeColor      = TSColorMap.CarNumberForeColor;

                if (model.FastestThisLap)
                {
                    lblLastLap.ForeColor = TSColorMap.FastestThisLapForeColor;
                    lblLastLap.Text      = $"*{lblLastLap.Text}*";
                }
                else
                {
                    lblLastLap.ForeColor = TSColorMap.LastLapForeColor;
                }

                if (Configuration.RunType == RunType.Race)
                {
                    if (model.StartPosition < model.Position)
                    {
                        lblStart.ForeColor = TSColorMap.StartPositionLossForeColor;
                    }
                    else if (model.StartPosition > model.Position)
                    {
                        lblStart.ForeColor = TSColorMap.StartPositionGainForeColor;
                    }
                    else
                    {
                        lblStart.ForeColor = TSColorMap.StartPositionForeColor;
                    }

                    if (!model.IsOnTrack)
                    {
                        lblLastPit.BackColor = TSColorMap.IsInPitsBackColor;
                        lblLastPit.ForeColor = TSColorMap.IsInPitsForeColor;
                    }
                    else
                    {
                        lblLastPit.BackColor = this.BackColor;

                        var lapsSinceLastPit = model.LapsComplete - model.LastPitLap;

                        if (Configuration.PitWindow.HasValue && (model.LastPitLap > 0 && lapsSinceLastPit >= Configuration.PitWindow.Value))
                        {
                            lblLastPit.ForeColor = TSColorMap.LastPitOverLimitForeColor;
                        }
                        else if (Configuration.PitWindow.HasValue && (lapsSinceLastPit + Configuration.PitWindowWarning > Configuration.PitWindow.Value))
                        {
                            lblLastPit.ForeColor = TSColorMap.LastPitWarningForeColor;
                        }
                        else
                        {
                            lblLastPit.ForeColor = TSColorMap.LastPitForeColor;
                        }
                    }
                }
                else
                {
                    lblStart.ForeColor   = TSColorMap.StartPositionForeColor;
                    lblLastPit.ForeColor = TSColorMap.LastPitForeColor;
                }

                if ((Configuration.BattleGap > 0) && model.BehindNext > 0 && model.BehindNext < Configuration.BattleGap)
                {
                    lblBehind.ForeColor = TSColorMap.BehindWithinBattleGapForeColor;
                    lblDriver.ForeColor = TSColorMap.DriverWithinBattleGapForeColor;
                }
                else
                {
                    lblBehind.ForeColor = TSColorMap.BehindForeColor;
                    lblDriver.ForeColor = TSColorMap.DriverForeColor;
                }
            }



            switch (model.Manufacturer)
            {
            case "Tyt":
            {
                picManufacturer.Image = rNascarTimingAndScoring.Properties.Resources.toyota_logo;
                break;
            }

            case "Frd":
            {
                picManufacturer.Image = rNascarTimingAndScoring.Properties.Resources.ford_logo;
                break;
            }

            case "Chv":
            {
                picManufacturer.Image = rNascarTimingAndScoring.Properties.Resources.chevy_logo;
                break;
            }
            }
        }