diff --git a/RaceOverlay/Overlays/Standings/Standings.xaml.cs b/RaceOverlay/Overlays/Standings/Standings.xaml.cs index d7a741e..97ccdc4 100644 --- a/RaceOverlay/Overlays/Standings/Standings.xaml.cs +++ b/RaceOverlay/Overlays/Standings/Standings.xaml.cs @@ -111,74 +111,77 @@ public override void _updateWindow() for (int i = playerPosition - 2 + offset; i < playerPosition + 2 + offset; i++) { - Body.RowDefinitions.Add(new RowDefinition()); - DriverModel driver = _getDriverOnClassPosition(i, playerCarClass); - string interval; - - if (driver == null) + try { - - continue; - } - - if(i > 1) - { - interval = TimeSpan.FromMilliseconds( - _data.GetGapBetweenMs( - _getDriverOnClassPosition(i - 1, playerCarClass).Idx, - driver.Idx)).ToString(@"ss\.f"); - } - else - { - interval = "Leader"; - } - - - + Body.RowDefinitions.Add(new RowDefinition()); + DriverModel driver = _getDriverOnClassPosition(i, playerCarClass); + string interval; - if (driver.Idx == _playerCarIdx) - { - StandingsRow playerRow = new StandingsRow( - driver.Name, - driver.CarNumber, - driver.ClassPosition, - MainWindow.IrsdkSharper.Data.GetFloat("CarIdxLastLapTime", driver.Idx), - MainWindow.IrsdkSharper.Data.GetFloat("CarIdxBestLapTime", driver.Idx), - driver.iRating, - driver.ClassColorCode, - _data.GetGapToClassLeaderMS(_getDriverOnClassPosition(1, playerCarClass).Idx, driver.Idx), - interval, - driver.License); + if (driver == null || driver.ClassPosition == 0) + { + + continue; + } + + if (i > 1) + { + interval = TimeSpan.FromMilliseconds( + _data.GetGapBetweenMs( + _getDriverOnClassPosition(i - 1, playerCarClass).Idx, + driver.Idx)).ToString(@"ss\.f"); + } + else + { + interval = "Leader"; + } - playerRow.SetToPlayerRow(); - Grid.SetRow(playerRow, row); - Body.Children.Add(playerRow); + if (driver.Idx == _playerCarIdx) + { + StandingsRow playerRow = new StandingsRow( + driver.Name, + driver.CarNumber, + driver.ClassPosition, + MainWindow.IrsdkSharper.Data.GetFloat("CarIdxLastLapTime", driver.Idx), + MainWindow.IrsdkSharper.Data.GetFloat("CarIdxBestLapTime", driver.Idx), + driver.iRating, + driver.ClassColorCode, + _data.GetGapToClassLeaderMS(_getDriverOnClassPosition(1, playerCarClass).Idx, driver.Idx), + interval, + driver.License); + + playerRow.SetToPlayerRow(); + Grid.SetRow(playerRow, row); + Body.Children.Add(playerRow); + } + else + { + StandingsRow driverRow = new StandingsRow( + driver.Name, + driver.CarNumber, + driver.ClassPosition, + MainWindow.IrsdkSharper.Data.GetFloat("CarIdxLastLapTime", driver.Idx), + MainWindow.IrsdkSharper.Data.GetFloat("CarIdxBestLapTime", driver.Idx), + driver.iRating, + driver.ClassColorCode, + _data.GetGapToClassLeaderMS(_getDriverOnClassPosition(1, playerCarClass).Idx, driver.Idx), + interval, + driver.License); + + Grid.SetRow(driverRow, row); + Body.Children.Add(driverRow); + } } - else + catch (Exception e) { - StandingsRow driverRow = new StandingsRow( - driver.Name, - driver.CarNumber, - driver.ClassPosition, - MainWindow.IrsdkSharper.Data.GetFloat("CarIdxLastLapTime", driver.Idx), - MainWindow.IrsdkSharper.Data.GetFloat("CarIdxBestLapTime", driver.Idx), - driver.iRating, - driver.ClassColorCode, - _data.GetGapToClassLeaderMS(_getDriverOnClassPosition(1, playerCarClass).Idx, driver.Idx), - interval, - driver.License); - - Grid.SetRow(driverRow, row); - Body.Children.Add(driverRow); + Debug.WriteLine(e); } - row++; } } catch (Exception e) { - Console.WriteLine(e); + Debug.WriteLine(e); } } @@ -238,6 +241,11 @@ private int getDriverOffset(int position, int driverCount) return -2; } + if (position == 0) + { + return -3; + } + if (position == driverCount - 1) { return -1;