public static AircraftDefinition[] GetAllInstalledAircraftInYSFlightFolder()
        {
            List <AircraftDefinition> Output = new List <AircraftDefinition>();
            var ysflightDirectory            = @"C:/Program Files/YSFLIGHT.COM/YSFlight/";
            var files = GetAllAircraftLSTFilesInYSFlightFolder();

            foreach (string thisLSTFileName in files)
            {
                AircraftList thisFile = new AircraftList(thisLSTFileName);
                thisFile.Load();
                foreach (AircraftDefinition thisAircraftDefinition in thisFile.List)
                {
                    if (!System.IO.File.Exists(Path.Combine(ysflightDirectory, thisAircraftDefinition.DataFilePath)))
                    {
                        goto Error;
                    }
                    if (!System.IO.File.Exists(Path.Combine(ysflightDirectory, thisAircraftDefinition.VisualModelFilePath)))
                    {
                        goto Error;
                    }
                    if (!System.IO.File.Exists(Path.Combine(ysflightDirectory, thisAircraftDefinition.CollisionFilePath)))
                    {
                        goto Error;
                    }
                    Output.Add(thisAircraftDefinition);
                    continue;
Error:
                    Debug.AddDetailMessage(thisAircraftDefinition.ToString() + " files missing.");
                }
            }
            return(Output.ToArray());
        }
        public static bool TryParse(string input, out IPressure output)
        {
            #region Prepare Variables
            string capInput   = input.ToUpperInvariant();
            string extraction = input.ExtractNumberComponentFromMeasurementString();
            double conversion = 0;
            #endregion

            #region Convert To Double
            bool failed = !double.TryParse(extraction, out conversion);
            if (failed)
            {
                Debug.AddDetailMessage("Measurement Input not successfully converted.");
                Debug.AddDetailMessage("----" + capInput);
                output = new Pressures.Pascal(0);
                return(false);
            }
            #endregion
            #endregion
            #region Convert To Pressure
            if (capInput.EndsWithAny(Suffixes.Atmosphere))
            {
                output = new Pressures.Atmosphere(conversion);
                return(true);
            }
            if (capInput.EndsWithAny(Suffixes.Bar))
            {
                output = new Pressures.Bar(conversion);
                return(true);
            }
            if (capInput.EndsWithAny(Suffixes.KiloPascal))
            {
                output = new Pressures.KiloPascal(conversion);
                return(true);
            }
            if (capInput.EndsWithAny(Suffixes.MilliMeterOfMercury))
            {
                output = new Pressures.MilliMeterOfMercury(conversion);
                return(true);
            }
            if (capInput.EndsWithAny(Suffixes.Pascal))
            {
                output = new Pressures.Pascal(conversion);
                return(true);
            }
            if (capInput.EndsWithAny(Suffixes.PoundPerSquareInch))
            {
                output = new Pressures.PoundPerSquareInch(conversion);
                return(true);
            }
            #endregion
            #region ... Conversion
            #region Type Unrecognised
            Debug.AddDetailMessage("No Type for input Pressure conversion. Break here for details...");
            Debug.AddDetailMessage("----" + capInput);
            output = new Pressures.Pascal(0);
            return(false);

            #endregion
        }
