Ejemplo n.º 1
0
        protected static bool TryParseLength(string text, UnitSystem unitSystem, out double meters)
        {
            Match m = lengthRe.Match(text);

            if (!m.Success || !double.TryParse(m.Groups["number"].Value, out meters))
            {
                meters = 0;
                return(false);
            }
            else
            {
                LengthUnit unit;
                switch (m.Groups["unit"].Value.ToLowerInvariant())
                {
                case "ft": unit = LengthUnit.Foot; break;

                case "km": unit = LengthUnit.Kilometer; break;

                case "kyd": unit = LengthUnit.Kiloyard; break;

                case "m": unit = LengthUnit.Meter; break;

                case "mi": unit = LengthUnit.Mile; break;

                case "nm":
                case "nmi": unit = LengthUnit.NauticalMile; break;

                case "yd": unit = LengthUnit.Yard; break;

                default:
                    switch (unitSystem)
                    {
                    case UnitSystem.Imperial: unit = LengthUnit.Mile; break;

                    case UnitSystem.Metric: unit = LengthUnit.Kilometer; break;

                    case UnitSystem.NauticalImperial:
                    case UnitSystem.NauticalMetric: unit = LengthUnit.NauticalMile; break;

                    default: unit = LengthUnit.Meter; break;
                    }
                    break;
                }
                meters = ManeuveringBoard.ConvertFromUnit(meters, unit);
                return(true);
            }
        }
Ejemplo n.º 2
0
        protected static bool TryParseSpeed(string text, UnitSystem unitSystem, out double metersPerSecond)
        {
            Match m = speedRe.Match(text);

            if (!m.Success || !double.TryParse(m.Groups["number"].Value, out metersPerSecond))
            {
                metersPerSecond = 0;
                return(false);
            }
            else
            {
                SpeedUnit unit;
                switch (m.Groups["unit"].Value.ToLowerInvariant())
                {
                case "kn":
                case "kt":
                case "kts": unit = SpeedUnit.Knots; break;

                case "kph": unit = SpeedUnit.KilometersPerHour; break;

                case "mph": unit = SpeedUnit.MilesPerHour; break;

                case "mps":
                case "m/s": unit = SpeedUnit.MetersPerSecond; break;

                default:
                    switch (unitSystem)
                    {
                    case UnitSystem.Imperial: unit = SpeedUnit.MilesPerHour; break;

                    case UnitSystem.Metric: unit = SpeedUnit.KilometersPerHour; break;

                    case UnitSystem.NauticalImperial:
                    case UnitSystem.NauticalMetric: unit = SpeedUnit.Knots; break;

                    default: unit = SpeedUnit.MetersPerSecond; break;
                    }
                    break;
                }
                metersPerSecond = ManeuveringBoard.ConvertFromUnit(metersPerSecond, unit);
                return(true);
            }
        }