]> git.mxchange.org Git - flightgear.git/blobdiff - src/ATC/ATCmgr.cxx
Mathias Fröhlich:
[flightgear.git] / src / ATC / ATCmgr.cxx
index d87ed5d9650b13a46f5885f633a1a933574a8ac5..8084b0822d1704b246c7f8ec2453498a992f5974 100644 (file)
@@ -86,8 +86,8 @@ void FGATCMgr::unbind() {
 void FGATCMgr::init() {
        //cout << "ATCMgr::init called..." << endl;
        
-       comm_node[0] = fgGetNode("/radios/comm[0]/frequencies/selected-mhz", true);
-       comm_node[1] = fgGetNode("/radios/comm[1]/frequencies/selected-mhz", true);
+       comm_node[0] = fgGetNode("/instrumentation/comm[0]/frequencies/selected-mhz", true);
+       comm_node[1] = fgGetNode("/instrumentation/comm[1]/frequencies/selected-mhz", true);
        lon_node = fgGetNode("/position/longitude-deg", true);
        lat_node = fgGetNode("/position/latitude-deg", true);
        elev_node = fgGetNode("/position/altitude-ft", true);
@@ -117,9 +117,10 @@ void FGATCMgr::init() {
        voiceOK = v1->LoadVoice("default");
        voice = true;
        
-       /* I've loaded the voice even if /sim/sound/audible is false
+       /* I've loaded the voice even if /sim/sound/pause is true
        *  since I know no way of forcing load of the voice if the user
-       *  subsequently switches /sim/sound/audible to true. */
+       *  subsequently switches /sim/sound/audible to true.
+        *  (which is the right thing to do -- CLO) :-) */
 #else
        voice = false;
 #endif
@@ -220,9 +221,9 @@ bool FGATCMgr::AIRegisterAirport(string ident) {
                        //cout << "ident = " << ident << '\n';
                        AirportATC *a = new AirportATC;
                        // I'm not entirely sure that this AirportATC structure business is actually needed - it just duplicates what we can find out anyway!
-                       a->lon = ap.longitude;
-                       a->lat = ap.latitude;
-                       a->elev = ap.elevation;
+                       a->lon = ap.getLongitude();
+                       a->lat = ap.getLatitude();
+                       a->elev = ap.getElevation();
                        a->atis_freq = GetFrequency(ident, ATIS);
                        //cout << "ATIS freq = " << a->atis_freq << '\n';
                        a->atis_active = false;
@@ -237,6 +238,8 @@ bool FGATCMgr::AIRegisterAirport(string ident) {
                        a->numAI = 1;
                        airport_atc_map[ident] = a;
                        return(true);
+               } else {
+                       SG_LOG(SG_ATC, SG_ALERT, "ERROR - can't find airport " << ident << " in AIRegisterAirport(...)");
                }
        }
        return(false);
@@ -247,7 +250,7 @@ bool FGATCMgr::AIRegisterAirport(string ident) {
 // Channel is zero based
 bool FGATCMgr::CommRegisterAirport(string ident, int chan, atc_type tp) {
        SG_LOG(SG_ATC, SG_BULK, "Comm channel " << chan << " registered airport " << ident);
-       //cout << "Comm channel " << chan << " registered airport " << ident << '\n';
+       //cout << "Comm channel " << chan << " registered airport " << ident << ' ' << tp << '\n';
        if(airport_atc_map.find(ident) != airport_atc_map.end()) {
                //cout << "IN MAP - flagging set by comm..." << endl;
                airport_atc_map[ident]->set_by_comm[chan][tp] = true;
@@ -267,9 +270,9 @@ bool FGATCMgr::CommRegisterAirport(string ident, int chan, atc_type tp) {
                if(dclFindAirportID(ident, &ap)) {
                        AirportATC *a = new AirportATC;
                        // I'm not entirely sure that this AirportATC structure business is actually needed - it just duplicates what we can find out anyway!
-                       a->lon = ap.longitude;
-                       a->lat = ap.latitude;
-                       a->elev = ap.elevation;
+                       a->lon = ap.getLongitude();
+                       a->lat = ap.getLatitude();
+                       a->elev = ap.getElevation();
                        a->atis_freq = GetFrequency(ident, ATIS);
                        a->atis_active = false;
                        a->tower_freq = GetFrequency(ident, TOWER);
@@ -288,7 +291,7 @@ bool FGATCMgr::CommRegisterAirport(string ident, int chan, atc_type tp) {
                        // TODO - some airports will have a tower/ground frequency but be inactive overnight.
                        a->set_by_AI = false;
                        a->numAI = 0;
-                       a->set_by_comm[chan][tp] = true;                        
+                       a->set_by_comm[chan][tp] = true;
                        airport_atc_map[ident] = a;
                        return(true);
                }
@@ -334,7 +337,7 @@ void FGATCMgr::CommRemoveFromList(string id, atc_type tp, int chan) {
                                }
                                break;
                        }
-                       airport_atc_map[id] = a;
+                       //airport_atc_map[id] = a;
                        return;
                } else {
                        switch(chan) {
@@ -371,7 +374,7 @@ void FGATCMgr::RemoveFromList(string id, atc_type tp) {
        while(it != atc_list.end()) {
                //cout << "type = " << (*it)->GetType() << '\n';
                //cout << "Ident = " << (*it)->get_ident() << '\n';
-               if( (!strcmp((*it)->get_ident(), id.c_str()))
+               if( ((*it)->get_ident() == id)
                        && ((*it)->GetType() == tp) ) {
                        //Before removing it stop it transmitting!!
                        //cout << "OBLITERATING FROM LIST!!!\n";
@@ -394,8 +397,8 @@ FGATC* FGATCMgr::FindInList(string id, atc_type tp) {
        //cout << "Entering FindInList for " << id << ' ' << tp << endl;
        atc_list_iterator it = atc_list.begin();
        while(it != atc_list.end()) {
-               if( (!strcmp((*it)->get_ident(), id.c_str()))
-               && ((*it)->GetType() == tp) ) {
+               if( ((*it)->get_ident() == id)
+                   && ((*it)->GetType() == tp) ) {
                        return(*it);
                }
                ++it;
@@ -425,7 +428,7 @@ FGATC* FGATCMgr::GetATCPointer(string icao, atc_type type) {
                //cout << "Unable to find " << icao << ' ' << type << " in the airport_atc_map" << endl;
                return NULL;
        }
-       //cout << "Found " << icao << ' ' << type << endl;
+       //cout << "In GetATCPointer, found " << icao << ' ' << type << endl;
        AirportATC *a = airport_atc_map[icao];
        //cout << "a->lon = " << a->lon << '\n';
        //cout << "a->elev = " << a->elev << '\n';
@@ -434,7 +437,7 @@ FGATC* FGATCMgr::GetATCPointer(string icao, atc_type type) {
        case TOWER:
                if(a->tower_active) {
                        // Get the pointer from the list
-                       return(FindInList(icao.c_str(), type));
+                       return(FindInList(icao, type));
                } else {
                        ATCData data;
                        if(current_commlist->FindByFreq(a->lon, a->lat, a->elev, a->tower_freq, &data, TOWER)) {
@@ -443,7 +446,7 @@ FGATC* FGATCMgr::GetATCPointer(string icao, atc_type type) {
                                atc_list.push_back(t);
                                a->tower_active = true;
                                airport_atc_map[icao] = a;
-                               //cout << "Initing tower in GetATCPointer()\n";
+                               //cout << "Initing tower " << icao << " in GetATCPointer()\n";
                                t->Init();
                                return(t);
                        } else {
@@ -460,7 +463,7 @@ FGATC* FGATCMgr::GetATCPointer(string icao, atc_type type) {
                //cout << "IN CASE GROUND" << endl;
                if(a->ground_active) {
                        // Get the pointer from the list
-                       return(FindInList(icao.c_str(), type));
+                       return(FindInList(icao, type));
                } else {
                        ATCData data;
                        if(current_commlist->FindByFreq(a->lon, a->lat, a->elev, a->ground_freq, &data, GROUND)) {
@@ -670,7 +673,7 @@ void FGATCMgr::AreaSearch() {
                
                for(app_itr = approaches.begin(); app_itr != approaches.end(); app_itr++) {
                        
-                       FGATC* app = FindInList((app_itr->ident).c_str(), app_itr->type);
+                       FGATC* app = FindInList(app_itr->ident, app_itr->type);
                        if(app != NULL) {
                                // The station is already in the ATC list
                                //cout << "In list adding player\n";