-
- // Hack - hardwire some instrument approaches for testing.
- // TODO - read these from file - either all at startup or as needed.
- FGNPIAP* iap = new FGNPIAP;
- iap->_id = "KHWD";
- iap->_name = "VOR/DME OR GPS-B";
- iap->_abbrev = "VOR/D";
- iap->_rwyStr = "B";
- iap->_IAF.clear();
- iap->_IAP.clear();
- iap->_MAP.clear();
- // -------
- GPSWaypoint* wp = new GPSWaypoint;
- wp->id = "SUNOL";
- bool multi;
- // Nasty using the find any function here, but it saves converting data from FGFix etc.
- const GPSWaypoint* fp = FindFirstById(wp->id, multi, true);
- *wp = *fp;
- wp->appType = GPS_IAF;
- iap->_IAF.push_back(wp);
- // -------
- wp = new GPSWaypoint;
- wp->id = "MABRY";
- fp = FindFirstById(wp->id, multi, true);
- *wp = *fp;
- wp->appType = GPS_IAF;
- iap->_IAF.push_back(wp);
- // -------
- wp = new GPSWaypoint;
- wp->id = "IMPLY";
- fp = FindFirstById(wp->id, multi, true);
- *wp = *fp;
- wp->appType = GPS_IAP;
- iap->_IAP.push_back(wp);
- // -------
- wp = new GPSWaypoint;
- wp->id = "DECOT";
- fp = FindFirstById(wp->id, multi, true);
- *wp = *fp;
- wp->appType = GPS_FAF;
- iap->_IAP.push_back(wp);
- // -------
- wp = new GPSWaypoint;
- wp->id = "MAPVV";
- fp = FindFirstById(wp->id, multi, true);
- *wp = *fp;
- wp->appType = GPS_MAP;
- iap->_IAP.push_back(wp);
- // -------
- wp = new GPSWaypoint;
- wp->id = "OAK";
- fp = FindFirstById(wp->id, multi, true);
- *wp = *fp;
- wp->appType = GPS_MAHP;
- iap->_MAP.push_back(wp);
- // -------
- _np_iap[iap->_id].push_back(iap);
- // -----------------------
- // -----------------------
- iap = new FGNPIAP;
- iap->_id = "KHWD";
- iap->_name = "VOR OR GPS-A";
- iap->_abbrev = "VOR-";
- iap->_rwyStr = "A";
- iap->_IAF.clear();
- iap->_IAP.clear();
- iap->_MAP.clear();
- // -------
- wp = new GPSWaypoint;
- wp->id = "SUNOL";
- // Nasty using the find any function here, but it saves converting data from FGFix etc.
- fp = FindFirstById(wp->id, multi, true);
- *wp = *fp;
- wp->appType = GPS_IAF;
- iap->_IAF.push_back(wp);
- // -------
- wp = new GPSWaypoint;
- wp->id = "MABRY";
- fp = FindFirstById(wp->id, multi, true);
- *wp = *fp;
- wp->appType = GPS_IAF;
- iap->_IAF.push_back(wp);
- // -------
- wp = new GPSWaypoint;
- wp->id = "IMPLY";
- fp = FindFirstById(wp->id, multi, true);
- *wp = *fp;
- wp->appType = GPS_IAP;
- iap->_IAP.push_back(wp);
- // -------
- wp = new GPSWaypoint;
- wp->id = "DECOT";
- fp = FindFirstById(wp->id, multi, true);
- *wp = *fp;
- wp->appType = GPS_FAF;
- iap->_IAP.push_back(wp);
- // -------
- wp = new GPSWaypoint;
- wp->id = "MAPVV";
- fp = FindFirstById(wp->id, multi, true);
- *wp = *fp;
- wp->appType = GPS_MAP;
- iap->_IAP.push_back(wp);
- // -------
- wp = new GPSWaypoint;
- wp->id = "OAK";
- fp = FindFirstById(wp->id, multi, true);
- *wp = *fp;
- wp->appType = GPS_MAHP;
- iap->_MAP.push_back(wp);
- // -------
- _np_iap[iap->_id].push_back(iap);
- // ------------------
- // ------------------
- /*
- // Ugh - don't load this one - the waypoints required aren't in fix.dat.gz - result: program crash!
- // TODO - make the IAP loader robust to absent waypoints.
- iap = new FGNPIAP;
- iap->_id = "KHWD";
- iap->_name = "GPS RWY 28L";
- iap->_abbrev = "GPS";
- iap->_rwyStr = "28L";
- iap->_IAF.clear();
- iap->_IAP.clear();
- iap->_MAP.clear();
- // -------
- wp = new GPSWaypoint;
- wp->id = "SUNOL";
- // Nasty using the find any function here, but it saves converting data from FGFix etc.
- fp = FindFirstById(wp->id, multi, true);
- *wp = *fp;
- wp->appType = GPS_IAF;
- iap->_IAF.push_back(wp);
- // -------
- wp = new GPSWaypoint;
- wp->id = "SJC";
- fp = FindFirstById(wp->id, multi, true);
- *wp = *fp;
- wp->appType = GPS_IAF;
- iap->_IAF.push_back(wp);
- // -------
- wp = new GPSWaypoint;
- wp->id = "JOCPI";
- fp = FindFirstById(wp->id, multi, true);
- *wp = *fp;
- wp->appType = GPS_IAP;
- iap->_IAP.push_back(wp);
- // -------
- wp = new GPSWaypoint;
- wp->id = "SUDGE";
- fp = FindFirstById(wp->id, multi, true);
- *wp = *fp;
- wp->appType = GPS_FAF;
- iap->_IAP.push_back(wp);
- // -------
- wp = new GPSWaypoint;
- wp->id = "RW28L";
- wp->appType = GPS_MAP;
- if(wp->id.substr(0, 2) == "RW" && wp->appType == GPS_MAP) {
- // Assume that this is a missed-approach point based on the runway number
- // Get the runway threshold location etc
- } else {
- fp = FindFirstById(wp->id, multi, true);
- if(fp == NULL) {
- cout << "Failed to find waypoint " << wp->id << " in database...\n";
- } else {
- *wp = *fp;
- }
- }
- iap->_IAP.push_back(wp);
- // -------
- wp = new GPSWaypoint;
- wp->id = "OAK";
- fp = FindFirstById(wp->id, multi, true);
- *wp = *fp;
- wp->appType = GPS_MAHP;
- iap->_MAP.push_back(wp);
- // -------
- _np_iap[iap->_id].push_back(iap);
- */
- iap = new FGNPIAP;
- iap->_id = "C83";
- iap->_name = "GPS RWY 30";
- iap->_abbrev = "GPS";
- iap->_rwyStr = "30";
- iap->_IAF.clear();
- iap->_IAP.clear();
- iap->_MAP.clear();
- // -------
- wp = new GPSWaypoint;
- wp->id = "MAXNI";
- // Nasty using the find any function here, but it saves converting data from FGFix etc.
- fp = FindFirstById(wp->id, multi, true);
- if(fp) {
- *wp = *fp;
- wp->appType = GPS_IAF;
- iap->_IAF.push_back(wp);
- }
- // -------
- wp = new GPSWaypoint;
- wp->id = "PATYY";
- fp = FindFirstById(wp->id, multi, true);
- if(fp) {
- *wp = *fp;
- wp->appType = GPS_IAF;
- iap->_IAF.push_back(wp);
- }
- // -------
- wp = new GPSWaypoint;
- wp->id = "TRACY";
- fp = FindFirstById(wp->id, multi, true);
- if(fp) {
- *wp = *fp;
- wp->appType = GPS_IAF;
- iap->_IAF.push_back(wp);
- }
- // -------
- wp = new GPSWaypoint;
- wp->id = "TRACY";
- fp = FindFirstById(wp->id, multi, true);
- if(fp) {
- *wp = *fp;
- wp->appType = GPS_IAP;
- iap->_IAP.push_back(wp);
- }
- // -------
- wp = new GPSWaypoint;
- wp->id = "BABPI";
- fp = FindFirstById(wp->id, multi, true);
- if(fp) {
- *wp = *fp;
- wp->appType = GPS_FAF;
- iap->_IAP.push_back(wp);
- }
- // -------
- wp = new GPSWaypoint;
- wp->id = "AMOSY";
- wp->appType = GPS_MAP;
- if(wp->id.substr(0, 2) == "RW" && wp->appType == GPS_MAP) {
- // Assume that this is a missed-approach point based on the runway number
- // TODO: Get the runway threshold location etc
- cout << "TODO - implement missed-approach point based on rwy no.\n";
- } else {
- fp = FindFirstById(wp->id, multi, true);
- if(fp == NULL) {
- cout << "Failed to find waypoint " << wp->id << " in database...\n";
- } else {
- *wp = *fp;
- wp->appType = GPS_MAP;
- }
- }
- iap->_IAP.push_back(wp);
- // -------
- wp = new GPSWaypoint;
- wp->id = "HAIRE";
- fp = FindFirstById(wp->id, multi, true);
- *wp = *fp;
- wp->appType = GPS_MAHP;
- iap->_MAP.push_back(wp);
- // -------
- _np_iap[iap->_id].push_back(iap);