]> git.mxchange.org Git - flightgear.git/blobdiff - src/Main/options.cxx
Remove conditional compilation of ATCDCL
[flightgear.git] / src / Main / options.cxx
index d3b282be8afd774e71f651069dd0efd1f8519186..b5b28a0ecac2e7d94be9ee57d8fe85217b2577f3 100644 (file)
@@ -56,7 +56,9 @@
 #include "util.hxx"
 #include "viewmgr.hxx"
 #include <Main/viewer.hxx>
+
 #include <simgear/version.h>
+#include <osg/Version>
 
 using std::string;
 using std::sort;
@@ -64,8 +66,10 @@ using std::cout;
 using std::cerr;
 using std::endl;
 
-#ifndef VERSION
-#define VERSION "CVS "__DATE__
+#if defined( HAVE_VERSION_H ) && HAVE_VERSION_H
+#  include <Include/version.h>
+#else
+#  include <Include/no_version.h>
 #endif
 
 #define NEW_DEFAULT_MODEL_HZ 120
@@ -114,6 +118,7 @@ fgSetDefaults ()
        // Otherwise, default to Scenery being in $FG_ROOT/Scenery
        globals->set_fg_scenery("");
     }
+        
                                // Position (deliberately out of range)
     fgSetDouble("/position/longitude-deg", 9999.0);
     fgSetDouble("/position/latitude-deg", 9999.0);
@@ -232,6 +237,13 @@ fgSetDefaults ()
     fgSetString("/sim/multiplay/txhost", "0");
     fgSetInt("/sim/multiplay/rxport", 0);
     fgSetInt("/sim/multiplay/txport", 0);
+    
+    fgSetString("/sim/version/flightgear", FLIGHTGEAR_VERSION);
+    fgSetString("/sim/version/simgear", SG_STRINGIZE(SIMGEAR_VERSION));
+    fgSetString("/sim/version/openscenegraph", osgGetVersion());
+    fgSetString("/sim/version/revision", REVISION);
+    fgSetInt("/sim/version/build-number", HUDSON_BUILD_NUMBER);
+    fgSetString("/sim/version/build-id", HUDSON_BUILD_ID);
 }
 
 static bool
@@ -772,7 +784,7 @@ fgOptRoc( const char *arg )
 static int
 fgOptFgRoot( const char *arg )
 {
-    globals->set_fg_root(arg);
+    // this option is dealt with by fgInitFGRoot
     return FG_OPTIONS_OK;
 }
 
@@ -783,6 +795,13 @@ fgOptFgScenery( const char *arg )
     return FG_OPTIONS_OK;
 }
 
