1
0
Fork 0

David Luff:

Firstly, the search of a given runway number was coming out wrong if the
reverse of the one actually in the database was given, resulting in the AI
plane going to the wrong runway.  This was caused by the fact that if the
reverse runway number to the one wanted was matched then revrwyno was
assigned to rwy.rwy_no, whereas actually it was the original runwayno that
should have been assigned.

Secondly, whilst instrumenting the search with couts to see what was going
wrong, I noticed that one runway would come up loads of times.  It turns
out that this is because taxiways and the next airport line were loaded in
as the last runway, with only the type changed, in the constructor.  Thus
the total number of runway entries for all except the last airport equalled
(no-of-runways + no-of-taxiways +  1).  I've changed a couple of lines to
fix this.

[Curt: this was partially fixed last week, but now it should be completely
fixed.  Thanks Dave!]
This commit is contained in:
curt 2003-09-02 19:12:11 +00:00
parent 2ce5cbf854
commit c81fbb937a

View file

@ -82,8 +82,10 @@ FGRunwayList::FGRunwayList( const string& file ) {
FGRunway rwy; FGRunway rwy;
while ( in ) { while ( in ) {
in >> rwy; in >> rwy;
if(rwy.type == "R") {
runways.insert(pair<const string, FGRunway>(rwy.id, rwy)); runways.insert(pair<const string, FGRunway>(rwy.id, rwy));
} }
}
} }
@ -172,7 +174,9 @@ bool FGRunwayList::search( const string& aptid, const string& rwyno,
// results if this one matches // results if this one matches
current = pos; current = pos;
*r = pos->second; *r = pos->second;
r->rwy_no = revrwyno; // NOTE - matching revrwyno implies that runwayno was
// actually correct.
r->rwy_no = runwayno;
r->heading += 180.0; r->heading += 180.0;
string tmp = r->end1_flags; string tmp = r->end1_flags;
r->end1_flags = r->end2_flags; r->end1_flags = r->end2_flags;