Example #3
0
 public void DebugShowStatistics()
 {
     Debug.AddDetailMessage(Name + ": ");
     Debug.AddDetailMessage("----MODE: " + Mode());
     Debug.AddDetailMessage("----MEAN: " + Mean());
     Debug.AddDetailMessage("----STDDEV: " + StandardDeviation());
     Debug.AddDetailMessage("----MAX : " + Max());
     Debug.AddDetailMessage("----MIN : " + Min());
 }
        public static bool TryParse(string input, out IPower output)
        {
            #region Prepare Variables
            string capInput   = input.ToUpperInvariant();
            string extraction = input.ExtractNumberComponentFromMeasurementString();
            double conversion = 0;
            #endregion

            #region Convert To Double
            bool failed = !double.TryParse(extraction, out conversion);
            if (failed)
            {
                Debug.AddDetailMessage("Measurement Input not successfully converted.");
                Debug.AddDetailMessage("----" + capInput);
                output = new Powers.KiloWatt(0);
                return(false);
            }
            #endregion
            #endregion
            #region Convert To Power
            if (capInput.EndsWithAny(Suffixes.BTUPerMinute))
            {
                output = new Powers.BTUPerMinute(conversion);
                return(true);
            }
            if (capInput.EndsWithAny(Suffixes.FootPoundPerMinute))
            {
                output = new Powers.FootPoundPerMinute(conversion);
                return(true);
            }
            if (capInput.EndsWithAny(Suffixes.KiloWatt))
            {
                output = new Powers.KiloWatt(conversion);
                return(true);
            }
            if (capInput.EndsWithAny(Suffixes.USHorsePower))
            {
                output = new Powers.USHorsePower(conversion);
                return(true);
            }
            if (capInput.EndsWithAny(Suffixes.Watt))
            {
                output = new Powers.Watt(conversion);
                return(true);
            }
            #endregion
            #region ... Conversion
            #region Type Unrecognised
            Debug.AddDetailMessage("No Type for input Power conversion. Break here for details...");
            Debug.AddDetailMessage("----" + capInput);
            output = new Powers.KiloWatt(0);
            return(false);

            #endregion
        }
Example #5
0
        public static bool TryParse(string input, out ITemperature output)
        {
            #region Prepare Variables
            string capInput   = input.ToUpperInvariant();
            string extraction = input.ExtractNumberComponentFromMeasurementString();
            double conversion = 0;
            #endregion

            #region Convert To Double
            bool failed = !double.TryParse(extraction, out conversion);
            if (failed)
            {
                Debug.AddDetailMessage("Measurement Input not successfully converted.");
                Debug.AddDetailMessage("----" + capInput);
                output = new Temperatures.DegreeCelsius(0);
                return(false);
            }
            #endregion
            #endregion
            #region Convert To Temperature
            if (capInput.EndsWithAny(Suffixes.DegreeCelcius))
            {
                output = new Temperatures.DegreeCelsius(conversion);
                return(true);
            }
            if (capInput.EndsWithAny(Suffixes.DegreeKelvin))
            {
                output = new Temperatures.DegreeKelvin(conversion);
                return(true);
            }
            if (capInput.EndsWithAny(Suffixes.DegreeFahrenheit))
            {
                output = new Temperatures.DegreeFahrenheit(conversion);
                return(true);
            }
            #endregion
            #region ... Conversion
            #region Type Unrecognised
            Debug.AddDetailMessage("No Type for input Temperature conversion. Break here for details...");
            Debug.AddDetailMessage("----" + capInput);
            output = new Temperatures.DegreeCelsius(0);
            return(false);

            #endregion
        }
        public AircraftDefinition[] GetAllInstalledAircraftFromLSTFile(bool debugMode = false)
        {
            List <AircraftDefinition> Output = new List <AircraftDefinition>();
            var ysflightDirectory            = @"C:/Program Files/YSFLIGHT.COM/YSFlight/";

            Load();
            if (debugMode)
            {
                Debug.AddDetailMessage("Testing definitions in LST file for validity...");
            }
            var errors = 0;

            foreach (AircraftDefinition thisAircraftDefinition in List)
            {
                if (!System.IO.File.Exists(Path.Combine(ysflightDirectory, thisAircraftDefinition.DataFilePath)))
                {
                    goto Error;
                }
                if (!System.IO.File.Exists(Path.Combine(ysflightDirectory, thisAircraftDefinition.VisualModelFilePath)))
                {
                    goto Error;
                }
                if (!System.IO.File.Exists(Path.Combine(ysflightDirectory, thisAircraftDefinition.CollisionFilePath)))
                {
                    goto Error;
                }
                Output.Add(thisAircraftDefinition);
                continue;
Error:
                if (debugMode)
                {
                    Debug.AddDetailMessage("\"" + thisAircraftDefinition.DataFilePath + "\" entry in (" + Filename + ") has files missing - DAT, Model or Collision File. Check the pack and ensure the addon exists in the defined file path address!");
                }
                errors++;
            }
            if (debugMode)
            {
                Debug.AddDetailMessage("LST file has " + errors + " errors. " + ((errors > 0) ? ":(" : ":D"));
            }
            return(Output.ToArray());
        }
