Example #1
0
        public override void Update(ConfigurationSection rootNode, API api)
        {
            List <Dictionary <string, object> > qualiResults = rootNode.GetMapList("QualifyResultsInfo.Results");

            if (qualiResults == null)
            {
                return;
            }

            foreach (Dictionary <string, object> qualiResult in qualiResults)
            {
                string i = qualiResult.GetDictValue("CarIdx");
                if (i == null)
                {
                    continue;
                }

                int carIdx = int.Parse(i);

                GridItem item = GridPositions.Find(g => g.CarIndex == carIdx);
                if (item == null)
                {
                    item = new GridItem();
                    GridPositions.Add(item);
                }

                item.Update(qualiResult, api, this);
            }
        }
Example #2
0
        public override void Update(ConfigurationSection rootNode, API api)
        {
            List <Dictionary <string, object> > sessions        = rootNode.GetMapList("SessionInfo.Sessions");
            Dictionary <string, object>         session         = sessions[sessions.Count - 1];
            List <Dictionary <string, object> > resultPositions = session.Get("ResultsPositions") as List <Dictionary <string, object> >;

            foreach (Dictionary <string, object> resultPosition in resultPositions)
            {
                string s = resultPosition.GetDictValue("CarIdx");
                if (s == null)
                {
                    continue;
                }

                int carIdx             = int.Parse(s);
                LiveStandingsItem item = Items.Find(i => i.Driver.CarIndex == carIdx);
                if (item == null)
                {
                    item = new LiveStandingsItem(((DriverModule)api.FindModule("DriverModule")).FindDriver(carIdx));
                    this.AddComponent(item);
                    Items.Add(item);
                }

                item.Update(resultPosition, api, this);
            }

            UpdateLivePositions();
        }
Example #3
0
        public override void Update(ConfigurationSection rootNode, API api)
        {
            List <Dictionary <string, object> > driverMapList = rootNode.GetMapList("DriverInfo.Drivers");

            foreach (Dictionary <string, object> dict in driverMapList)
            {
                object carIndex = null;
                if (dict.TryGetValue("CarIdx", out carIndex) && carIndex is string)
                {
                    int carIdx = int.Parse((string)carIndex);
                    if (!driverExists(carIdx))
                    {
                        Driver driver = parseDriver(dict);
                        if (driver != null)
                        {
                            Drivers.Add(driver);
                            LiveStandingsModule m = API.Instance.FindModule("LiveStandings") as LiveStandingsModule;
                            if (!m.ContainsItem(carIdx))
                            {
                                m.Items.Add(new LiveStandingsItem(driver));
                            }
                        }
                    }
                }
            }
        }
Example #4
0
        public override void Update(ConfigurationSection rootNode, API api)
        {
            FollowedDriver = (int)api.GetData("CamCarIdx");
            CurrentCamera  = (int)api.GetData("CamGroupNumber");

            List <Dictionary <string, object> > groups = rootNode.GetMapList("CameraInfo.Groups");

            if (groups.Count == Cameras.Count)
            {
                return;
            }

            foreach (Dictionary <string, object> dict in groups)
            {
                int id = int.Parse(dict.GetDictValue("GroupNum"));
                if (Cameras.FindIndex(c => c.Id == id) >= 0)
                {
                    continue;
                }

                Camera cam = new Camera();
                cam.Id   = id;
                cam.Name = dict.GetDictValue("GroupName");
                Cameras.Add(cam);
            }
        }
