]> git.mxchange.org Git - flightgear.git/blob - src/Airports/dynamics.hxx
Don't restore initial screen geometry because there is nothing in fg_os* to resize...
[flightgear.git] / src / Airports / dynamics.hxx
1 // dynamics.hxx - a class to manage the higher order airport ground activities
2 // Written by Durk Talsma, started December 2004.
3 //
4 //
5 // This program is free software; you can redistribute it and/or
6 // modify it under the terms of the GNU General Public License as
7 // published by the Free Software Foundation; either version 2 of the
8 // License, or (at your option) any later version.
9 //
10 // This program is distributed in the hope that it will be useful, but
11 // WITHOUT ANY WARRANTY; without even the implied warranty of
12 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13 // General Public License for more details.
14 //
15 // You should have received a copy of the GNU General Public License
16 // along with this program; if not, write to the Free Software
17 // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
18 //
19 // $Id$
20
21
22 #ifndef _AIRPORT_DYNAMICS_HXX_
23 #define _AIRPORT_DYNAMICS_HXX_
24
25
26 #ifndef __cplusplus                                                          
27 # error This library requires C++
28 #endif                        
29
30   
31
32 class FGAirportDynamics : public XMLVisitor {
33   
34 private:
35   double _longitude;    // degrees
36   double _latitude;     // degrees
37   double _elevation;    // ft
38   string _id;
39
40   FGParkingVec parkings;
41   FGRunwayPreference rwyPrefs;
42   FGGroundNetwork groundNetwork;
43
44   time_t lastUpdate;
45   string prevTrafficType;
46   stringVec landing;
47   stringVec takeoff;
48   stringVec currentlyActive;
49
50   // Experimental keep a running average of wind dir and speed to prevent
51   // Erratic runway changes. 
52   // Note: I should add these to the copy constructor and assigment operator to be
53   // constistent
54   double avWindHeading [10];
55   double avWindSpeed   [10];
56
57   string chooseRunwayFallback();
58
59 public:
60   FGAirportDynamics(double, double, double, string);
61   FGAirportDynamics(const FGAirportDynamics &other);
62   ~FGAirportDynamics();
63
64
65   void init();
66   double getLongitude() const { return _longitude;};
67   // Returns degrees
68   double getLatitude()  const { return _latitude; };
69   // Returns ft
70   double getElevation() const { return _elevation;};
71   
72   void getActiveRunway(const string& trafficType, int action, string& runway);
73   bool getAvailableParking(double *lat, double *lon, 
74                            double *heading, int *gate, double rad, const string& fltype, 
75                            const string& acType, const string& airline);
76   void getParking         (int id, double *lat, double* lon, double *heading);
77   FGParking *getParking(int i);
78   void releaseParking(int id);
79   string getParkingName(int i); 
80   //FGAirport *getAddress() { return this; };
81   //const string &getName() const { return _name;};
82   // Returns degrees
83
84  FGGroundNetwork* getGroundNetwork() { return &groundNetwork; };
85   
86
87   void setRwyUse(const FGRunwayPreference& ref);
88
89  // Some overloaded virtual XMLVisitor members
90   virtual void startXML (); 
91   virtual void endXML   ();
92   virtual void startElement (const char * name, const XMLAttributes &atts);
93   virtual void endElement (const char * name);
94   virtual void data (const char * s, int len);
95   virtual void pi (const char * target, const char * data);
96   virtual void warning (const char * message, int line, int column);
97   virtual void error (const char * message, int line, int column);
98 };
99
100
101
102 #endif