Example #7
0
        public static bool TryParse(string input, out IArea output)
        {
            #region Prepare Variables
            string capInput   = input.ToUpperInvariant();
            string extraction = input.ExtractNumberComponentFromMeasurementString();
            double conversion = 0;
            #endregion

            #region Convert To Double
            bool failed = !double.TryParse(extraction, out conversion);
            if (failed)
            {
                Debug.AddDetailMessage("Measurement Input not successfully converted.");
                Debug.AddDetailMessage("----" + capInput);
                output = new Areas.SquareMeter(0);
                return(false);
            }
            #endregion
            #endregion
            #region Convert To Area
            if (capInput.EndsWithAny(Suffixes.Acre))
            {
                output = new Areas.Acre(conversion);
                return(true);
            }
            if (capInput.EndsWithAny(Suffixes.SquareCentiMeter))
            {
                output = new Areas.SquareCentiMeter(conversion);
                return(true);
            }
            if (capInput.EndsWithAny(Suffixes.SquareFoot))
            {
                output = new Areas.SquareFoot(conversion);
                return(true);
            }
            if (capInput.EndsWithAny(Suffixes.SquareKiloMeter))
            {
                output = new Areas.SquareKiloMeter(conversion);
                return(true);
            }
            if (capInput.EndsWithAny(Suffixes.SquareMeter))
            {
                output = new Areas.SquareMeter(conversion);
                return(true);
            }
            if (capInput.EndsWithAny(Suffixes.SquareMile))
            {
                output = new Areas.SquareMile(conversion);
                return(true);
            }
            if (capInput.EndsWithAny(Suffixes.SquareMilliMeter))
            {
                output = new Areas.SquareMilliMeter(conversion);
                return(true);
            }
            if (capInput.EndsWithAny(Suffixes.SquareNauticalMile))
            {
                output = new Areas.SquareNauticalMile(conversion);
                return(true);
            }
            if (capInput.EndsWithAny(Suffixes.SquareYard))
            {
                output = new Areas.SquareYard(conversion);
                return(true);
            }
            #endregion
            #region ... Conversion
            #region Type Unrecognised
            Debug.AddDetailMessage("No Type for input Area conversion. Break here for details...");
            Debug.AddDetailMessage("----" + capInput);
            output = new Areas.SquareMeter(0);
            return(false);

            #endregion
        }
Example #8
0
        public static bool TryParse(string input, out IMass output)
        {
            #region Prepare Variables
            string capInput   = input.ToUpperInvariant();
            string extraction = input.ExtractNumberComponentFromMeasurementString();
            double conversion = 0;
            #endregion

            #region Convert To Double
            bool failed = !double.TryParse(extraction, out conversion);
            if (failed)
            {
                Debug.AddDetailMessage("Measurement Input not successfully converted.");
                Debug.AddDetailMessage("----" + capInput);
                output = new Masses.KiloGram(0);
                return(false);
            }
            #endregion
            #endregion
            #region Convert To Mass
            if (capInput.EndsWithAny(Suffixes.Carat))
            {
                output = new Masses.Carat(conversion);
                return(true);
            }
            if (capInput.EndsWithAny(Suffixes.CentiGram))
            {
                output = new Masses.CentiGram(conversion);
                return(true);
            }
            if (capInput.EndsWithAny(Suffixes.DecaGram))
            {
                output = new Masses.DecaGram(conversion);
                return(true);
            }
            if (capInput.EndsWithAny(Suffixes.Gram))
            {
                output = new Masses.Gram(conversion);
                return(true);
            }
            if (capInput.EndsWithAny(Suffixes.HectoGram))
            {
                output = new Masses.HectoGram(conversion);
                return(true);
            }
            if (capInput.EndsWithAny(Suffixes.KiloGram))
            {
                output = new Masses.KiloGram(conversion);
                return(true);
            }
            if (capInput.EndsWithAny(Suffixes.MetricTonne))
            {
                output = new Masses.MetricTonne(conversion);
                return(true);
            }
            if (capInput.EndsWithAny(Suffixes.Ounce))
            {
                output = new Masses.Ounce(conversion);
                return(true);
            }
            if (capInput.EndsWithAny(Suffixes.Pound))
            {
                output = new Masses.Pound(conversion);
                return(true);
            }
            if (capInput.EndsWithAny(Suffixes.Stone))
            {
                output = new Masses.Stone(conversion);
                return(true);
            }
            if (capInput.EndsWithAny(Suffixes.UKLongTon))
            {
                output = new Masses.UKLongTon(conversion);
                return(true);
            }
            if (capInput.EndsWithAny(Suffixes.USShortTon))
            {
                output = new Masses.USShortTon(conversion);
                return(true);
            }
            #endregion
            #region ... Conversion
            #region Type Unrecognised
            Debug.AddDetailMessage("No Type for input Mass conversion. Break here for details...");
            Debug.AddDetailMessage("----" + capInput);
            output = new Masses.KiloGram(0);
            return(false);

            #endregion
        }
