]> git.mxchange.org Git - flightgear.git/blobdiff - src/AIModel/AIFlightPlan.hxx
Clear chat messages when an aircraft becomes inactive in the property tree.
[flightgear.git] / src / AIModel / AIFlightPlan.hxx
index eee1ac531ec958d9d4102fac8bd9255b2326303b..f4b07859031aae46e253e24c45b109b89b82b9fe 100644 (file)
@@ -14,7 +14,7 @@
 //
 // 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., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 
 #ifndef _FG_AIFLIGHTPLAN_HXX
 #define _FG_AIFLIGHTPLAN_HXX
@@ -25,6 +25,7 @@
 
 #include <Airports/simple.hxx>
 #include <Airports/runways.hxx>
+#include <Navaids/awynet.hxx>
 
 #include "AIBase.hxx"
 
@@ -47,9 +48,13 @@ public:
    bool gear_down;
    bool flaps_down;
    bool on_ground;
+    int routeIndex;  // For AI/ATC purposes;
+   double time_sec;
+   string time;
+
   } waypoint;
 
-   FGAIFlightPlan(const string& filename);
+  FGAIFlightPlan(const string& filename);
   FGAIFlightPlan(const std::string& p,
                 double course,
                 time_t start,
@@ -78,20 +83,26 @@ public:
    double getLeadDistance( void ) const {return lead_distance;}
    double getBearing(waypoint* previous, waypoint* next) const;
    double getBearing(double lat, double lon, waypoint* next) const;
-  time_t getStartTime() const { return start_time; }
+  time_t getStartTime() const { return start_time; }
 
   void    create(FGAirport *dep, FGAirport *arr, int leg, double alt, double speed, double lat, double lon,
                 bool firstLeg, double radius, const string& fltType, const string& aircraftType, const string& airline);
 
-  void setLeg(int val) { leg = val;};
-  void setTime(time_t st) { start_time = st; };
-  int getGate() const { return gateId; };
-  double getLeadInAngle() const { return leadInAngle; };
-  const string& getRunway() const { return rwy._rwy_no; };
-  const string& getRunwayId() const { return rwy._id; };
-  void setRepeat(bool r) { repeat = r; };
-  bool getRepeat(void) const { return repeat; };
+  void setLeg(int val) { leg = val;}
+  void setTime(time_t st) { start_time = st; }
+  int getGate() const { return gateId; }
+  double getLeadInAngle() const { return leadInAngle; }
+  const string& getRunway() const { return rwy._rwy_no; }
+  const string& getRunwayId() const { return rwy._id; }
+  void setRepeat(bool r) { repeat = r; }
+  bool getRepeat(void) const { return repeat; }
   void restart(void);
+  int getNrOfWayPoints() { return waypoints.size(); }
+  int getRouteIndex(int i); // returns the AI related index of this current routes. 
+  FGTaxiRoute *getTaxiRoute() { return taxiRoute; }
+  void deleteTaxiRoute();
+  string getRunway() { return activeRunway; }
+  bool isActive(time_t time) {return time >= this->getStartTime();}
 
 private:
   FGRunway rwy;
@@ -105,23 +116,29 @@ private:
   double distance_to_go;
   double lead_distance;
   double leadInAngle;
-   time_t start_time;
+  time_t start_time;
   int leg;
-  int gateId;
+  int gateId, lastNodeVisited;
   string activeRunway;
+  FGAirRoute airRoute;
+  FGTaxiRoute *taxiRoute;
 
   void createPushBack(bool, FGAirport*, double, double, double, const string&, const string&, const string&);
+  void createPushBackFallBack(bool, FGAirport*, double, double, double, const string&, const string&, const string&);
   void createTaxi(bool, int, FGAirport *, double, double, double, const string&, const string&, const string&);
-  void createTakeOff(bool, FGAirport *, double);
-  void createClimb(bool, FGAirport *, double, double);
-  void createCruise(bool, FGAirport*, FGAirport*, double, double, double, double);
-  void createDecent(FGAirport *);
+  void createTakeOff(bool, FGAirport *, double, const string&);
+  void createClimb(bool, FGAirport *, double, double, const string&);
+  void createCruise(bool, FGAirport*, FGAirport*, double, double, double, double, const string&);
+  void createDecent(FGAirport *, const string&);
   void createLanding(FGAirport *);
   void createParking(FGAirport *, double radius);
   void deleteWaypoints(); 
   void resetWaypoints();
-};    
 
+  string getRunwayClassFromTrafficType(string fltType);
 
+  //void createCruiseFallback(bool, FGAirport*, FGAirport*, double, double, double, double);
+ void evaluateRoutePart(double deplat, double deplon, double arrlat, double arrlon);
+};    
 
 #endif  // _FG_AIFLIGHTPLAN_HXX