private void RwyComboBoxIndexChanged(object sender, EventArgs e) { if (rwyComboBox.Items.Count > 0) { var takeoffAirport = Airports[Icao]; int index = rwyComboBox.SelectedIndex; int elevationFt = takeoffAirport.Rwys[index].Elevation; int lengthFt = takeoffAirport.Rwys[index].LengthFt; SetLength(lengthFt); elevationTxtBox.Text = elevationFt.ToString(); var heading = takeoffAirport.Rwys[index].Heading; rwyHeadingTxtBox.Text = heading.PadLeft(3, '0'); var oppositeId = RwyIdentConversion.RwyIdentOppositeDir(rwyComboBox.Text); if (oppositeId == null) { SetSlope(0.0); return; } var opposite = takeoffAirport.FindRwy(oppositeId); var slope = opposite == null ? 0.0 : (opposite.Elevation - elevationFt) * 100.0 / lengthFt; SetSlope(slope); } }
// Returns null if the runway or the opposite runway cannot be found. public static double?GetSlopePercent(this IAirport a, string runway) { var rwy = a.FindRwy(runway); if (rwy == null) { return(null); } var oppositeId = RwyIdentConversion.RwyIdentOppositeDir(runway); if (oppositeId == null) { return(null); } var opposite = a.FindRwy(oppositeId); if (opposite == null) { return(null); } return((opposite.ElevationFt - rwy.ElevationFt) * 100.0 / rwy.LengthFt); }