#include <simgear/debug/logstream.hxx>
#include "tower.hxx"
-#include "ATCdisplay.hxx"
#include "ATCmgr.hxx"
#include "ATCutils.hxx"
#include "ATCDialog.hxx"
At the moment planes in the lists are not guaranteed to always have a sensible ETA - it should be set as part of AddList functions, and lists should only be accessed this way. (FAIRLY MAJOR).
*******************************************/
-FGTower::FGTower() {
+FGTower::FGTower() :
+ separateGround(true),
+ ground(0)
+{
ATCmgr = globals->get_ATC_mgr();
_type = TOWER;
// TODO FIXME - this will break when user starts on apron, at hold short, etc.
if(!OnAnyRunway(Point3D(user_lon_node->getDoubleValue(), user_lat_node->getDoubleValue(), 0.0))) {
//cout << ident << " ADD 0\n";
- current_atcdialog->add_entry(ident, "@AP Tower @CS @MI miles @CD of the airport for full stop with ATIS", "Contact tower for VFR arrival (full stop)", TOWER, (int)USER_REQUEST_VFR_ARRIVAL_FULL_STOP);
+ current_atcdialog->add_entry(ident, "@AP Tower, @CS @MI miles @CD of the airport for full stop with ATIS", "Contact tower for VFR arrival (full stop)", TOWER, (int)USER_REQUEST_VFR_ARRIVAL_FULL_STOP);
}
}
}
string trns = t->plane.callsign;
trns += " ";
trns += name;
- trns += " Tower";
+ trns += " Tower,";
// Should we clear staight in or for downwind entry?
// For now we'll clear straight in if greater than 1km from a line drawn through the threshold perpendicular to the rwy.
// Later on we might check the actual heading and direct some of those to enter on downwind or base.
trns += " Report three mile straight-in runway ";
t->opType = STRAIGHT_IN;
if(t->isUser) {
- current_atcdialog->add_entry(ident, "@AP Tower @CS @MI mile final Runway @RW", "Report Final", TOWER, (int)USER_REPORT_3_MILE_FINAL);
+ current_atcdialog->add_entry(ident, "@AP Tower, @CS @MI mile final Runway @RW", "Report Final", TOWER, (int)USER_REPORT_3_MILE_FINAL);
} else {
t->planePtr->RegisterTransmission(14);
}
t->opType = CIRCUIT;
// leave it in the app list until it gets into pattern though.
if(t->isUser) {
- current_atcdialog->add_entry(ident, "@AP Tower @CS Downwind @RW", "Report Downwind", TOWER, (int)USER_REPORT_DOWNWIND);
+ current_atcdialog->add_entry(ident, "@AP Tower, @CS Downwind @RW", "Report Downwind", TOWER, (int)USER_REPORT_DOWNWIND);
} else {
t->planePtr->RegisterTransmission(15);
}
}
trns += ConvertRwyNumToSpokenString(activeRwy);
if(_display) {
- //globals->get_ATC_display()->RegisterSingleMessage(trns, 0);
pending_transmission = trns;
Transmit();
} else {
string trns = t->plane.callsign;
trns += " hold position";
if(_display) {
- //globals->get_ATC_display()->RegisterSingleMessage(trns, 0);
pending_transmission = trns;
Transmit();
}
t->clearedToLand = false;
}
if(_display && disp) {
- //globals->get_ATC_display()->RegisterSingleMessage(trns);
pending_transmission = trns;
Transmit();
}
}
}
if(_display) {
- //globals->get_ATC_display()->RegisterSingleMessage(trns);
pending_transmission = trns;
Transmit();
}
}
//cout << "trns = " << trns << '\n';
if(_display) {
- //globals->get_ATC_display()->RegisterSingleMessage(trns);
pending_transmission = trns;
Transmit();
}
timeSinceLastDeparture = 0.0;
}
if(_display) {
- //globals->get_ATC_display()->RegisterSingleMessage(trns, 0);
pending_transmission = trns;
Transmit();
}
// Change the communication options
RemoveAllUserDialogOptions();
//cout << "ADD A\n";
- current_atcdialog->add_entry(ident, "@AP Tower @CS @MI miles @CD of the airport for full stop with ATIS", "Contact tower for VFR arrival (full stop)", TOWER, (int)USER_REQUEST_VFR_ARRIVAL_FULL_STOP);
+ current_atcdialog->add_entry(ident, "@AP Tower, @CS @MI miles @CD of the airport for full stop with ATIS", "Contact tower for VFR arrival (full stop)", TOWER, (int)USER_REQUEST_VFR_ARRIVAL_FULL_STOP);
} else {
// Send a clear-of-airspace signal
// TODO - implement this once we actually have departing AI traffic (currently all circuits or arrivals).
if(ID == "USER") {
uid = fgGetString("/sim/user/callsign");
RemoveAllUserDialogOptions(); // TODO - it would be much more efficient if ATCDialog simply had a clear() function!!!
- current_atcdialog->add_entry(ident, "@AP Tower @CS Downwind @RW", "Report Downwind", TOWER, (int)USER_REPORT_DOWNWIND);
+ current_atcdialog->add_entry(ident, "@AP Tower, @CS Downwind @RW", "Report Downwind", TOWER, (int)USER_REPORT_DOWNWIND);
}
TowerPlaneRec* t = FindPlane(uid);
if(t) {
//break;
//}
//}
- if ( mes != "" ) return mes;
+ if ( mes[0] ) return mes;
else return "No transmission found";
}