Exemple #1
0
        void _lt_CarMessageHandler(F1.Messages.IMessage msg)
        {
            Deployment.Current.Dispatcher.BeginInvoke(() =>
            {
                if (MainViewModel.ProgressText.Contains("Connecting"))
                {
                    MainViewModel.ProgressIsVisible = false;
                }

                F1.Messages.ICarMessage carMsg      = (F1.Messages.ICarMessage)msg;
                ViewModel.CarViewModel carViewModel = null;

                int oldPosition = 0;

                try
                {
                    carViewModel = MainViewModel.Cars.First(car => car.CarId == carMsg.CarId);
                    oldPosition  = carViewModel.TablePosition;
                }
                catch (InvalidOperationException)
                {
                    //check for it in our invisible car list
                    try
                    {
                        carViewModel = _invisibleCars.First(car => car.CarId == carMsg.CarId);
                        carViewModel.IsDataEstimationEnabled = MainViewModel.IsDataEstimationEnabled;
                        oldPosition = carViewModel.TablePosition;
                    }
                    catch (InvalidOperationException)
                    {
                        //not there so create new
                        carViewModel                         = new ViewModel.CarViewModel();
                        carViewModel.CarId                   = carMsg.CarId;
                        carViewModel.Position                = 0;
                        carViewModel.TablePosition           = 0;
                        carViewModel.IsDataEstimationEnabled = MainViewModel.IsDataEstimationEnabled;
                        _invisibleCars.Add(carViewModel);
                    }
                }

                UpdateCar(carViewModel, carMsg);
                UpdatePositionInList(oldPosition, carViewModel);
            });
        }
        void _lt_CarMessageHandler(F1.Messages.IMessage msg)
        {
            var task = Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
            {
                MainViewModel.ProgressIsVisible = false;

                F1.Messages.ICarMessage carMsg       = (F1.Messages.ICarMessage)msg;
                ViewModels.CarViewModel carViewModel = null;

                int oldPosition = 0;

                try
                {
                    carViewModel = MainViewModel.Cars.First(car => car.CarId == carMsg.CarId);
                    oldPosition  = carViewModel.TablePosition;
                }
                catch (InvalidOperationException)
                {
                    //check for it in our invisible car list
                    try
                    {
                        carViewModel = _invisibleCars.First(car => car.CarId == carMsg.CarId);
                        carViewModel.IsDataEstimationEnabled = MainViewModel.IsDataEstimationEnabled;
                        oldPosition = carViewModel.TablePosition;
                    }
                    catch (InvalidOperationException)
                    {
                        //not there so create new
                        carViewModel                         = new ViewModels.CarViewModel();
                        carViewModel.CarId                   = carMsg.CarId;
                        carViewModel.Position                = 0;
                        carViewModel.TablePosition           = 0;
                        carViewModel.IsDataEstimationEnabled = MainViewModel.IsDataEstimationEnabled;
                        _invisibleCars.Add(carViewModel);
                    }
                }

                UpdateCar(carViewModel, carMsg);
                UpdatePositionInList(oldPosition, carViewModel);
            });
        }
