X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FAirports%2Fdynamics.hxx;h=ecadb9d62205b91fcfc8f538fe1c37a3a5703d85;hb=e04d2f8ba9421fe9811e2d2e474392f010ae54b3;hp=0e5d6f4383e79cdf0257efe9a97b791ed6b558b7;hpb=1c8f2e3c5b7e5467aa858c735568d033bb309aef;p=flightgear.git diff --git a/src/Airports/dynamics.hxx b/src/Airports/dynamics.hxx index 0e5d6f438..ecadb9d62 100644 --- a/src/Airports/dynamics.hxx +++ b/src/Airports/dynamics.hxx @@ -29,22 +29,30 @@ #include +#include #include "parking.hxx" #include "groundnetwork.hxx" #include "runwayprefs.hxx" -#include "trafficcontrol.hxx" +#include "sidstar.hxx" + +//typedef vector DoubleVec; +//typedef vector::iterator DoubleVecIterator; class FGAirport; + class FGAirportDynamics { private: FGAirport* _ap; - FGParkingVec parkings; - FGRunwayPreference rwyPrefs; - FGGroundNetwork groundNetwork; - FGTowerController towerController; + FGParkingVec parkings; + FGRunwayPreference rwyPrefs; + FGSidStar SIDs; + FGStartupController startupController; + FGGroundNetwork groundNetwork; + FGTowerController towerController; + FGApproachController approachController; time_t lastUpdate; string prevTrafficType; @@ -52,21 +60,29 @@ private: stringVec takeoff; stringVec milActive, comActive, genActive, ulActive; stringVec *currentlyActive; + intVec freqAwos; // + intVec freqUnicom; // + intVec freqClearance;// + intVec freqGround; // + intVec freqTower; // + intVec freqApproach; // - // Experimental keep a running average of wind dir and speed to prevent - // Erratic runway changes. - // Note: I should add these to the copy constructor and assigment operator to be - // constistent - //double avWindHeading [10]; - //double avWindSpeed [10]; + string atisInformation; string chooseRunwayFallback(); - + bool innerGetActiveRunway(const string &trafficType, int action, string &runway, double heading); + string chooseRwyByHeading(stringVec rwys, double heading); public: FGAirportDynamics(FGAirport* ap); FGAirportDynamics(const FGAirportDynamics &other); ~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; @@ -76,7 +92,7 @@ public: double getElevation() const; const string& getId() const; - void getActiveRunway(const string& trafficType, int action, string& runway); + void getActiveRunway(const string& trafficType, int action, string& runway, double heading); void addParking(FGParking& park); bool getAvailableParking(double *lat, double *lon, @@ -91,10 +107,20 @@ public: //const string &getName() const { return _name;}; // Returns degrees - FGGroundNetwork *getGroundNetwork() { return &groundNetwork; }; - FGTowerController *getTowerController() { return &towerController; }; - + // 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; }; + const string& getAtisInformation() { return atisInformation; }; + int getGroundFrequency (unsigned leg); //{ return freqGround.size() ? freqGround[0] : 0; }; + int getTowerFrequency (unsigned nr); void setRwyUse(const FGRunwayPreference& ref); };