private void GetRaceResults(SessionInfo info) { var query = info["SessionInfo"]["Sessions"]["SessionNum", _currentSessionNumber]["ResultsPositions"]; for (int position = 1; position <= _drivers.Count; position++) { var positionQuery = query["Position", position]; string idValue; if (!positionQuery["CarIdx"].TryGetValue(out idValue)) { // Driver not found continue; } // Find driver and update results int id = int.Parse(idValue); var driver = _drivers.SingleOrDefault(d => d.Id == id); if (driver != null) { var previousPosition = driver.Results.Current.ClassPosition; driver.UpdateResultsInfo(_currentSessionNumber.Value, positionQuery, position); if (_telemetry != null) { // Check for new leader if (previousPosition > 1 && driver.Results.Current.ClassPosition == 1) { var e = new LeaderChangeEventArgs(driver, _telemetry.SessionTime.Value); this.OnLeaderChange(e); } // Check for new best lap var bestlap = _sessionData.UpdateFastestLap(driver.CurrentResults.FastestTime, driver); if (bestlap != null) { var e = new FastLapEventArgs(driver, bestlap, _telemetry.SessionTime.Value); this.OnFastLap(e); } } } } }
protected virtual void OnFastLap(FastLapEventArgs e) { if (this.FastLapEvent != null) this.FastLapEvent(this, e); }