X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FMain%2Foptions.cxx;h=4cf73e7779ffa3a3b40efa08c8736502376c4751;hb=5018278831a8340f3abbc27965b763931159cbf3;hp=30edd121c4157ed9294f16474767b7f946800ef3;hpb=c64a9649567216d8a4dc25c1420b1b356e4f2810;p=flightgear.git diff --git a/src/Main/options.cxx b/src/Main/options.cxx index 30edd121c..4cf73e777 100644 --- a/src/Main/options.cxx +++ b/src/Main/options.cxx @@ -45,6 +45,7 @@ bool global_fullscreen = true; #include #include +#include #include #include #include @@ -52,6 +53,7 @@ bool global_fullscreen = true; # include #endif +#include "fg_init.hxx" #include "globals.hxx" #include "options.hxx" #include "views.hxx" @@ -589,6 +591,36 @@ fgOPTIONS::parse_channel( const string& type, const string& channel_str ) { } +// Parse --wp=ID[,alt] +bool fgOPTIONS::parse_wp( const string& arg ) { + string id, alt_str; + double alt = 0.0; + + int pos = arg.find( "@" ); + if ( pos != string::npos ) { + id = arg.substr( 0, pos ); + alt_str = arg.substr( pos + 1 ); + // cout << "id str = " << id << " alt str = " << alt_str << endl; + alt = atof( alt_str.c_str() ); + if ( units == FG_UNITS_FEET ) { + alt *= FEET_TO_METER; + } + } else { + id = arg; + } + + FGAirport a; + if ( fgFindAirportID( id, &a ) ) { + SGWayPoint wp( a.longitude, a.latitude, alt, SGWayPoint::WGS84, id ); + globals->get_route()->add_waypoint( wp ); + + return true; + } else { + return false; + } +} + + // Parse a single option int fgOPTIONS::parse_option( const string& arg ) { // General Options @@ -864,6 +896,8 @@ int fgOPTIONS::parse_option( const string& arg ) { current_properties.setStringValue(name.c_str(), value); FG_LOG(FG_GENERAL, FG_INFO, "Setting default value of property " << name << " to \"" << value << '"'); + } else if ( arg.find( "--wp=" ) != string::npos ) { + parse_wp( arg.substr( 5 ) ); } else { FG_LOG( FG_GENERAL, FG_ALERT, "Unknown option '" << arg << "'" ); return FG_OPTIONS_ERROR; @@ -1043,7 +1077,7 @@ void fgOPTIONS::usage ( void ) { cout << "\t--notrim: Do NOT attempt to trim the model when initializing JSBsim" << endl; cout << endl; //(UIUC) - cout <<"Aircraft model directory" << endl; + cout <<"Aircraft model directory:" << endl; cout <<"\t--aircraft-dir= path is relative to the path of the executable" << endl; cout << endl; @@ -1119,7 +1153,7 @@ void fgOPTIONS::usage ( void ) { cout << "\t--start-date-lat=yyyy:mm:dd:hh:mm:ss: specify a starting" << endl << "\t\tdate/time. Uses Local Aircraft Time" << endl; #ifdef FG_NETWORK_OLK - cout << "" << endl; + cout << endl; cout << "Network Options:" << endl; cout << "\t--enable-network-olk: enable Multipilot mode" << endl; @@ -1127,6 +1161,13 @@ void fgOPTIONS::usage ( void ) { cout << "\t--net-hud: Hud displays network info" << endl; cout << "\t--net-id=name: specify your own callsign" << endl; #endif + + cout << endl; + cout << "Route/Way Point Options:" << endl; + cout << "\t--wp=ID[@alt]: specify a waypoint for the GC autopilot" << endl; + cout << "\t\tYou can specify multiple waypoints (a route) with multiple" + << endl; + cout << "\t\tinstances of --wp=" << endl; }