Example #9
0
        public static bool TryParse(string input, out IDuration output)
        {
            #region Prepare Variables
            string capInput   = input.ToUpperInvariant();
            string extraction = input.ExtractNumberComponentFromMeasurementString();
            double conversion = 0;
            #endregion

            #region Convert To Double
            bool failed = !double.TryParse(extraction, out conversion);
            if (failed)
            {
                Debug.AddDetailMessage("Measurement Input not successfully converted.");
                Debug.AddDetailMessage("----" + capInput);
                output = new Durations.Second(0);
                return(false);
            }
            #endregion
            #endregion
            #region Convert To Duration
            if (capInput.EndsWithAny(Suffixes.Second))
            {
                output = new Durations.Second(conversion);
                return(true);
            }
            if (capInput.EndsWithAny(Suffixes.Minute))
            {
                output = new Durations.Minute(conversion);
                return(true);
            }
            if (capInput.EndsWithAny(Suffixes.Hour))
            {
                output = new Durations.Hour(conversion);
                return(true);
            }
            if (capInput.EndsWithAny(Suffixes.Day))
            {
                output = new Durations.Day(conversion);
                return(true);
            }
            if (capInput.EndsWithAny(Suffixes.Week))
            {
                output = new Durations.Week(conversion);
                return(true);
            }
            if (capInput.EndsWithAny(Suffixes.Month))
            {
                output = new Durations.Month(conversion);
                return(true);
            }
            if (capInput.EndsWithAny(Suffixes.Year))
            {
                output = new Durations.Year(conversion);
                return(true);
            }
            #endregion
            #region ... Conversion
            #region Type Unrecognised
            Debug.AddDetailMessage("No Type for input Duration conversion. Break here for details...");
            Debug.AddDetailMessage("----" + capInput);
            output = new Durations.Second(conversion);
            return(false);

            #endregion
        }
