]> git.mxchange.org Git - flightgear.git/blobdiff - src/AIModel/AIAircraft.hxx
Don't restore initial screen geometry because there is nothing in fg_os* to resize...
[flightgear.git] / src / AIModel / AIAircraft.hxx
index 759cca93c36e780357229b0ebd86c996493c190e..7da23ab42ebbd922a325a5aa3a5fa9ebf9668997 100644 (file)
@@ -16,7 +16,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., 675 Mass Ave, Cambridge, MA 02139, USA.
+// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
 
 #ifndef _FG_AIAircraft_HXX
 #define _FG_AIAircraft_HXX
 #include "AIManager.hxx"
 #include "AIBase.hxx"
 
+#include <Traffic/SchedFlight.hxx>
+#include <Traffic/Schedule.hxx>
+
 #include <string>
 SG_USING_STD(string);
 
 
 class FGAIAircraft : public FGAIBase {
+
+private:
+
+       typedef struct {
+            double accel;
+            double decel;
+            double climb_rate;
+            double descent_rate;
+            double takeoff_speed;
+            double climb_speed;
+            double cruise_speed;
+            double descent_speed;
+            double land_speed;
+       } PERF_STRUCT;
        
 public:
+        enum aircraft_e {LIGHT=0, WW2_FIGHTER, JET_TRANSPORT, JET_FIGHTER, TANKER};
+        static const PERF_STRUCT settings[];
        
-       FGAIAircraft();
+       FGAIAircraft(FGAISchedule *ref=0);
        ~FGAIAircraft();
-       
-       bool init();
-       void update(double dt);
 
-        void SetPerformance(PERF_STRUCT ps);
+        virtual void readFromScenario(SGPropertyNode* scFileNode);
+
+       virtual bool init();
+        virtual void bind();
+        virtual void unbind();
+       virtual void update(double dt);
+
+        void setPerformance(const std::string& perfString);
+        void SetPerformance(const PERF_STRUCT *ps);
+        void setFlightPlan(const std::string& fp, bool repat = false);
+        void SetFlightPlan(FGAIFlightPlan *f);
+        FGAIFlightPlan* GetFlightPlan() const { 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);
-       
-private:
+        void ProcessFlightPlan( double dt, time_t now );
+  void getGroundElev(double dt);
+  void doGroundAltitude();
+  void loadNextLeg  ();
+
+  void setAcType(const string& ac) { acType = ac; };
+  void setCompany(const string& comp) { company = comp;};
+
+        inline void SetTanker(bool setting) { isTanker = setting; };
+
+        virtual const char* getTypeString(void) const { return "aircraft"; }
 
+private:
+   FGAISchedule *trafficRef;
+  
         bool hdg_lock;
         bool alt_lock;
-
+        double dt_count;  
+  double dt_elev_count;
+  double headingChangeRate;
+  double groundTargetSpeed;
+  double groundOffset;
         double dt; 
 
-        PERF_STRUCT performance;
+        const PERF_STRUCT *performance;
+        bool use_perf_vs;
+        SGPropertyNode* refuel_node;
+        bool isTanker;
 
        void Run(double dt);
         double sign(double x); 
+  
+  string acType;
+  string company;
+  int spinCounter;
+  double prevSpeed;
+  double prev_dist_to_go;
+
+        bool _getGearDown() const;
+  bool reachedWaypoint;
 };
 
+
 #endif  // _FG_AIAircraft_HXX