From 70cd48b5b1066c2c0b2e78ab047383e0aad5782a Mon Sep 17 00:00:00 2001 From: daveluff Date: Thu, 9 Oct 2003 11:54:09 +0000 Subject: [PATCH] A few bug fixes to Alexanders approach vectoring code to get it to work and display instructions --- src/ATC/approach.cxx | 46 ++++++++++++++++++++++++++++++-------------- 1 file changed, 32 insertions(+), 14 deletions(-) diff --git a/src/ATC/approach.cxx b/src/ATC/approach.cxx index 6d0bc4bd4..cbb7ebddc 100644 --- a/src/ATC/approach.cxx +++ b/src/ATC/approach.cxx @@ -74,7 +74,7 @@ FGApproach::~FGApproach(){ } void FGApproach::Init() { - display = false; + display = false; } @@ -116,6 +116,8 @@ void FGApproach::Update(double dt) { tpars.callsign = "Player"; tpars.airport = ident; + //cout << "ident = " << ident << " name = " << name << '\n'; + int num_trans = 0; // is the frequency of the station tuned in? if ( freq == (int)(comm1_freq*100.0 + 0.5) ) { @@ -139,10 +141,12 @@ void FGApproach::Update(double dt) { } for ( i=0; igen_text(station, code, tpars, true ); + cout << message << '\n'; globals->get_ATC_display()->RegisterSingleMessage( message, 0 ); planes[i].lmc = code; planes[i].tlm = etime_node->getDoubleValue(); planes[i].on_crs = true; planes[i].contact = 1; } - } + //} + //if(1) { if ( planes[i].contact == 1 ) { // ========================= // === update parameters === @@ -193,12 +199,13 @@ void FGApproach::Update(double dt) { adif = angle_diff_deg( planes[i].hdg, planes[i].wpts[wpn][4] ) * SGD_DEGREES_TO_RADIANS; datp = 2*sin(fabs(adif)/2.0)*sin(fabs(adif)/2.0) * - planes[i].spd/3600. * planes[i].turn_rate + - planes[i].spd/3600. * 3.0; + planes[i].spd/3600. * planes[i].turn_rate + + planes[i].spd/3600. * 3.0; //cout << adif/SGD_DEGREES_TO_RADIANS << " " // << datp << " " << planes[i].dnc << " " << planes[i].dcc <gen_text(station, code, tpars, true ); + //cout << "Approach transmitting...\n"; + //cout << message << '\n'; globals->get_ATC_display()->RegisterSingleMessage( message, 0 ); } @@ -231,6 +240,8 @@ void FGApproach::Update(double dt) { code.c3 = 0; tpars.runway = active_runway; message = current_transmissionlist->gen_text(station, code, tpars, true); + //cout << "Approach transmitting 2 ...\n"; + //cout << message << '\n'; globals->get_ATC_display()->RegisterSingleMessage( message, 0 ); } planes[i].lmc = code; @@ -244,8 +255,8 @@ void FGApproach::Update(double dt) { // === come off course ? === // ========================= if ( fabs(planes[i].dcc) > 1.0 && - ( !planes[i].wp_change || - etime_node->getDoubleValue() - planes[i].tlm > tbm ) ) { + ( !planes[i].wp_change || etime_node->getDoubleValue() - planes[i].tlm > tbm ) ) { + //cout << "Off course!\n"; if ( planes[i].on_crs ) { if ( planes[i].dcc < 0) { planes[i].ahdg += 30.0; @@ -262,8 +273,8 @@ void FGApproach::Update(double dt) { // << planes[i].tlm << endl; // generate the message if ( planes[i].on_crs || - ( fabs(angle_diff_deg( planes[i].hdg, planes[i].ahdg )) > 30.0 && - etime_node->getDoubleValue() - planes[i].tlm > tbm) ) { + ( fabs(angle_diff_deg( planes[i].hdg, planes[i].ahdg )) > 30.0 && + etime_node->getDoubleValue() - planes[i].tlm > tbm) ) { // generate the message code.c1 = 1; code.c2 = 4; @@ -276,6 +287,8 @@ void FGApproach::Update(double dt) { else tpars.tdir = 2; tpars.heading = planes[i].ahdg; message = current_transmissionlist->gen_text(station, code, tpars, true); + //cout << "Approach transmitting 3 ...\n"; + //cout << message << '\n'; globals->get_ATC_display()->RegisterSingleMessage( message, 0 ); planes[i].lmc = code; planes[i].tlm = etime_node->getDoubleValue(); @@ -284,6 +297,7 @@ void FGApproach::Update(double dt) { planes[i].on_crs = false; } else if ( !planes[i].on_crs ) { + //cout << "Off course 2!\n"; wpn = planes[i].wpn-1; adif = angle_diff_deg( planes[i].hdg, planes[i].wpts[wpn][4] ) * SGD_DEGREES_TO_RADIANS; @@ -303,6 +317,8 @@ void FGApproach::Update(double dt) { else tpars.tdir = 2; tpars.heading = planes[i].ahdg; message = current_transmissionlist->gen_text(station, code, tpars, true); + //cout << "Approach transmitting 4 ...\n"; + //cout << message << '\n'; globals->get_ATC_display()->RegisterSingleMessage( message, 0 ); planes[i].lmc = code; planes[i].tlm = etime_node->getDoubleValue(); @@ -328,6 +344,8 @@ void FGApproach::Update(double dt) { tpars.callsign = "Player"; tpars.freq = freq; message = current_transmissionlist->gen_text(station, code, tpars, true); + //cout << "Approach transmitting 5 ...\n"; + //cout << message << '\n'; globals->get_ATC_display()->RegisterSingleMessage( message, 0 ); planes[i].lmc = code; planes[i].tlm = etime_node->getDoubleValue(); @@ -336,7 +354,6 @@ void FGApproach::Update(double dt) { } } } - } @@ -531,6 +548,7 @@ double FGApproach::round_alt( const bool hl, double alt ) { // get active runway // ============================================================================ void FGApproach::get_active_runway() { + //cout << "Entering FGApproach::get_active_runway()\n"; #ifdef FG_WEATHERCM sgVec3 position = { lat, lon, elev }; @@ -619,7 +637,7 @@ void FGApproach::AddPlane(string pid) { int i; for ( i=0; i