+static int
+fgOptFgAircraft(const char* arg)
+{
+  // this option is dealt with by fgInitFGAircraft
+  return FG_OPTIONS_OK;
+}
+
 static int
 fgOptFov( const char *arg )
 {
@@ -977,6 +996,7 @@ fgOptVisibilityMeters( const char *arg )
 {
     double visibility = atof( arg );
     fgDefaultWeatherValue("visibility-m", visibility);
+    fgSetDouble("/environment/visibility-m", visibility);
     return FG_OPTIONS_OK;
 }
 
@@ -985,6 +1005,7 @@ fgOptVisibilityMiles( const char *arg )
 {
     double visibility = atof( arg ) * 5280.0 * SG_FEET_TO_METER;
     fgDefaultWeatherValue("visibility-m", visibility);
+    fgSetDouble("/environment/visibility-m", visibility);
     return FG_OPTIONS_OK;
 }
 
@@ -1200,7 +1221,9 @@ fgOptParking( const char *arg )
 static int
 fgOptVersion( const char *arg )
 {
-    cerr << "FlightGear version: " << VERSION << endl;
+    cerr << "FlightGear version: " << FLIGHTGEAR_VERSION << endl;
+    cerr << "Revision: " << REVISION << endl;
+    cerr << "Build-Id: " << HUDSON_BUILD_ID << endl;
     cerr << "FG_ROOT=" << globals->get_fg_root() << endl;
     cerr << "FG_HOME=" << fgGetString("/sim/fg-home") << endl;
     cerr << "FG_SCENERY=";
@@ -1233,6 +1256,26 @@ fgOptFgviewer(const char* arg)
     return FG_OPTIONS_OK;
 }
 
+static int
+fgOptCallSign(const char * arg)
+{
+    int i;
+    char callsign[11];
+    strncpy(callsign,arg,10);
+    callsign[10]=0;
+    for (i=0;callsign[i];i++)
+    {
+        char c = callsign[i];
+        if (c >= 'A' && c <= 'Z') continue;
+        if (c >= 'a' && c <= 'z') continue;
+        if (c >= '0' && c <= '9') continue;
+        if (c == '-' || c == '_') continue;
+        // convert any other illegal characters
+        callsign[i]='-';
+    }
+    fgSetString("sim/multiplay/callsign", callsign );
+    return FG_OPTIONS_OK;
+}
 
 
 static map<string,size_t> fgOptionMap;
@@ -1286,8 +1329,8 @@ struct OptionDesc {
     {"enable-mouse-pointer",         false, OPTION_STRING, "/sim/startup/mouse-pointer", false, "enabled", 0 },
     {"disable-random-objects",       false, OPTION_BOOL,   "/sim/rendering/random-objects", false, "", 0 },
     {"enable-random-objects",        false, OPTION_BOOL,   "/sim/rendering/random-objects", true, "", 0 },
-    {"disable-real-weather-fetch",   false, OPTION_BOOL,   "/environment/params/real-world-weather-fetch", false, "", 0 },
-    {"enable-real-weather-fetch",    false, OPTION_BOOL,   "/environment/params/real-world-weather-fetch", true,  "", 0 },
+    {"disable-real-weather-fetch",   false, OPTION_BOOL,   "/environment/realwx/enabled", false, "", 0 },
+    {"enable-real-weather-fetch",    false, OPTION_BOOL,   "/environment/realwx/enabled", true,  "", 0 },
     {"metar",                        true,  OPTION_STRING, "/environment/metar/data", false, "", 0 },
     {"disable-ai-models",            false, OPTION_BOOL,   "/sim/ai/enabled", false, "", 0 },
     {"enable-ai-models",             false, OPTION_BOOL,   "/sim/ai/enabled", true, "", 0 },
@@ -1339,6 +1382,7 @@ struct OptionDesc {
     {"roc",                          true,  OPTION_FUNC,   "", false, "", fgOptRoc },
     {"fg-root",                      true,  OPTION_FUNC,   "", false, "", fgOptFgRoot },
     {"fg-scenery",                   true,  OPTION_FUNC,   "", false, "", fgOptFgScenery },
+    {"fg-aircraft",                  true,  OPTION_FUNC,   "", false, "", fgOptFgAircraft },
     {"fdm",                          true,  OPTION_STRING, "/sim/flight-model", false, "", 0 },
     {"aero",                         true,  OPTION_STRING, "/sim/aero", false, "", 0 },
     {"aircraft-dir",                 true,  OPTION_STRING, "/sim/aircraft-dir", false, "", 0 },
@@ -1416,7 +1460,7 @@ struct OptionDesc {
     {"joyclient",                    true,  OPTION_CHANNEL, "", false, "", 0 },
     {"jsclient",                     true,  OPTION_CHANNEL, "", false, "", 0 },
     {"proxy",                        true,  OPTION_FUNC,    "", false, "", fgSetupProxy },
-    {"callsign",                     true, OPTION_STRING,  "sim/multiplay/callsign", false, "", 0 },
+    {"callsign",                     true,  OPTION_FUNC,    "", false, "", fgOptCallSign},
     {"multiplay",                    true,  OPTION_CHANNEL, "", false, "", 0 },
     {"trace-read",                   true,  OPTION_FUNC,   "", false, "", fgOptTraceRead },
     {"trace-write",                  true,  OPTION_FUNC,   "", false, "", fgOptTraceWrite },
@@ -1528,6 +1572,10 @@ parse_option (const string& arg)
             SG_LOG( SG_GENERAL, SG_ALERT, "Bad property assignment: " << arg );
             return FG_OPTIONS_ERROR;
         }
+    } else if ( arg.find("-psn_") == 0) {
+    // on Mac, when launched from the GUI, we are passed the ProcessSerialNumber
+    // as an argument (and no others). Silently ignore the argument here.
+        return FG_OPTIONS_OK;
     } else if ( arg.find( "--" ) == 0 ) {
         size_t pos = arg.find( '=' );
         string arg_name, arg_value;
@@ -1622,7 +1670,7 @@ fgParseArgs (int argc, char **argv)
     bool verbose = false;
     bool help = false;
 
-    SG_LOG(SG_GENERAL, SG_INFO, "Processing command line arguments");
+    SG_LOG(SG_GENERAL, SG_ALERT, "Processing command line arguments");
 
     for (int i = 1; i < argc; i++) {
         string arg = argv[i];
@@ -1642,7 +1690,7 @@ fgParseArgs (int argc, char **argv)
               fgOptLogLevel( "alert" );
               SGPath path( globals->get_fg_root() );
               path.append("Aircraft");
-              fgShowAircraft(path, true);
+              fgShowAircraft(path);
               exit(0);
 
             } else if (result == FG_OPTIONS_SHOW_SOUND_DEVICES) {
@@ -1847,117 +1895,3 @@ fgUsage (bool verbose)
     cin.get();
 #endif
 }
-
-// A simple function to return an integer depending on the position
-// of the status string within the array in order to determine the hierarchy.
-unsigned int getNumMaturity(const char * str) 
-{
-  // changes should also be reflected in $FG_ROOT/data/options.xml & 
-  // $FG_ROOT/data/Translations/string-default.xml
-  const char* levels[] = {"alpha","beta","early-production","production"}; 
-
-  if (!strcmp(str, "all")) {
-    return 0;
-  }
-
-  for (size_t i=0; i<(sizeof(levels)/sizeof(levels[0]));i++) 
-    if (strcmp(str,levels[i])==0)
-      return i;
-
-  return 0;
-};
-
-
-static void fgSearchAircraft(const SGPath &path, string_list &aircraft,
-                             bool recursive)
-{   
-  if (!path.exists()) {
-    SG_LOG(SG_GENERAL, SG_WARN, "fgSearchAircraft: no such path:" << path.str());
-    return;
-  }
-  int requiredStatus = getNumMaturity(fgGetString("/sim/aircraft-min-status", "all"));
-  
-  simgear::Dir dir(path);
-  simgear::PathList setFiles(dir.children(simgear::Dir::TYPE_FILE, "-set.xml"));
-  simgear::PathList::iterator p;
-  for (p = setFiles.begin(); p != setFiles.end(); ++p) {
-    // check file name ends with -set.xml
-    
-    SGPropertyNode root;
-    try {
-       readProperties(p->str(), &root);
-    } catch (sg_exception& e) {
-       continue;
-    }
-    
-         int maturity = 0;
-    string descStr("   ");
-    descStr += path.file();
-      
-    SGPropertyNode *node = root.getNode("sim");
-    if (node) {
-      SGPropertyNode* desc = node->getNode("description");
-      // if a status tag is found, read it in
-      if (node->hasValue("status")) {
-        maturity = getNumMaturity(node->getStringValue("status"));
-      }
-      
-      if (desc) {
-        if (descStr.size() <= 27+3) {
-          descStr.append(29+3-descStr.size(), ' ');
-        } else {
-          descStr += '\n';
-          descStr.append( 32, ' ');
-        }
-        descStr += desc->getStringValue();
-      }
-    } // of have 'sim' node
-    
-    if (maturity < requiredStatus) {
-      continue;
-    }
-    
-  // if we found a -set.xml at this level, don't recurse any deeper
-    recursive = false;
-    
-    aircraft.push_back(descStr);
-  } // of -set.xml iteration
-  
-  // recurse down if requested
-  if (recursive) {
-    simgear::PathList subdirs(dir.children(simgear::Dir::TYPE_DIR | simgear::Dir::NO_DOT_OR_DOTDOT));
-    for (p = subdirs.begin(); p != subdirs.end(); ++p) {
-      if (p->file() == "CVS") {
-        continue;
-      }
-      
-      fgSearchAircraft(*p, aircraft, recursive);
-    }
-  } // of recursive case
-}
-
-/*
- * Search in the current directory, and in on directory deeper
- * for <aircraft>-set.xml configuration files and show the aircaft name
- * and the contents of the<description> tag in a sorted manner.
- *
- * @parampath the directory to search for configuration files
- * @param recursive defines whether the directory should be searched recursively
- */
-void fgShowAircraft(const SGPath &path, bool recursive) {
-    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
-}