]> git.mxchange.org Git - flightgear.git/blobdiff - src/Navaids/waypoint.hxx
commradio: improvements for atis speech
[flightgear.git] / src / Navaids / waypoint.hxx
index 7b5f30f09e228372a6e24a57119bb57b60552f49..377049ab0919153e0a680fce529c4894bb477c09 100644 (file)
 #ifndef FG_WAYPOINT_HXX
 #define FG_WAYPOINT_HXX
 
+#include <Airports/airports_fwd.hxx>
 #include <Navaids/route.hxx>
 #include <Navaids/positioned.hxx>
 
-class FGAirport;
-typedef SGSharedPtr<FGAirport> FGAirportRef;
-class SGWayPoint;
-class FGRunway;
-
 namespace flightgear
 {
 
-
 class BasicWaypt : public Waypt
 {
 public:
   
-  BasicWaypt(const SGGeod& aPos, const std::string& aIdent, Route* aOwner);
-  
-  BasicWaypt(const SGWayPoint& aWP, Route* aOwner);
-  
-  BasicWaypt(Route* aOwner);
+  BasicWaypt(const SGGeod& aPos, const std::string& aIdent, RouteBase* aOwner);
+    
+  BasicWaypt(RouteBase* aOwner);
   
   virtual SGGeod position() const
     { return _pos; }
@@ -67,9 +60,9 @@ protected:
 class NavaidWaypoint : public Waypt
 {
 public:
-  NavaidWaypoint(FGPositioned* aPos, Route* aOwner);
+  NavaidWaypoint(FGPositioned* aPos, RouteBase* aOwner);
   
-  NavaidWaypoint(Route* aOwner);
+  NavaidWaypoint(RouteBase* aOwner);
   
   virtual SGGeod position() const;
   
@@ -90,9 +83,9 @@ protected:
 class OffsetNavaidWaypoint : public NavaidWaypoint
 {
 public:        
-  OffsetNavaidWaypoint(FGPositioned* aPos, Route* aOwner, double aRadial, double aDistNm);
+  OffsetNavaidWaypoint(FGPositioned* aPos, RouteBase* aOwner, double aRadial, double aDistNm);
 
-  OffsetNavaidWaypoint(Route* aOwner);
+  OffsetNavaidWaypoint(RouteBase* aOwner);
   
   virtual SGGeod position() const
     { return _geod; }
@@ -120,9 +113,9 @@ private:
 class RunwayWaypt : public Waypt
 {
 public:
-  RunwayWaypt(FGRunway* aPos, Route* aOwner);
+  RunwayWaypt(FGRunway* aPos, RouteBase* aOwner);
   
-  RunwayWaypt(Route* aOwner);
+  RunwayWaypt(RouteBase* aOwner);
   
   virtual SGGeod position() const;
   
@@ -133,6 +126,7 @@ public:
   FGRunway* runway() const
     { return _runway; }
 
+  virtual double headingRadialDeg() const;
 protected:     
   virtual std::string type() const
     { return "runway"; }
@@ -147,9 +141,9 @@ private:
 class Hold : public BasicWaypt
 {
 public:
-  Hold(const SGGeod& aPos, const std::string& aIdent, Route* aOwner);
+  Hold(const SGGeod& aPos, const std::string& aIdent, RouteBase* aOwner);
   
-  Hold(Route* aOwner);
+  Hold(RouteBase* aOwner);
   
   void setHoldRadial(double aInboundRadial);
   void setHoldDistance(double aDistanceNm);
@@ -170,6 +164,8 @@ public:
   double timeOrDistance() const
   { return _holdTD;}
   
+  virtual double headingRadialDeg() const
+  { return inboundRadial(); }
 protected:
   virtual void initFromProperties(SGPropertyNode_ptr aProp);
   virtual void writeToProperties(SGPropertyNode_ptr aProp) const;
@@ -187,9 +183,9 @@ private:
 class HeadingToAltitude : public Waypt
 {
 public:
-  HeadingToAltitude(Route* aOwner, const std::string& aIdent, double aMagHdg);
+  HeadingToAltitude(RouteBase* aOwner, const std::string& aIdent, double aMagHdg);
   
-  HeadingToAltitude(Route* aOwner);
+  HeadingToAltitude(RouteBase* aOwner);
   
   virtual void initFromProperties(SGPropertyNode_ptr aProp);
   virtual void writeToProperties(SGPropertyNode_ptr aProp) const;
@@ -206,6 +202,11 @@ public:
   double headingDegMagnetic() const
     { return _magHeading; }
   
+  virtual double magvarDeg() const
+    { return 0.0; }
+  
+  virtual double headingRadialDeg() const
+  { return headingDegMagnetic(); }
 private:
   std::string _ident;
   double _magHeading;
@@ -214,10 +215,10 @@ private:
 class DMEIntercept : public Waypt
 {
 public:
-  DMEIntercept(Route* aOwner, const std::string& aIdent, const SGGeod& aPos,
+  DMEIntercept(RouteBase* aOwner, const std::string& aIdent, const SGGeod& aPos,
     double aCourseDeg, double aDistanceNm);
   
-  DMEIntercept(Route* aOwner);
+  DMEIntercept(RouteBase* aOwner);
   
   virtual void initFromProperties(SGPropertyNode_ptr aProp);
   virtual void writeToProperties(SGPropertyNode_ptr aProp) const;
@@ -236,7 +237,9 @@ public:
     
   double dmeDistanceNm() const
     { return _dmeDistanceNm; }
-    
+  
+  virtual double headingRadialDeg() const
+  { return courseDegMagnetic(); }
 private:
   std::string _ident;
   SGGeod _pos;
@@ -247,10 +250,10 @@ private:
 class RadialIntercept : public Waypt
 {
 public:
-  RadialIntercept(Route* aOwner, const std::string& aIdent, const SGGeod& aPos,
+  RadialIntercept(RouteBase* aOwner, const std::string& aIdent, const SGGeod& aPos,
     double aCourseDeg, double aRadialDeg);
   
-  RadialIntercept(Route* aOwner);
+  RadialIntercept(RouteBase* aOwner);
   
   virtual void initFromProperties(SGPropertyNode_ptr aProp);
   virtual void writeToProperties(SGPropertyNode_ptr aProp) const;
@@ -285,10 +288,10 @@ private:
 class ATCVectors : public Waypt
 {
 public:
-  ATCVectors(Route* aOwner, FGAirport* aFacility);
+  ATCVectors(RouteBase* aOwner, FGAirport* aFacility);
   virtual ~ATCVectors();
   
-  ATCVectors(Route* aOwner);
+  ATCVectors(RouteBase* aOwner);
   
   virtual void initFromProperties(SGPropertyNode_ptr aProp);
   virtual void writeToProperties(SGPropertyNode_ptr aProp) const;