Example #5
0
        public override void Update(ConfigurationSection rootNode, API api)
        {
            ConfigurationSection weekendInfo    = rootNode.GetConfigurationSection("WeekendInfo");
            ConfigurationSection weekendOptions = weekendInfo.GetConfigurationSection("WeekendOptions");

            Track.Name = weekendInfo.GetString("TrackName");
            Track.Id   = int.Parse(weekendInfo.GetString("TrackID"));
            string length = weekendInfo.GetString("TrackLength");

            Track.Length           = float.Parse(length.Substring(0, length.Length - 3).Replace('.', ',')) * 1000;
            Track.DisplayName      = weekendInfo.GetString("TrackDisplayName");
            Track.DisplayShortName = weekendInfo.GetString("TrackDisplayShortName");
            Track.City             = weekendInfo.GetString("TrackCity");
            Track.Country          = weekendInfo.GetString("TrackCountry");
            string alt = weekendInfo.GetString("TrackAltitude");

            Track.Altitude = float.Parse(alt.Substring(0, alt.Length - 2).Replace('.', ','));
            string lat = weekendInfo.GetString("TrackLatitude");

            Track.Latitude = float.Parse(lat.Substring(0, lat.Length - 2).Replace('.', ','));
            string lon = weekendInfo.GetString("TrackLongitude");

            Track.Longitude     = float.Parse(lon.Substring(0, lon.Length - 2).Replace('.', ','));
            Track.NumberOfTurns = int.Parse(weekendInfo.GetString("TrackNumTurns"));
            string pl = weekendInfo.GetString("TrackPitSpeedLimit");

            Track.PitSpeedLimit = float.Parse(pl.Substring(0, pl.Length - 4).Replace('.', ','));
            string trackType = weekendInfo.GetString("TrackType");

            if (trackType.StartsWith("road"))
            {
                Track.TrackType = TrackType.Road;
            }
            else if (trackType.StartsWith("oval"))
            {
                Track.TrackType = TrackType.Oval;
            }
            else
            {
                Track.TrackType = TrackType.None;
            }

            Weather.Skies = (Skies)Enum.Parse(typeof(Skies), weekendInfo.GetString("TrackSkies").Replace(" ", ""));
            string airTemp = weekendInfo.GetString("TrackAirTemp");

            Weather.AirTemp = float.Parse(airTemp.Substring(0, airTemp.Length - 2).Replace('.', ','));
            string trackTemp = weekendInfo.GetString("TrackSurfaceTemp");

            Weather.TrackTemp = float.Parse(trackTemp.Substring(0, trackTemp.Length - 2).Replace('.', ','));
            string windSpeed = weekendInfo.GetString("TrackWindVel");

            Weather.WindSpeed = float.Parse(windSpeed.Substring(0, windSpeed.Length - 4).Replace('.', ','));
            string humidity = weekendOptions.GetString("RelativeHumidity");

            Weather.Humidity = int.Parse(humidity.Substring(0, humidity.Length - 2));

            Track.Sectors.Clear();
            ConfigurationSection splitTime = rootNode.GetConfigurationSection("SplitTimeInfo");

            foreach (Dictionary <string, object> dict in splitTime.GetMapList("Sectors"))
            {
                Track.Sectors.Add(float.Parse(dict.GetDictValue("SectorStartPct").Replace('.', ',')));
            }
        }
Example #6
0
        public override void Update(ConfigurationSection rootNode, API api)
        {
            SessionState = (SessionState)api.GetData("SessionState");

            List <Dictionary <string, object> > sessions = rootNode.GetMapList("SessionInfo.Sessions");
            Dictionary <string, object>         session  = sessions[sessions.Count - 1];

            object sessionLaps;

            if (session.TryGetValue("SessionLaps", out sessionLaps) && sessionLaps is string)
            {
                string laps = (string)sessionLaps;
                if (laps.StartsWith("unlimited"))
                {
                    LapsTotal = int.MaxValue;
                }
                else
                {
                    LapsTotal = int.Parse(laps);
                }
            }

            object sessionType;

            if (session.TryGetValue("SessionType", out sessionType) && sessionType is string)
            {
                string type = (string)sessionType;
                switch (type)
                {
                case "Offline Testing":
                    SessionType = Data.SessionType.OfflineTesting;
                    break;

                case "Practice":
                    SessionType = Data.SessionType.Practice;
                    break;

                case "Qualifying":
                    SessionType = Data.SessionType.Qualifying;
                    break;

                case "Race":
                    if (LapsTotal == int.MaxValue)
                    {
                        SessionType = Data.SessionType.TimeRace;
                    }
                    else
                    {
                        SessionType = Data.SessionType.LapRace;
                    }
                    break;

                case "Time Trial":
                    SessionType = Data.SessionType.TimeTrial;
                    break;

                default:
                    SessionType = Data.SessionType.None;
                    break;
                }
            }

            SessionFlag newFlag = (SessionFlag)Enum.Parse(typeof(SessionFlag), ((int)api.GetData("SessionFlags")).ToString(), true);

            if (newFlag.FlagSet(SessionFlag.White))
            {
                Application.Current.Dispatcher.BeginInvoke(new Action(() =>
                {
                    //Controller.TMTVO.Instance.Window.LapsRemainingFadeIn(1);
                }));
            }

            SessionFlags = newFlag;

            this.TimeRemaining = (int)(double)api.GetData("SessionTimeRemain");
            int lapsRemain = (int)api.GetData("SessionLapsRemain");

            if (lapsRemain + 1 <= 5 && lapsRemain + 1 > 0)
            {
                Application.Current.Dispatcher.BeginInvoke(new Action(() =>
                {
                    //Controller.TMTVO.Instance.Window.LapsRemainingFadeIn(lapsRemain + 1);
                }));
            }

            this.LapsDriven = LapsTotal - lapsRemain;
            object sessionTime;

            if (session.TryGetValue("SessionTime", out sessionTime) && sessionTime is string)
            {
                string time = ((string)sessionTime).Substring(0, ((string)sessionTime).Length - 4).Replace('.', ',');
                if (time.StartsWith("unlim"))
                {
                    TimeTotal = int.MaxValue;
                }
                else
                {
                    TimeTotal = (int)float.Parse(time);
                }
            }
        }