]> git.mxchange.org Git - flightgear.git/blobdiff - Main/options.cxx
Renamed FlightGear/Simulator/Flight to FlightGear/Simulator/FDM since
[flightgear.git] / Main / options.cxx
index 69ffbc14ed4370cec83b676c9eda7444e5b0f53c..d889c7bbf92b894ad92a987839a46da90b1d48c7 100644 (file)
@@ -1,4 +1,3 @@
-//
 // options.cxx -- class to handle command line options
 //
 // Written by Curtis Olson, started April 1998.
 #include <string>
 
 #include <Debug/logstream.hxx>
-#include <Flight/flight.hxx>
+#include <FDM/flight.hxx>
 #include <Include/fg_constants.h>
+#include <Main/options.hxx>
 #include <Misc/fgstream.hxx>
 
 #include "fg_serial.hxx"
 
-#include "options.hxx"
-
-
-const int fgOPTIONS::FG_RADIUS_MIN;
-const int fgOPTIONS::FG_RADIUS_MAX;
-
 
 inline double
 atof( const string& str )
@@ -134,7 +128,7 @@ fgOPTIONS::fgOPTIONS() :
     sound(1),
 
     // Flight Model options
-    flight_model(FG_LARCSIM),
+    flight_model(FGState::FG_LARCSIM),
 
     // Rendering options
     fog(FG_FOG_NICEST),  // nicest
@@ -155,18 +149,7 @@ fgOPTIONS::fgOPTIONS() :
     tris_or_culled(0),
        
     // Time options
-    time_offset(0),
-
-    // Serial port options
-    // port_a(FG_SERIAL_DISABLED),
-    // port_b(FG_SERIAL_DISABLED),
-    // port_c(FG_SERIAL_DISABLED),
-    // port_d(FG_SERIAL_DISABLED),
-
-    port_a_config(""),
-    port_b_config(""),
-    port_c_config(""),
-    port_d_config("")
+    time_offset(0)
 
 {
     // set initial values/defaults
@@ -189,6 +172,10 @@ fgOPTIONS::fgOPTIONS() :
     }
 
     airport_id = "";  // default airport id
+
+    // initialize port config string list
+    port_options_list.erase ( port_options_list.begin(), 
+                             port_options_list.end() );
 }
 
 
