X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FATC%2FCommStation.cxx;h=bdbb471145d801ac0205d55a85677907db558f72;hb=831f75a0309fd8ef729f7f2407c17e13cccf0bd9;hp=45bc2cc08e10454238fb43323d084811e3a6af67;hpb=2ef1e5be521fffae3f8ce73b4ef09351ce516852;p=flightgear.git diff --git a/src/ATC/CommStation.cxx b/src/ATC/CommStation.cxx index 45bc2cc08..bdbb47114 100644 --- a/src/ATC/CommStation.cxx +++ b/src/ATC/CommStation.cxx @@ -1,67 +1,36 @@ #include "CommStation.hxx" - -#include - -#include - -namespace { - -typedef std::multimap FrequencyMap; -static FrequencyMap static_frequencies; - -typedef std::pair FrequencyMapRange; - -} // of anonymous namespace +#include +#include namespace flightgear { -CommStation::CommStation(const std::string& name, FGPositioned::Type t, const SGGeod& pos, int range, int freq) : - FGPositioned(t, name, pos), +CommStation::CommStation(PositionedID aGuid, const std::string& name, FGPositioned::Type t, const SGGeod& pos, int range, int freq) : + FGPositioned(aGuid, t, name, pos), mRangeNM(range), mFreqKhz(freq), - mAirport(NULL) -{ - static_frequencies.insert(std::make_pair(freq, this)); - - init(true); + mAirport(0) +{ } -void CommStation::setAirport(FGAirport* apt) +void CommStation::setAirport(PositionedID apt) { mAirport = apt; } - -double CommStation::freqMHz() const + +FGAirportRef CommStation::airport() const { - return mFreqKhz / 100.0; + return FGPositioned::loadById(mAirport); } -PositionedBinding* -CommStation::createBinding(SGPropertyNode* nd) const +double CommStation::freqMHz() const { - return new CommStationBinding(this, nd); + return mFreqKhz / 1000.0; } -CommStation* +CommStationRef CommStation::findByFreq(int freqKhz, const SGGeod& pos, FGPositioned::Filter* filt) { - FrequencyMapRange range = static_frequencies.equal_range(freqKhz); - FGPositioned::List results; - for (; range.first != range.second; ++range.first) { - CommStation* sta = range.first->second; - if (filt && !filt->pass(sta)) { - continue; // filtered out - } - - results.push_back(sta); - } - - if (results.empty()) { - return NULL; - } - - FGPositioned::sortByRange(results, pos); - return (CommStation*) results.front().ptr(); + return (CommStation*) NavDataCache::instance()->findCommByFreq(freqKhz, pos, filt).ptr(); } } // of namespace flightgear