Example #10
0
        public static bool TryParse(string input, out IVolume output)
        {
            #region Prepare Variables
            string capInput   = input.ToUpperInvariant();
            string extraction = input.ExtractNumberComponentFromMeasurementString();
            double conversion = 0;
            #endregion

            #region Convert To Double
            bool failed = !double.TryParse(extraction, out conversion);
            if (failed)
            {
                Debug.AddDetailMessage("Measurement Input not successfully converted.");
                Debug.AddDetailMessage("----" + capInput);
                output = new Volumes.Litre(0);
                return(false);
            }
            #endregion
            #endregion
            #region Convert To Volume
            if (capInput.EndsWithAny(Suffixes.UK.FluidOunce))
            {
                output = new Volumes.FluidOunce(conversion);
                return(true);
            }
            if (capInput.EndsWithAny(Suffixes.UK.Gallon))
            {
                output = new Volumes.UKGallon(conversion);
                return(true);
            }
            if (capInput.EndsWithAny(Suffixes.UK.Pint))
            {
                output = new Volumes.UKPint(conversion);
                return(true);
            }
            if (capInput.EndsWithAny(Suffixes.UK.Quart))
            {
                output = new Volumes.UKQuart(conversion);
                return(true);
            }
            if (capInput.EndsWithAny(Suffixes.UK.TableSpoon))
            {
                output = new Volumes.UKTableSpoon(conversion);
                return(true);
            }
            if (capInput.EndsWithAny(Suffixes.UK.TeaSpoon))
            {
                output = new Volumes.UKTeaSpoon(conversion);
                return(true);
            }
            if (capInput.EndsWithAny(Suffixes.US.Cup))
            {
                output = new Volumes.Cup(conversion);
                return(true);
            }
            if (capInput.EndsWithAny(Suffixes.US.Gallon))
            {
                output = new Volumes.USGallon(conversion);
                return(true);
            }
            if (capInput.EndsWithAny(Suffixes.US.Pint))
            {
                output = new Volumes.USPint(conversion);
                return(true);
            }
            if (capInput.EndsWithAny(Suffixes.US.Quart))
            {
                output = new Volumes.USQuart(conversion);
                return(true);
            }
            if (capInput.EndsWithAny(Suffixes.US.TableSpoon))
            {
                output = new Volumes.USTableSpoon(conversion);
                return(true);
            }
            if (capInput.EndsWithAny(Suffixes.US.TeaSpoon))
            {
                output = new Volumes.USTeaSpoon(conversion);
                return(true);
            }
            if (capInput.EndsWithAny(Suffixes.CubicCentiMeter))
            {
                output = new Volumes.CubicCentiMeter(conversion);
                return(true);
            }
            if (capInput.EndsWithAny(Suffixes.CubicFoot))
            {
                output = new Volumes.CubicFoot(conversion);
                return(true);
            }
            if (capInput.EndsWithAny(Suffixes.CubicInch))
            {
                output = new Volumes.CubicInch(conversion);
                return(true);
            }
            if (capInput.EndsWithAny(Suffixes.CubicMeter))
            {
                output = new Volumes.CubicMeter(conversion);
                return(true);
            }
            if (capInput.EndsWithAny(Suffixes.CubicYard))
            {
                output = new Volumes.CubicYard(conversion);
                return(true);
            }
            if (capInput.EndsWithAny(Suffixes.Litre))
            {
                output = new Volumes.Litre(conversion);
                return(true);
            }
            if (capInput.EndsWithAny(Suffixes.MilliLitre))
            {
                output = new Volumes.MilliLitre(conversion);
                return(true);
            }
            #endregion
            #region ... Conversion
            #region Type Unrecognised
            Debug.AddDetailMessage("No Type for input Volume conversion. Break here for details...");
            Debug.AddDetailMessage("----" + capInput);
            output = new Volumes.Litre(0);
            return(false);

            #endregion
        }
Example #11
0
        public static bool TryParse(string input, out IEnergy output)
        {
            #region Prepare Variables
            string capInput   = input.ToUpperInvariant();
            string extraction = input.ExtractNumberComponentFromMeasurementString();
            double conversion = 0;
            #endregion

            #region Convert To Double
            bool failed = !double.TryParse(extraction, out conversion);
            if (failed)
            {
                Debug.AddDetailMessage("Measurement Input not successfully converted.");
                Debug.AddDetailMessage("----" + capInput);
                output = new Energys.KiloJoule(0);
                return(false);
            }
            #endregion
            #endregion
            #region Convert To Energy
            if (capInput.EndsWithAny(Suffixes.BritishThermalUnit))
            {
                output = new Energys.BritishThermalUnit(conversion);
                return(true);
            }
            if (capInput.EndsWithAny(Suffixes.ElectronVolt))
            {
                output = new Energys.ElectronVolt(conversion);
                return(true);
            }
            if (capInput.EndsWithAny(Suffixes.FoodCalorie))
            {
                output = new Energys.FoodCalorie(conversion);
                return(true);
            }
            if (capInput.EndsWithAny(Suffixes.FootPound))
            {
                output = new Energys.FootPound(conversion);
                return(true);
            }
            if (capInput.EndsWithAny(Suffixes.Joule))
            {
                output = new Energys.Joule(conversion);
                return(true);
            }
            if (capInput.EndsWithAny(Suffixes.KiloJoule))
            {
                output = new Energys.KiloJoule(conversion);
                return(true);
            }
            if (capInput.EndsWithAny(Suffixes.ThermalCalorie))
            {
                output = new Energys.ThermalCalorie(conversion);
                return(true);
            }
            #endregion
            #region ... Conversion
            #region Type Unrecognised
            Debug.AddDetailMessage("No Type for input Energy conversion. Break here for details...");
            Debug.AddDetailMessage("----" + capInput);
            output = new Energys.KiloJoule(0);
            return(false);

            #endregion
        }
