X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FTraffic%2FTrafficMgr.cxx;h=9ebf78c1c7c063e80ba68352d1d4073131d4a3a8;hb=63708fb0df81a357173499d0c1950525f387db44;hp=f25516a2640ef445a30b4542d75e0a35232a92e1;hpb=4175619392d2919a0eddcad879d38fe0d6fa2472;p=flightgear.git diff --git a/src/Traffic/TrafficMgr.cxx b/src/Traffic/TrafficMgr.cxx index f25516a26..9ebf78c1c 100644 --- a/src/Traffic/TrafficMgr.cxx +++ b/src/Traffic/TrafficMgr.cxx @@ -51,10 +51,9 @@ #include #include -#include - #include #include +#include #include #include #include @@ -76,7 +75,12 @@ using std::strcmp; /****************************************************************************** * TrafficManager *****************************************************************************/ -FGTrafficManager::FGTrafficManager() +FGTrafficManager::FGTrafficManager() : + inited(false), + enabled("/sim/traffic-manager/enabled"), + aiEnabled("/sim/ai/enabled"), + realWxEnabled("/environment/realwx/enabled"), + metarValid("/environment/metar/valid") { //score = 0; //runCount = 0; @@ -126,41 +130,26 @@ FGTrafficManager::~FGTrafficManager() void FGTrafficManager::init() { - ulDir *d, *d2; - ulDirEnt *dent, *dent2; - + if (!enabled || !aiEnabled) { + return; + } + heuristicsVector heuristics; HeuristicMap heurMap; if (string(fgGetString("/sim/traffic-manager/datafile")) == string("")) { - SGPath aircraftDir = globals->get_fg_root(); - SGPath path = aircraftDir; - - aircraftDir.append("AI/Traffic"); - if ((d = ulOpenDir(aircraftDir.c_str())) != NULL) { - while ((dent = ulReadDir(d)) != NULL) { - if (string(dent->d_name) != string(".") && - string(dent->d_name) != string("..") && dent->d_isdir) { - SGPath currACDir = aircraftDir; - currACDir.append(dent->d_name); - if ((d2 = ulOpenDir(currACDir.c_str())) == NULL) - return; - while ((dent2 = ulReadDir(d2)) != NULL) { - SGPath currFile = currACDir; - currFile.append(dent2->d_name); - if (currFile.extension() == string("xml")) { - SGPath currFile = currACDir; - currFile.append(dent2->d_name); - SG_LOG(SG_GENERAL, SG_DEBUG, - "Scanning " << currFile. - str() << " for traffic"); - readXML(currFile.str(), *this); - } - } - ulCloseDir(d2); - } - } - ulCloseDir(d); + simgear::Dir trafficDir(SGPath(globals->get_fg_root(), "AI/Traffic")); + simgear::PathList d = trafficDir.children(simgear::Dir::TYPE_DIR | simgear::Dir::NO_DOT_OR_DOTDOT); + + for (unsigned int i=0; igetRegistration() << " with score " << (*currAircraft)->getScore() << endl; if (!((*currAircraft)->update(now, userCart))) { + (*currAircraft)->taint(); // NOTE: With traffic manager II, this statement below is no longer true // after proper initialization, we shouldnt get here. // But let's make sure @@ -375,7 +374,7 @@ void FGTrafficManager::readTimeTableFromFile(SGPath infileName) string arrTimeGen = tokens[6]; string repeat = "WEEK"; string requiredAircraft = tokens[9]; - + if (weekdays.size() != 7) { SG_LOG(SG_GENERAL, SG_ALERT, "Found misconfigured weekdays string" << weekdays); exit(1); @@ -611,7 +610,7 @@ void FGTrafficManager::endElement(const char *name) if (fgGetBool("/sim/traffic-manager/dumpdata") == true) { SG_LOG(SG_GENERAL, SG_ALERT, "Traffic Dump AC," << homePort << "," << registration << "," << requiredAircraft << "," << acType << "," << livery << "," - << airline << "," << offset << "," << radius << "," << flighttype << "," << isHeavy << "," << mdl); + << airline << "," << m_class << "," << offset << "," << radius << "," << flighttype << "," << isHeavy << "," << mdl); } //scheduledAircraft.push_back(new FGAISchedule(mdl, // livery,