*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*
*
**************************************************************************/
* - Find an alternative for the depricated Point3D class
*
*****************************************************************************/
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
#include <stdlib.h>
#include <time.h>
#include <iostream>
callsign = other.callsign;
fltRules = other.fltRules;
departurePort = other.departurePort;
+ depId = other.depId;
+ arrId = other.arrId;
departureTime = other.departureTime;
cruiseAltitude = other.cruiseAltitude;
arrivalPort = other.arrivalPort;
initialized = other.initialized;
}
-FGScheduledFlight::FGScheduledFlight(string cs,
- string fr,
- string depPrt,
- string arrPrt,
+FGScheduledFlight::FGScheduledFlight(const string& cs,
+ const string& fr,
+ const string& depPrt,
+ const string& arrPrt,
int cruiseAlt,
- string deptime,
- string arrtime,
- string rep)
+ const string& deptime,
+ const string& arrtime,
+ const string& rep)
{
callsign = cs;
fltRules = fr;
- departurePort.id = depPrt;
- arrivalPort.id = arrPrt;
+ //departurePort.setId(depPrt);
+ //arrivalPort.setId(arrPrt);
+ depId = depPrt;
+ arrId = arrPrt;
+ //cerr << "Constructor: departure " << depId << ". arrival " << arrId << endl;
//departureTime = processTimeString(deptime);
//arrivalTime = processTimeString(arrtime);
cruiseAltitude = cruiseAlt;
{
}
-time_t FGScheduledFlight::processTimeString(string theTime)
+time_t FGScheduledFlight::processTimeString(const string& theTime)
{
int weekday;
int timeOffsetInDays;
- int targetDate;
int targetHour;
int targetMinute;
int targetSecond;
{
timeOffsetInDays = 0;
}
+ // TODO: verify status of each token.
targetHour = atoi(timeCopy.substr(0,2).c_str());
targetMinute = atoi(timeCopy.substr(3,5).c_str());
targetSecond = atoi(timeCopy.substr(6,8).c_str());
{
initializeAirports();
}
- return &departurePort;
+ if (initialized)
+ return departurePort;
+ else
+ return 0;
}
FGAirport * FGScheduledFlight::getArrivalAirport ()
{
{
initializeAirports();
}
- return &arrivalPort;
+ if (initialized)
+ return arrivalPort;
+ else
+ return 0;
}
// Upon the first time of requesting airport information
// but we should improve that. The best idea is probably to cancel
// this flight entirely by removing it from the schedule, if one
// of the airports cannot be found.
-void FGScheduledFlight::initializeAirports()
+bool FGScheduledFlight::initializeAirports()
{
- if(!(fgFindAirportID(arrivalPort.id, &arrivalPort )))
+ //cerr << "Initializing using : " << depId << " " << arrId << endl;
+ departurePort = globals->get_airports()->search(depId);
+ if(departurePort == NULL)
{
- //cerr << ": Could not find " << arrivalPort.id << endl;
+ SG_LOG( SG_GENERAL, SG_WARN, "Traffic manager could not find departure airport : " << depId);
+ return false;
}
- if(!(fgFindAirportID(departurePort.id, &departurePort)))
+ arrivalPort = globals->get_airports()->search(arrId);
+ if(arrivalPort == NULL)
{
- //cerr << ": Could not find " << departurePort.id << endl;
+ SG_LOG( SG_GENERAL, SG_WARN, "Traffic manager could not find arrival airport : " << arrId);
+ return false;
}
+
+ //cerr << "Found : " << departurePort->getId() << endl;
+ //cerr << "Found : " << arrivalPort->getId() << endl;
initialized = true;
+ return true;
}
+
+
+bool compareScheduledFlights(FGScheduledFlight *a, FGScheduledFlight *b)
+{
+ return (*a) < (*b);
+};