Exemple #3
0
        private void UpdateCar(ViewModel.CarViewModel car, F1.Messages.ICarMessage msg)
        {
            if (msg is F1.Messages.Car.CarDriver)
            {
                F1.Messages.Car.CarDriver carDriver = (F1.Messages.Car.CarDriver)msg;
                if (carDriver.Name != "")
                {
                    car.DriverName = carDriver.Name;

                    try
                    {
                        MainViewModel.DriversNames.Add(Converters.DriverNameConverter.Shorten(carDriver.Name), carDriver.Name);
                    }
                    catch (ArgumentException)
                    {
                        //such key already exists
                    }
                }
                car.DriverNameColor = GetColor(msg.Colour);
            }

            if (msg is F1.Messages.Car.CarInterval)
            {
                F1.Messages.Car.CarInterval carInt = (F1.Messages.Car.CarInterval)msg;
                car.SetInterval(carInt.Interval, carInt.IntervalType, GetColor(msg.Colour));
                MainViewModel.UpdateGaps(car.TablePosition);
            }

            if (msg is F1.Messages.Car.CarLapTime)
            {
                F1.Messages.Car.CarLapTime carLapTime = (F1.Messages.Car.CarLapTime)msg;
                car.SetLapTime(carLapTime.LapTime, carLapTime.LapTimeType, GetColor(msg.Colour));
            }

            if (msg is F1.Messages.Car.CarLapCount)
            {
                F1.Messages.Car.CarLapCount lapCount = (F1.Messages.Car.CarLapCount)msg;
                car.LapCountSet   = lapCount.LapCount;
                car.LapCountColor = GetColor(msg.Colour);
            }

            if (msg is F1.Messages.Car.CarPitCount)
            {
                F1.Messages.Car.CarPitCount pitCount = (F1.Messages.Car.CarPitCount)msg;
                car.PitCountSet   = pitCount.Count;
                car.PitCountColor = GetColor(msg.Colour);
            }

            if (msg is F1.Messages.Car.CarSectorTime1)
            {
                F1.Messages.Car.CarSectorTime1 sect1 = (F1.Messages.Car.CarSectorTime1)msg;
                car.SetSector1Time(sect1.SectorTime, sect1.SectorTimeType, GetColor(msg.Colour));
            }

            if (msg is F1.Messages.Car.CarSectorTime2)
            {
                F1.Messages.Car.CarSectorTime2 sect2 = (F1.Messages.Car.CarSectorTime2)msg;
                car.SetSector2Time(sect2.SectorTime, sect2.SectorTimeType, GetColor(msg.Colour));
            }

            if (msg is F1.Messages.Car.CarSectorTime3)
            {
                F1.Messages.Car.CarSectorTime3 sect3 = (F1.Messages.Car.CarSectorTime3)msg;
                car.SetSector3Time(sect3.SectorTime, sect3.SectorTimeType, GetColor(msg.Colour));
            }

            if (msg is F1.Messages.Car.CarNumber)
            {
                F1.Messages.Car.CarNumber carNum = (F1.Messages.Car.CarNumber)msg;
                car.CarNumberSet   = carNum.Number;
                car.CarNumberColor = GetColor(msg.Colour);
            }

            if (msg is F1.Messages.Car.PracticeBestLapTime)
            {
                F1.Messages.Car.PracticeBestLapTime lapTime = (F1.Messages.Car.PracticeBestLapTime)msg;
                car.SetBestPracticeLapTime(lapTime.BestLap, lapTime.BestLapType, GetColor(msg.Colour));
                car.BestPracticeLapTimeColor = GetColor(lapTime.Colour);
            }

            if (msg is F1.Messages.Car.QualifyPeriodTime1)
            {
                F1.Messages.Car.QualifyPeriodTime1 q1Time = (F1.Messages.Car.QualifyPeriodTime1)msg;
                car.SetQ1Time(q1Time.SectorTime, q1Time.SectorTimeType, GetColor(msg.Colour));
            }

            if (msg is F1.Messages.Car.QualifyPeriodTime2)
            {
                F1.Messages.Car.QualifyPeriodTime2 q2Time = (F1.Messages.Car.QualifyPeriodTime2)msg;
                car.SetQ2Time(q2Time.SectorTime, q2Time.SectorTimeType, GetColor(msg.Colour));
            }

            if (msg is F1.Messages.Car.QualifyPeriodTime3)
            {
                F1.Messages.Car.QualifyPeriodTime3 q3Time = (F1.Messages.Car.QualifyPeriodTime3)msg;
                car.SetQ3Time(q3Time.SectorTime, q3Time.SectorTimeType, GetColor(msg.Colour));
            }


            if (msg is F1.Messages.Car.CarPosition)
            {
                F1.Messages.Car.CarPosition carPos = (F1.Messages.Car.CarPosition)msg;

                car.Position = carPos.Position;

                if (msg.Colour != F1.Messages.CarColours.Unknown)
                {
                    car.PositionColor = GetColor(msg.Colour);
                }
            }

            if (msg is F1.Messages.Car.CarPositionUpdate)
            {
                F1.Messages.Car.CarPositionUpdate carPos = (F1.Messages.Car.CarPositionUpdate)msg;

                if (carPos.Position >= 0)
                {
                    //car.Position = carPos.Position;
                    car.TablePosition = carPos.Position;
                }

                if (msg.Colour != F1.Messages.CarColours.Unknown)
                {
                    car.PositionColor = GetColor(msg.Colour);
                }
            }

            if (msg is F1.Messages.Car.CarGap)
            {
                F1.Messages.Car.CarGap carGap = (F1.Messages.Car.CarGap)msg;
                car.SetGap(carGap.Gap, carGap.GapType);
                car.GapColor = GetColor(msg.Colour);
            }
        }