]> git.mxchange.org Git - flightgear.git/blobdiff - src/Airports/dynamics.hxx
Clean up dynamics/parking handing code.
[flightgear.git] / src / Airports / dynamics.hxx
index d3dbedaa27b50256e600b5215632e7bf0cf1f1a3..cb489bfa3db458163ef71ac3cb01d0d91eedb8f3 100644 (file)
@@ -26,7 +26,6 @@
 #include "parking.hxx"
 #include "groundnetwork.hxx"
 #include "runwayprefs.hxx"
-#include "sidstar.hxx"
 
 // forward decls
 class FGAirport;
@@ -35,93 +34,117 @@ class FGEnvironment;
 class FGAirportDynamics {
 
 private:
-  FGAirport* _ap;
-
-  FGParkingVec         parkings;
-  FGRunwayPreference   rwyPrefs;
-  FGSidStar            SIDs;
-  FGStartupController  startupController;
-  FGGroundNetwork      groundNetwork;
-  FGTowerController    towerController;
-  FGApproachController approachController;
-
-  time_t lastUpdate;
-  std::string prevTrafficType;
-  stringVec landing;
-  stringVec takeoff;
-  stringVec milActive, comActive, genActive, ulActive;
-  stringVec *currentlyActive;
-  intVec freqAwos;     // </AWOS>
-  intVec freqUnicom;   // </UNICOM>
-  intVec freqClearance;// </CLEARANCE>
-  intVec freqGround;   // </GROUND>
-  intVec freqTower;    // </TOWER>
-  intVec freqApproach; // </APPROACH>
-
-  int atisSequenceIndex;
-  double atisSequenceTimeStamp;
-  
-  std::string chooseRunwayFallback();
-  bool innerGetActiveRunway(const std::string &trafficType, int action, std::string &runway, double heading);
-  std::string chooseRwyByHeading(stringVec rwys, double heading);
-
-  double elevation;
-
+    FGAirport* _ap;
+
+    FGParkingVec         parkings;
+    FGRunwayPreference   rwyPrefs;
+    FGStartupController  startupController;
+    FGGroundNetwork      groundNetwork;
+    FGTowerController    towerController;
+    FGApproachController approachController;
+
+    time_t lastUpdate;
+    std::string prevTrafficType;
+    stringVec landing;
+    stringVec takeoff;
+    stringVec milActive, comActive, genActive, ulActive;
+    stringVec *currentlyActive;
+    intVec freqAwos;     // </AWOS>
+    intVec freqUnicom;   // </UNICOM>
+    intVec freqClearance;// </CLEARANCE>
+    intVec freqGround;   // </GROUND>
+    intVec freqTower;    // </TOWER>
+    intVec freqApproach; // </APPROACH>
+
+    int atisSequenceIndex;
+    double atisSequenceTimeStamp;
+
+    std::string chooseRunwayFallback();
+    bool innerGetActiveRunway(const std::string &trafficType, int action, std::string &runway, double heading);
+    std::string chooseRwyByHeading(stringVec rwys, double heading);
+
+  int innerGetAvailableParking(double radius, const std::string & flType,
+                               const std::string & acType, const std::string & airline,
+                               bool skipEmptyAirlineCode);
 public:
-  FGAirportDynamics(FGAirport* ap);
-  ~FGAirportDynamics();
-
-  void addAwosFreq     (int val) { freqAwos.push_back(val);      };
-  void addUnicomFreq   (int val) { freqUnicom.push_back(val);    };
-  void addClearanceFreq(int val) { freqClearance.push_back(val); };
-  void addGroundFreq   (int val) { freqGround.push_back(val);    };
-  void addTowerFreq    (int val) { freqTower.push_back(val);     };
-  void addApproachFreq (int val) { freqApproach.push_back(val);  };
-
-  void init();
-  double getLongitude() const; 
-  // Returns degrees
-  double getLatitude()  const; 
-  // Returns ft
-  double getElevation() const; 
-  const string& getId() const; 
+    FGAirportDynamics(FGAirport* ap);
+    ~FGAirportDynamics();
+
+    void addAwosFreq     (int val) {
+        freqAwos.push_back(val);
+    };
+    void addUnicomFreq   (int val) {
+        freqUnicom.push_back(val);
+    };
+    void addClearanceFreq(int val) {
+        freqClearance.push_back(val);
+    };
+    void addGroundFreq   (int val) {
+        freqGround.push_back(val);
+    };
+    void addTowerFreq    (int val) {
+        freqTower.push_back(val);
+    };
+    void addApproachFreq (int val) {
+        freqApproach.push_back(val);
+    };
+
+    void init();
   
-  void getActiveRunway(const string& trafficType, int action, string& runway, double heading);
-
-  void addParking(FGParking& park);
-  bool getAvailableParking(double *lat, double *lon, 
-                          double *heading, int *gate, double rad, const string& fltype, 
-                          const string& acType, const string& airline);
-  void getParking         (int id, double *lat, double* lon, double *heading);
-  FGParking *getParking(int i);
-  void releaseParking(int id);
-  string getParkingName(int i); 
-  int getNrOfParkings() { return parkings.size(); };
-  //FGAirport *getAddress() { return this; };
-  //const string &getName() const { return _name;};
-  // Returns degrees
-
-  // Departure / Arrival procedures
-  FGSidStar * getSIDs() { return &SIDs; };
-  FGAIFlightPlan * getSID(string activeRunway, double heading);
-
-
-  // ATC related functions. 
-  FGStartupController    *getStartupController()    { return &startupController; };
-  FGGroundNetwork        *getGroundNetwork()        { return &groundNetwork; };
-  FGTowerController      *getTowerController()      { return &towerController; };
-  FGApproachController   *getApproachController()   { return &approachController; };
-
-  int getGroundFrequency(unsigned leg);
-  int getTowerFrequency  (unsigned nr);
+    double getElevation() const;
+    const std::string getId() const;
   
-  /// get current ATIS sequence letter
-  const std::string getAtisSequence();
-
-  /// get the current ATIS sequence number, updating it if necessary
-  int updateAtisSequence(int interval, bool forceUpdate);
-
-  void setRwyUse(const FGRunwayPreference& ref);
+    FGAirport* parent() const
+    { return _ap; }
+  
+    void getActiveRunway(const string& trafficType, int action, string& runway, double heading);
+
+    void addParking(FGParking& park);
+    
+    /**
+     * retrieve an available parking by GateID, or -1 if no suitable
+     * parking location could be found.
+     */
+    int getAvailableParking(double radius, const std::string& fltype,
+                          const std::string& acType, const std::string& airline);
+
+    FGParking *getParking(int i);
+    void releaseParking(int id);
+    std::string getParkingName(int i);
+    int getNrOfParkings() {
+        return parkings.size();
+    };
+
+    /**
+     * Find a parking gate index by name. Note names are often not unique
+     * in our data, so will return the first match.
+     */
+    int findParkingByName(const std::string& name) const;
+
+    // ATC related functions.
+    FGStartupController    *getStartupController()    {
+        return &startupController;
+    };
+    FGGroundNetwork        *getGroundNetwork()        {
+        return &groundNetwork;
+    };
+    FGTowerController      *getTowerController()      {
+        return &towerController;
+    };
+    FGApproachController   *getApproachController()   {
+        return &approachController;
+    };
+
+    int getGroundFrequency(unsigned leg);
+    int getTowerFrequency  (unsigned nr);
+
+    /// get current ATIS sequence letter
+    const std::string getAtisSequence();
+
+    /// get the current ATIS sequence number, updating it if necessary
+    int updateAtisSequence(int interval, bool forceUpdate);
+
+    void setRwyUse(const FGRunwayPreference& ref);
 };