class SGRoute;
class SGPath;
+class FGAirport;
+typedef SGSharedPtr<FGAirport> FGAirportRef;
+
/**
* Top level route manager class
*
SGRoute* _route;
time_t _takeoffTime;
time_t _touchdownTime;
- bool _autoSequence; // true if we are doing internal sequencing
- // false if other code (FMS/GPS) is managing sequencing
+ FGAirportRef _departure;
+ FGAirportRef _destination;
// automatic inputs
SGPropertyNode_ptr lon;
SGPropertyNode_ptr alt;
SGPropertyNode_ptr magvar;
- // automatic outputs
- SGPropertyNode_ptr target_altitude_ft;
- SGPropertyNode_ptr altitude_lock;
-
+ // automatic outputs
SGPropertyNode_ptr departure; ///< departure airport information
SGPropertyNode_ptr destination; ///< destination airport information
SGPropertyNode_ptr alternate; ///< alternate airport information
SGPropertyNode_ptr active;
SGPropertyNode_ptr airborne;
- SGPropertyNode_ptr currentWp;
SGPropertyNode_ptr wp0;
SGPropertyNode_ptr wp1;
SGPropertyNode_ptr _pathNode;
+ SGPropertyNode_ptr _currentWpt;
+
+
+ /**
+ * Signal property to notify people that the route was edited
+ */
+ SGPropertyNode_ptr _edited;
+
+ /**
+ * Signal property to notify when the last waypoint is reached
+ */
+ SGPropertyNode_ptr _finished;
void setETAPropertyFromDistance(SGPropertyNode_ptr aProp, double aDistance);
InputListener *listener;
SGPropertyNode_ptr mirror;
- bool altitude_set;
/**
* Create a SGWayPoint from a string in the following format:
*/
SGWayPoint* make_waypoint(const string& target);
+ /**
+ * Helper to keep various pieces of state in sync when the SGRoute is
+ * modified (waypoints added, inserted, removed). Notably, this fires the
+ * 'edited' signal.
+ */
+ void waypointsChanged();
void update_mirror();
- bool near_ground();
void currentWaypointChanged();
/**
- * Helper to update the target_altitude_ft and altitude_set flag when wp0
- * changes
+ * Parse a route/wp node (from a saved, property-lsit formatted route)
*/
- void updateTargetAltitude();
+ void parseRouteWaypoint(SGPropertyNode* aWP);
/**
- * Parse a route/wp node (from a saved, property-lsit formatted route)
+ * Check if we've reached the final waypoint.
+ * Returns true if we have.
*/
- void parseRouteWaypoint(SGPropertyNode* aWP);
+ bool checkFinished();
+
+// tied getters and setters
+ const char* getDepartureICAO() const;
+ const char* getDepartureName() const;
+ void setDepartureICAO(const char* aIdent);
+
+ const char* getDestinationICAO() const;
+ const char* getDestinationName() const;
+ void setDestinationICAO(const char* aIdent);
+
public:
FGRouteMgr();
*/
void jumpToIndex(int index);
+ /**
+ *
+ */
+ void setWaypointTargetAltitudeFt(unsigned int index, int altFt);
+
void saveRoute();
void loadRoute();
};