Пример #1
0
        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());
        }
Пример #2
0
        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);
        }
Пример #3
0
        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());
        }