]> git.mxchange.org Git - flightgear.git/blobdiff - src/Airports/runways.cxx
Roy Vegard Ovesen:
[flightgear.git] / src / Airports / runways.cxx
index ed958ea2e213d4bc18899aa7acdc898bb2e8e9b5..5c98af7ff46023ad8390e6524b2643a385996b28 100644 (file)
@@ -54,9 +54,12 @@ operator >> ( istream& in, FGRunway& a )
         in >> a.id >> a.rwy_no >> a.lat >> a.lon >> a.heading
            >> a.length >> a.width >> a.surface_flags >> a.end1_flags
            >> tmp >> tmp >> a.end2_flags >> tmp >> tmp;
+    } else if ( a.type == "T" ) {
+        // in >> a.id >> a.rwy_no >> a.lat >> a.lon >> a.heading
+        //    >> a.length >> a.width >> a.surface_flags;
+        in >> skipeol;
     } else {
-        in >> a.id >> a.rwy_no >> a.lat >> a.lon >> a.heading
-           >> a.length >> a.width >> a.surface_flags;
+        in >> skipeol;
     }
 
     return in;
@@ -79,7 +82,9 @@ FGRunwayList::FGRunwayList( const string& file ) {
     FGRunway rwy;
     while ( in ) {
         in >> rwy;
-        runways.insert(pair<const string, FGRunway>(rwy.id, rwy));
+        if(rwy.type == "R") {
+            runways.insert(pair<const string, FGRunway>(rwy.id, rwy));
+        }
     }
 }
 
@@ -121,7 +126,7 @@ static string GetReverseRunwayNo(string rwyno) {
            << rwyno << " passed to GetReverseRunwayNo(...)");
        }
     }
-    return((string)buf);
+    return(buf);
 }
 
 
@@ -144,16 +149,21 @@ bool FGRunwayList::search( const string& aptid, FGRunway* r ) {
 bool FGRunwayList::search( const string& aptid, const string& rwyno,
                            FGRunway *r )
 {
-    // standardize input number
+    string revrwyno = "";
     string runwayno = rwyno;
-    string tmp = runwayno.substr(1, 1);
-    if (( tmp == "L" || tmp == "R" || tmp == "C" ) || (runwayno.size() == 1)) {
-       tmp = runwayno;
-       runwayno = "0" + tmp;
-        SG_LOG( SG_GENERAL, SG_INFO,
-                "Standardising rwy number from " << tmp << " to " << runwayno );
+    if ( runwayno.length() ) {
+        // standardize input number
+        string tmp = runwayno.substr(1, 1);
+        if (( tmp == "L" || tmp == "R" || tmp == "C" )
+            || (runwayno.size() == 1))
+        {
+            tmp = runwayno;
+            runwayno = "0" + tmp;
+            SG_LOG( SG_GENERAL, SG_INFO, "Standardising rwy number from "
+                    << tmp << " to " << runwayno );
+        }
+        revrwyno = GetReverseRunwayNo(runwayno);
     }
-    string revrwyno = GetReverseRunwayNo(runwayno);
 
     runway_map_iterator pos;
     for ( pos = runways.lower_bound( aptid );
@@ -169,7 +179,9 @@ bool FGRunwayList::search( const string& aptid, const string& rwyno,
             // results if this one matches
             current = pos;
             *r = pos->second;
-           r->rwy_no = revrwyno;
+            // NOTE - matching revrwyno implies that runwayno was
+            // actually correct.
+            r->rwy_no = runwayno;
             r->heading += 180.0;
             string tmp = r->end1_flags;
             r->end1_flags = r->end2_flags;