return true;
}
+// The parse wp and parse flight-plan options don't work anymore, because
+// the route manager and the airport subsystems have not yet been initialized
+// at this stage.
// Parse --wp=ID[@alt]
-static bool
+static void
parse_wp( const string& arg ) {
- string id, alt_str;
- double alt = 0.0;
-
- string::size_type 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 ( !strcmp(fgGetString("/sim/startup/units"), "feet") ) {
- alt *= SG_FEET_TO_METER;
- }
- } else {
- id = arg;
- }
-
- FGAirport a;
- if ( fgFindAirportID( id, &a ) ) {
- FGRouteMgr *rm = (FGRouteMgr *)globals->get_subsystem("route-manager");
- SGWayPoint wp( a.longitude, a.latitude, alt, SGWayPoint::WGS84, id );
- rm->add_waypoint( wp );
-
- return true;
- } else {
- return false;
+ string_list *waypoints = globals->get_initial_waypoints();
+ if (!waypoints) {
+ waypoints = new string_list;
}
+ waypoints->push_back(arg);
+ globals->set_initial_waypoints(waypoints);
}
static bool
parse_flightplan(const string& arg)
{
- sg_gzifstream in(arg.c_str());
- if ( !in.is_open() ) {
- return false;
- }
- while ( true ) {
- string line;
-
+ string_list *waypoints = globals->get_initial_waypoints();
+ if (!waypoints)
+ waypoints = new string_list;
+ sg_gzifstream in(arg.c_str());
+ if ( !in.is_open() ) {
+ return false;
+ }
+ while ( true ) {
+ string line;
+
#if defined( macintosh )
- getline( in, line, '\r' );
+ getline( in, line, '\r' );
#else
- getline( in, line, '\n' );
+ getline( in, line, '\n' );
#endif
-
- // catch extraneous (DOS) line ending character
- if ( line[line.length() - 1] < 32 ) {
- line = line.substr( 0, line.length()-1 );
- }
-
- if ( in.eof() ) {
- break;
- }
- parse_wp(line);
+
+ // catch extraneous (DOS) line ending character
+ if ( line[line.length() - 1] < 32 ) {
+ line = line.substr( 0, line.length()-1 );
}
-
- return true;
+
+ if ( in.eof() ) {
+ break;
+ }
+ waypoints->push_back(line);
+ }
+ globals->set_initial_waypoints(waypoints);
+ return true;
}
static int
return FG_OPTIONS_OK;
}
+static int
+fgSetupProxy( const char *arg )
+{
+ string options = arg;
+ string host, port, auth;
+ unsigned int pos;
+
+ host = port = auth = "";
+ if ((pos = options.find("@")) != string::npos)
+ auth = options.substr(0, pos++);
+ else
+ pos = 0;
+
+ host = options.substr(pos, options.size());
+ if ((pos = host.find(":")) != string::npos) {
+ port = host.substr(++pos, host.size());
+ host.erase(--pos, host.size());
+ }
+
+ fgSetString("/sim/presets/proxy/host", host.c_str());
+ fgSetString("/sim/presets/proxy/port", port.c_str());
+ fgSetString("/sim/presets/proxy/authentication", auth.c_str());
+
+ return FG_OPTIONS_OK;
+}
+
static int
fgOptTraceRead( const char *arg )
{
{"rul", true, OPTION_CHANNEL, "", false, "", 0 },
{"joyclient", true, OPTION_CHANNEL, "", false, "", 0 },
{"jsclient", true, OPTION_CHANNEL, "", false, "", 0 },
+ {"proxy", true, OPTION_FUNC, "", false, "", fgSetupProxy },
#ifdef FG_MPLAYER_AS
{"callsign", true, OPTION_STRING, "sim/multiplay/callsign", false, "", 0 },
{"multiplay", true, OPTION_CHANNEL, "", false, "", 0 },
SGPropertyNode options_root;
+ SG_LOG( SG_GENERAL, SG_ALERT, "" ); // To popup the console on Windows
cout << endl;
try {
cout << endl;
cout << "For a complete list of options use --help --verbose" << endl;
}
+#ifdef _MSC_VER
+ cout << "Hit a key to continue..." << endl;
+ cin.get();
+#endif
}
static void fgSearchAircraft(const SGPath &path, string_list &aircraft,
fgSearchAircraft( path, aircraft, recursive );
sort(aircraft.begin(), aircraft.end());
+ SG_LOG( SG_GENERAL, SG_ALERT, "" ); // To popup the console on Windows
cout << "Available aircraft:" << endl;
for ( unsigned int i = 0; i < aircraft.size(); i++ ) {
cout << aircraft[i] << endl;
}
+#ifdef _MSC_VER
+ cout << "Hit a key to continue..." << endl;
+ cin.get();
+#endif
}