@@ -322,9 +309,11 @@ fgOPTIONS::parse_flight_model( const string& fm ) {
     // printf("flight model = %s\n", fm);
 
     if ( fm == "slew" ) {
-       return FG_SLEW;
+       return FGState::FG_SLEW;
     } else if ( (fm == "larcsim") || (fm == "LaRCsim") ) {
-       return FG_LARCSIM;
+       return FGState::FG_LARCSIM;
+    } else if ( fm == "external" ) {
+       return FGState::FG_EXTERNAL;
     } else {
        FG_LOG( FG_GENERAL, FG_ALERT, "Unknown flight model = " << fm );
        exit(-1);
@@ -349,25 +338,23 @@ fgOPTIONS::parse_fov( const string& arg ) {
 }
 
 
-// Parse serial port option --serial=a,/dev/ttyS1,nmea,4800,out
+// Parse serial port option --serial=/dev/ttyS1,nmea,4800,out
 //
-// Format is "--serial=port_id,device,format,baud,direction" where
+// Format is "--serial=device,format,baud,direction" where
 // 
-//  port_id = {a, b, c, d}
 //  device = OS device name to be open()'ed
 //  format = {nmea, fgfs}
 //  baud = {300, 1200, 2400, ..., 230400}
 //  direction = {in, out, bi}
-//
+
 bool 
 fgOPTIONS::parse_serial( const string& serial_str ) {
     string::size_type pos;
-    string port;
-    string config;
 
     // cout << "Serial string = " << serial_str << endl;
 
-    // port
+    // a flailing attempt to see if the port config string has a
+    // chance at being valid
     pos = serial_str.find(",");
     if ( pos == string::npos ) {
        FG_LOG( FG_GENERAL, FG_ALERT, 
@@ -375,22 +362,7 @@ fgOPTIONS::parse_serial( const string& serial_str ) {
        return false;
     }
     
-    port = serial_str.substr(0, pos);
-    config = serial_str.substr(++pos);
-
-    if ( port == "a" ) {
-       port_a_config = config;
-    } else if ( port == "b" ) {
-       port_b_config = config;
-    } else if ( port == "c" ) {
-       port_c_config = config;
-    } else if ( port == "d" ) {
-       port_d_config = config;
-    } else {
-       FG_LOG( FG_GENERAL, FG_ALERT, "Valid ports are a - d, config for port "
-               << port << " ignored" );
-       return false;
-    }
+    port_options_list.push_back( serial_str );
 
     return true;
 }
@@ -441,7 +413,11 @@ int fgOPTIONS::parse_option( const string& arg ) {
     } else if ( arg.find( "--lat=" ) != string::npos ) {
        lat = parse_degree( arg.substr(6) );
     } else if ( arg.find( "--altitude=" ) != string::npos ) {
-       altitude = atof( arg.substr(11) );
+       if ( units == FG_UNITS_FEET ) {
+           altitude = atof( arg.substr(11) ) * FEET_TO_METER;
+       } else {
+           altitude = atof( arg.substr(11) );
+       }
     } else if ( arg.find( "--heading=" ) != string::npos ) {
        heading = atof( arg.substr(10) );
     } else if ( arg.find( "--roll=" ) != string::npos ) {
@@ -598,11 +574,16 @@ void fgOPTIONS::usage ( void ) {
     printf("\t--enable-sound:  enable sound effects\n");
     printf("\n");
  
+    printf("Flight Model:\n");
+    printf("\t--flight-mode=abcd:  one of slew, larcsim, or external\n");
+    printf("\n");
+
     printf("Initial Position and Orientation:\n");
     printf("\t--airport-id=ABCD:  specify starting postion by airport id\n");
     printf("\t--lon=degrees:  starting longitude in degrees (west = -)\n");
     printf("\t--lat=degrees:  starting latitude in degrees (south = -)\n");
-    printf("\t--altitude=meters:  starting altitude in meters\n");
+    printf("\t--altitude=feet:  starting altitude in feet\n");
+    printf("\t\t(unless --units-meters specified\n");
     printf("\t--heading=degrees:  heading (yaw) angle in degress (Psi)\n");
     printf("\t--roll=degrees:  roll angle in degrees (Phi)\n");
     printf("\t--pitch=degrees:  pitch angle in degrees (Theta)\n");
@@ -623,7 +604,7 @@ void fgOPTIONS::usage ( void ) {
     printf("\t--enable-textures:  enable textures\n");
     printf("\t--disable-wireframe:  disable wireframe drawing mode\n");
     printf("\t--enable-wireframe:  enable wireframe drawing mode\n");
-    printf("\t--geomtry=WWWxHHH:  specify window geometry: 640x480, 800x600\n");
+    printf("\t--geometry=WWWxHHH:  window geometry: 640x480, 800x600, etc.\n");
     printf("\n");
 
     printf("Scenery Options:\n");
@@ -635,6 +616,7 @@ void fgOPTIONS::usage ( void ) {
     printf("\t--units-meters:  Hud displays units in meters\n");
     printf("\t--hud-tris:  Hud displays number of triangles rendered\n");
     printf("\t--hud-culled:  Hud displays percentage of triangles culled\n");
+    printf("\n");
        
     printf("Time Options:\n");
     printf("\t--time-offset=[+-]hh:mm:ss:  offset local time by this amount\n");
@@ -647,6 +629,36 @@ fgOPTIONS::~fgOPTIONS( void ) {
 
 
 // $Log$
+// Revision 1.38  1999/02/01 21:33:35  curt
+// Renamed FlightGear/Simulator/Flight to FlightGear/Simulator/FDM since
+// Jon accepted my offer to do this and thought it was a good idea.
+//
+// Revision 1.37  1999/01/19 20:57:05  curt
+// MacOS portability changes contributed by "Robert Puyol" <puyol@abvent.fr>
+//
+// Revision 1.36  1999/01/07 20:25:10  curt
+// Updated struct fgGENERAL to class FGGeneral.
+//
+// Revision 1.35  1998/12/06 14:52:57  curt
+// Fixed a problem with the initial starting altitude.  "v->abs_view_pos" wasn't
+// being calculated correctly at the beginning causing the first terrain
+// intersection to fail, returning a ground altitude of zero, causing the plane
+// to free fall for one frame, until the ground altitude was corrected, but now
+// being under the ground we got a big bounce and the plane always ended up
+// upside down.
+//
+// Revision 1.34  1998/12/05 15:54:22  curt
+// Renamed class fgFLIGHT to class FGState as per request by JSB.
+//
+// Revision 1.33  1998/12/04 01:30:44  curt
+// Added support for the External flight model.
+//
+// Revision 1.32  1998/11/25 01:34:00  curt
+// Support for an arbitrary number of serial ports.
+//
+// Revision 1.31  1998/11/23 21:49:04  curt
+// Borland portability tweaks.
+//
 // Revision 1.30  1998/11/16 14:00:02  curt
 // Added pow() macro bug work around.
 // Added support for starting FGFS at various resolutions.