Example #12
0
        public static bool TryParse(string input, out ISpeed output)
        {
            #region Prepare Variables
            string capInput   = input.ToUpperInvariant();
            string extraction = input.ExtractNumberComponentFromMeasurementString();
            double conversion = 0;
            #endregion

            #region Convert To Double
            bool failed = !double.TryParse(extraction, out conversion);
            if (failed)
            {
                Debug.AddDetailMessage("Measurement Input not successfully converted.");
                Debug.AddDetailMessage("----" + capInput);
                output = new Speeds.MeterPerSecond(0);
                return(false);
            }
            #endregion
            #endregion
            #region Convert To Speed
            if (capInput.EndsWithAny(Suffixes.CentiMeterPerSecond))
            {
                output = new Speeds.CentiMeterPerSecond(conversion);
                return(true);
            }
            if (capInput.EndsWithAny(Suffixes.FootPerSecond))
            {
                output = new Speeds.FootPerSecond(conversion);
                return(true);
            }
            if (capInput.EndsWithAny(Suffixes.KiloMeterPerHour))
            {
                output = new Speeds.KiloMeterPerHour(conversion);
                return(true);
            }
            if (capInput.EndsWithAny(Suffixes.Knot))
            {
                output = new Speeds.Knot(conversion);
                return(true);
            }
            if (capInput.EndsWithAny(Suffixes.MachAtSeaLevel))
            {
                output = new Speeds.MachAtSeaLevel(conversion);
                return(true);
            }
            if (capInput.EndsWithAny(Suffixes.MeterPerSecond))
            {
                output = new Speeds.MeterPerSecond(conversion);
                return(true);
            }
            if (capInput.EndsWithAny(Suffixes.MilePerHour))
            {
                output = new Speeds.MilePerHour(conversion);
                return(true);
            }
            if (capInput.EndsWithAny(Suffixes.MilliMeterPerSecond))
            {
                output = new Speeds.MilliMeterPerSecond(conversion);
                return(true);
            }
            #endregion
            #region ... Conversion
            #region Type Unrecognised
            Debug.AddDetailMessage("No Type for input Speed conversion. Break here for details...");
            Debug.AddDetailMessage("----" + capInput);
            output = new Speeds.MeterPerSecond(0);
            return(false);

            #endregion
        }
            internal static bool FindAndUpdateSetting(string command, string parameters)
            {
                try
                {
                    #region Split Command

                    string[] commandSplit = command.Split('.');

                    #endregion

                    #region Find and Modify the Setting.

                    object       TargetClass    = Settings;
                    PropertyInfo TargetProperty = typeof(SettingsLibrary).GetProperty("Settings", BindingFlags.IgnoreCase | BindingFlags.Public | BindingFlags.Static);
                    for (int i = 0; i < commandSplit.Length; i++)
                    {
                        #region Found a Matching Sub-Class, Move into it.

                        if (i < commandSplit.Length - 1)
                        {
                            try
                            {
                                TargetProperty = TargetProperty.PropertyType.GetProperty(commandSplit[i],
                                                                                         BindingFlags.IgnoreCase | BindingFlags.Public | BindingFlags.Instance);
                                TargetClass = TargetProperty.GetValue(TargetClass);
                            }
                            catch (Exception e)
                            {
                                Debug.AddErrorMessage(e, "Setting Not Found: \"" + command + "\".");
                                return(false);
                            }
                            continue;
                        }

                        #endregion

                        #region Convert the Paramters to an Object

                        PropertyInfo thisProperty = TargetProperty.PropertyType.GetProperty(commandSplit[i], BindingFlags.IgnoreCase | BindingFlags.Public | BindingFlags.Instance);
                        object       valueToSet   = ConvertParameterStringToObject(thisProperty.PropertyType, parameters, thisProperty.GetValue(TargetClass));

                        #endregion

                        #region Set the Field to the Converted Value

                        thisProperty.SetValue(TargetClass, valueToSet);
                        Debug.AddDetailMessage("Successfully Read Setting: \"" + command + "\".");
                        return(true);

                        #endregion
                    }

                    #endregion

                    #region Couldn't Find the Correct Setting.

                    return(false);

                    #endregion
                }
                catch (Exception e)
                {
                    Debug.AddErrorMessage(e, "Error in FindAndUpdateSetting");
                    return(false);
                }
            }