private void InitSession() { CurrentGroundSpeed = 0; _numberOfSpeedReadings = 0; _totalOfSpeedReadings = 0; AverageGroundSpeed = 0; MaximumGroundSpeed = 0; MaximumAltitude = 0; MinimumAltitude = int.MaxValue; SpeedAltitudeAdjusted = 0; TotalDistanceTravelled = 0; TotalShipRepairs = 0; TotalSynthRepairs = 0; _lastLocation = null; SessionStartTime = DateTime.MinValue; SessionStartLocation = null; TotalSRVsDestroyed = 0; string commanderName = ""; if (_telemetry.ContainsKey("CommanderName")) { commanderName = _telemetry["CommanderName"]; } _telemetry.Clear(); _telemetry.Add("CommanderName", commanderName); _telemetry.Add("CurrentGroundSpeed", "0 m/s"); _telemetry.Add("CurrentHeading", "Unknown"); _telemetry.Add("HullStrength", $"{(HullHealth * 100).ToString("F1")}%"); _telemetry.Add("Pips", String.Join(",", Pips)); _telemetry.Add("Shield", "Unknown"); _telemetry.Add("CargoScoop", "Unknown"); _telemetry.Add("AverageGroundSpeed", "0 m/s"); _telemetry.Add("MaximumGroundSpeed", "0 m/s"); _telemetry.Add("DistanceFromStart", "0"); _telemetry.Add("TotalDistanceTravelled", "0"); _telemetry.Add("TotalShipRepairs", "0"); _telemetry.Add("TotalSynthRepairs", "0"); _telemetry.Add("TotalSRVsDestroyed", "0"); _telemetry.Add("SessionStartTime", ""); _telemetry.Add("SessionDate", ""); _telemetry.Add("SessionTime", "00:00:00"); _telemetry.Add("CurrentAltitude", "0"); _telemetry.Add("MaximumAltitude", "NA"); _telemetry.Add("MinimumAltitude", "NA"); _telemetry.Add("CurrentLatitude", "NA"); _telemetry.Add("CurrentLongitude", "NA"); _telemetry.Add("SpeedAltitudeAdjusted", SpeedAltitudeAdjusted.ToString()); _telemetry.Add("MaximumSpeedAltitudeAdjusted", MaximumSpeedAltitudeAdjusted.ToString()); SessionHistory.Clear(); _srvTelemetryDisplay?.UpdateTargetData(Telemetry()); }
private bool CalculateSpeed(EDLocation CurrentLocation, DateTime TimeStamp) { if (_speedCalculationPreviousLocation == null) { _speedCalculationPreviousLocation = CurrentLocation; _speedCalculationTimeStamp = TimeStamp; return(false); } TimeSpan timeBetweenLocations = TimeStamp.Subtract(_speedCalculationTimeStamp); if (timeBetweenLocations.TotalMilliseconds < 750) { return(false); } // We take a speed calculation once every 750 milliseconds double distanceBetweenLocations = EDLocation.DistanceBetween(_speedCalculationPreviousLocation, CurrentLocation);//EDLocation.DistanceBetweenIncludingAltitude(_speedCalculationPreviousLocation, CurrentLocation); if (_speedCalculationPreviousLocation.Altitude != CurrentLocation.Altitude) { double distanceWithAltitudeAdjustment = Math.Sqrt(Math.Pow(distanceBetweenLocations, 2) + Math.Pow(Math.Abs(_speedCalculationPreviousLocation.Altitude - CurrentLocation.Altitude), 2)); SpeedAltitudeAdjusted = Convert.ToInt32((distanceWithAltitudeAdjustment * 1000) / (double)timeBetweenLocations.TotalMilliseconds); _telemetry["SpeedAltitudeAdjusted"] = $"{SpeedAltitudeAdjusted.ToString()} m/s"; if (SpeedAltitudeAdjusted > MaximumSpeedAltitudeAdjusted) { MaximumSpeedAltitudeAdjusted = SpeedAltitudeAdjusted; _telemetry["MaximumSpeedAltitudeAdjusted"] = $"{MaximumSpeedAltitudeAdjusted.ToString()} m/s"; } } double speedInMS = (distanceBetweenLocations * 1000) / (double)timeBetweenLocations.TotalMilliseconds; _speedCalculationPreviousLocation = CurrentLocation; _speedCalculationTimeStamp = TimeStamp; // Update the total average speed _totalOfSpeedReadings += speedInMS; _numberOfSpeedReadings++; AverageGroundSpeed = (int)(_totalOfSpeedReadings / _numberOfSpeedReadings); _telemetry["AverageGroundSpeed"] = $"{AverageGroundSpeed} m/s"; CurrentGroundSpeed = (int)speedInMS; _telemetry["CurrentGroundSpeed"] = $"{CurrentGroundSpeed} m/s"; if (CurrentGroundSpeed > MaximumGroundSpeed) { MaximumGroundSpeed = CurrentGroundSpeed; _telemetry["MaximumGroundSpeed"] = $"{MaximumGroundSpeed} m/s"; } return(true); }
private void InitSession() { CurrentGroundSpeed = 0; _numberOfSpeedReadings = 0; _totalOfSpeedReadings = 0; AverageGroundSpeed = 0; MaximumGroundSpeed = 0; MaximumAltitude = 0; SpeedAltitudeAdjusted = 0; TotalDistanceTravelled = 0; TotalShipRepairs = 0; TotalSynthRepairs = 0; SessionStartTime = DateTime.Now; SessionStartLocation = null; TotalSRVsDestroyed = 0; _telemetry.Clear(); _telemetry.Add("CurrentGroundSpeed", CurrentGroundSpeed.ToString()); _telemetry.Add("CurrentHeading", "Unknown"); _telemetry.Add("HullStrength", $"{(HullHealth * 100).ToString("F1")}%"); _telemetry.Add("AverageGroundSpeed", AverageGroundSpeed.ToString()); _telemetry.Add("MaximumGroundSpeed", MaximumGroundSpeed.ToString()); _telemetry.Add("DistanceFromStart", "0m"); _telemetry.Add("TotalDistanceTravelled", TotalDistanceTravelled.ToString("F1")); _telemetry.Add("TotalShipRepairs", TotalShipRepairs.ToString()); _telemetry.Add("TotalSynthRepairs", TotalSynthRepairs.ToString()); _telemetry.Add("TotalSRVsDestroyed", "0"); _telemetry.Add("SessionStartTime", ""); _telemetry.Add("SessionDate", ""); _telemetry.Add("SessionTime", "00:00:00"); _telemetry.Add("CurrentAltitude", "0"); _telemetry.Add("MaximumAltitude", "0"); _telemetry.Add("SpeedAltitudeAdjusted", SpeedAltitudeAdjusted.ToString()); _telemetry.Add("MaximumSpeedAltitudeAdjusted", MaximumSpeedAltitudeAdjusted.ToString()); SessionHistory.Clear(); _srvTelemetryDisplay?.UpdateTargetData(Telemetry()); }