diff --git a/RaceOverlay/Overlays/FuelCalculator/FuelCalculator.xaml b/RaceOverlay/Overlays/FuelCalculator/FuelCalculator.xaml index ad7d16e..1c3ea74 100644 --- a/RaceOverlay/Overlays/FuelCalculator/FuelCalculator.xaml +++ b/RaceOverlay/Overlays/FuelCalculator/FuelCalculator.xaml @@ -24,6 +24,8 @@ + + @@ -37,8 +39,14 @@ - - + + + + + + + + diff --git a/RaceOverlay/Overlays/FuelCalculator/FuelCalculator.xaml.cs b/RaceOverlay/Overlays/FuelCalculator/FuelCalculator.xaml.cs index bb1041d..fdb9912 100644 --- a/RaceOverlay/Overlays/FuelCalculator/FuelCalculator.xaml.cs +++ b/RaceOverlay/Overlays/FuelCalculator/FuelCalculator.xaml.cs @@ -19,6 +19,8 @@ public partial class FuelCalculator : Overlay private float _currentFuel; private iRacingData _data; private int _lap; + private TimeSpan _lastTimeEnteredTrack; + private bool _isOnTrack = false; // Calculated values private float _fuelPerLap; @@ -33,10 +35,11 @@ public partial class FuelCalculator : Overlay public FuelCalculator() : base("Fuel Calculator","This Overlay calculates the fuel needed to finish") { InitializeComponent(); - _setWindowSize(160, 60); + _setWindowSize(190, 100); _getConfig(); + _lastTimeEnteredTrack = TimeSpan.Zero; _lastLapFuel = new List(); _lastLapTimes = new List(); @@ -74,8 +77,19 @@ public override void _updateWindow() FuelNeededText.Background = Brushes.Red; FuelNeededText.Text = _fuelToFinish.ToString("F2"); } + var fuelLaps = CalcFuelLaps(); + TimeInStintText.Text = (new TimeSpan(DateTime.Now.Ticks) - _lastTimeEnteredTrack).ToString(@"hh\:mm\:ss"); FuelInTank.Text = _currentFuel.ToString("F2"); - LapsText.Text = CalcFuelLaps().ToString("F1"); + LapsText.Text = fuelLaps.ToString("F1"); + try + { + TimeLeftText.Text = "~" + TimeSpan.FromSeconds(fuelLaps * _avgLapTime).ToString(@"hh\:mm\:ss"); + } + catch (Exception) + { + TimeLeftText.Text = "NaN"; + } + } public override void _getData() @@ -84,7 +98,8 @@ public override void _getData() _currentFuel = _data.LocalCarTelemetry.FuelLevel; Lap = _data.LocalCarTelemetry.Lap; - + OnTrack = !_data.Pitstop.InPit || _data.InGarage; + } public override void UpdateThreadMethod() @@ -138,6 +153,24 @@ public int Lap } } } + + public bool OnTrack + { + get => _isOnTrack; + set + { + if (_isOnTrack != value) + { + _isOnTrack = value; + OnPropertyChanged(); + if (_isOnTrack) + { + _lastTimeEnteredTrack = new TimeSpan(DateTime.Now.Ticks); + } + } + } + } + private void OnLapChanged() {