1 // dynamics.hxx - a class to manage the higher order airport ground activities
2 // Written by Durk Talsma, started December 2004.
5 // This program is free software; you can redistribute it and/or
6 // modify it under the terms of the GNU General Public License as
7 // published by the Free Software Foundation; either version 2 of the
8 // License, or (at your option) any later version.
10 // This program is distributed in the hope that it will be useful, but
11 // WITHOUT ANY WARRANTY; without even the implied warranty of
12 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 // General Public License for more details.
15 // You should have received a copy of the GNU General Public License
16 // along with this program; if not, write to the Free Software
17 // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
22 #ifndef _AIRPORT_DYNAMICS_HXX_
23 #define _AIRPORT_DYNAMICS_HXX_
27 # error This library requires C++
30 #include <simgear/xml/easyxml.hxx>
32 #include "parking.hxx"
33 #include "groundnetwork.hxx"
34 #include "runwayprefs.hxx"
35 #include "trafficcontrol.hxx"
39 class FGAirportDynamics {
44 FGParkingVec parkings;
45 FGRunwayPreference rwyPrefs;
46 FGGroundNetwork groundNetwork;
47 FGTowerController towerController;
50 string prevTrafficType;
53 stringVec milActive, comActive, genActive, ulActive;
54 stringVec *currentlyActive;
56 // Experimental keep a running average of wind dir and speed to prevent
57 // Erratic runway changes.
58 // Note: I should add these to the copy constructor and assigment operator to be
60 //double avWindHeading [10];
61 //double avWindSpeed [10];
63 string chooseRunwayFallback();
66 FGAirportDynamics(FGAirport* ap);
67 FGAirportDynamics(const FGAirportDynamics &other);
72 double getLongitude() const;
74 double getLatitude() const;
76 double getElevation() const;
77 const string& getId() const;
79 void getActiveRunway(const string& trafficType, int action, string& runway);
81 void addParking(FGParking& park);
82 bool getAvailableParking(double *lat, double *lon,
83 double *heading, int *gate, double rad, const string& fltype,
84 const string& acType, const string& airline);
85 void getParking (int id, double *lat, double* lon, double *heading);
86 FGParking *getParking(int i);
87 void releaseParking(int id);
88 string getParkingName(int i);
89 int getNrOfParkings() { return parkings.size(); };
90 //FGAirport *getAddress() { return this; };
91 //const string &getName() const { return _name;};
94 FGGroundNetwork *getGroundNetwork() { return &groundNetwork; };
95 FGTowerController *getTowerController() { return &towerController; };
98 void setRwyUse(const FGRunwayPreference& ref);