]> git.mxchange.org Git - flightgear.git/blobdiff - src/AIModel/AIAircraft.hxx
Vivian Meazza:
[flightgear.git] / src / AIModel / AIAircraft.hxx
index 4048deb9e3a8252cc092407a461136774301c967..022572563bdc9fc641b989e1880ee225c92ae738 100644 (file)
@@ -23,7 +23,9 @@
 
 #include "AIManager.hxx"
 #include "AIBase.hxx"
-#include "AIFlightPlan.hxx"
+
+#include <Traffic/SchedFlight.hxx>
+#include <Traffic/Schedule.hxx>
 
 #include <string>
 SG_USING_STD(string);
@@ -46,11 +48,10 @@ private:
        } PERF_STRUCT;
        
 public:
-
-        enum aircraft_e {LIGHT=0, WW2_FIGHTER, JET_TRANSPORT, JET_FIGHTER};
+        enum aircraft_e {LIGHT=0, WW2_FIGHTER, JET_TRANSPORT, JET_FIGHTER, TANKER};
         static const PERF_STRUCT settings[];
        
-       FGAIAircraft(FGAIManager* mgr);
+       FGAIAircraft(FGAIManager* mgr,   FGAISchedule *ref=0);
        ~FGAIAircraft();
        
        bool init();
@@ -60,40 +61,52 @@ public:
 
         void SetPerformance(const PERF_STRUCT *ps);
         void SetFlightPlan(FGAIFlightPlan *f);
+        FGAIFlightPlan* GetFlightPlan() { return fp; };
         void AccelTo(double speed);
         void PitchTo(double angle);
         void RollTo(double angle);
         void YawTo(double angle);
         void ClimbTo(double altitude);
         void TurnTo(double heading);
-        void ProcessFlightPlan( double dt );
-        //double getHeading(double lat1, double lon1, double lat2, double lon2);
+        void ProcessFlightPlan( double dt, time_t now );
+  void getGroundElev(double dt);
+  void loadNextLeg  ();
 
-protected:
-        static FGAIAircraft *_self;
-       
-private:
+  void setAcType(string ac) { acType = ac; };
+  void setCompany(string comp) { company = comp;};
+  //void setSchedule(FGAISchedule *ref) { trafficRef = ref;};
 
+        inline void SetTanker(bool setting) { isTanker = setting; };
+
+private:
+   FGAISchedule *trafficRef;
+  
         bool hdg_lock;
         bool alt_lock;
-        FGAIFlightPlan *fp;
         double dt_count;  
+  double dt_elev_count;
+  double headingChangeRate;
+  double groundTargetSpeed;
+  double groundOffset;
         double dt; 
 
         const PERF_STRUCT *performance;
         bool use_perf_vs;
+        SGPropertyNode* refuel_node;
+        bool isTanker;
 
        void Run(double dt);
         double sign(double x); 
-
-        static bool _getGearDown();
+  
+  string acType;
+  string company;
+  int spinCounter;
+  double prevSpeed;
+  double prev_dist_to_go;
+
+        bool _getGearDown() const;
+  bool reachedWaypoint;
 };
 
-inline bool FGAIAircraft::_getGearDown() {
-    return ((fgGetFloat("/position/altitude-agl-ft") < 150.0)
-             && (fgGetFloat("/velocities/airspeed-kt")
-                   < _self->performance->land_speed*1.5));
-}
-
 
 #endif  // _FG_AIAircraft_HXX