#include <string.h>
#include <string>
-#include <Debug/fg_debug.h>
-#include <Flight/flight.h>
+#include <Debug/logstream.hxx>
+#include <Flight/flight.hxx>
#include <Include/fg_constants.h>
-#include <Include/fg_zlib.h>
+#include <Misc/fgstream.hxx>
#include "options.hxx"
+const int fgOPTIONS::FG_RADIUS_MIN;
+const int fgOPTIONS::FG_RADIUS_MAX;
+
inline double
atof( const string& str )
{
tile_diameter(5),
// HUD options
+ units(FG_UNITS_FEET),
tris_or_culled(0),
// Time options
// printf("flight model = %s\n", fm);
if ( fm == "slew" ) {
- return(FG_SLEW);
+ return FG_SLEW;
} else if ( (fm == "larcsim") || (fm == "LaRCsim") ) {
- return(FG_LARCSIM);
+ return FG_LARCSIM;
} else {
- fgPrintf( FG_GENERAL, FG_EXIT, "Unknown flight model = %s\n",
- fm.c_str());
+ FG_LOG( FG_GENERAL, FG_ALERT, "Unknown flight model = " << fm );
+ exit(-1);
}
// we'll never get here, but it makes the compiler happy.
- return(-1);
+ return -1;
}
wireframe = false;
} else if ( arg == "--enable-wireframe" ) {
wireframe = true;
+ } else if ( arg == "--units-feet" ) {
+ units = FG_UNITS_FEET;
+ } else if ( arg == "--units-meters" ) {
+ units = FG_UNITS_METERS;
} else if ( arg.find( "--tile-radius=" ) != string::npos ) {
tile_radius = parse_tile_radius( arg.substr(14) );
tile_diameter = tile_radius * 2 + 1;
} else if ( arg == "--hud-culled" ) {
tris_or_culled = 1;
} else {
- fgPrintf( FG_GENERAL, FG_EXIT, "Unknown option '%s'\n",
- arg.c_str() );
- return(FG_OPTIONS_ERROR);
+ FG_LOG( FG_GENERAL, FG_ALERT, "Unknown option '" << arg << "'" );
+ return FG_OPTIONS_ERROR;
}
- return(FG_OPTIONS_OK);
+ return FG_OPTIONS_OK;
}
int i = 1;
int result;
- fgPrintf(FG_GENERAL, FG_INFO, "Processing command line arguments\n");
+ FG_LOG(FG_GENERAL, FG_INFO, "Processing command line arguments");
while ( i < argc ) {
- fgPrintf(FG_GENERAL, FG_DEBUG, "argv[%d] = %s\n", i, argv[i]);
+ FG_LOG( FG_GENERAL, FG_DEBUG, "argv[" << i << "] = " << argv[i] );
result = parse_option(argv[i]);
if ( (result == FG_OPTIONS_HELP) || (result == FG_OPTIONS_ERROR) ) {
// Parse config file options
int fgOPTIONS::parse_config_file( const string& path ) {
- char line[256];
- fgFile f;
- int len;
- string fgpath = path + ".gz";
-
- // first try "path.gz"
- if ( (f = fgopen(fgpath.c_str(), "rb")) == NULL ) {
- // next try "path"
- if ( (f = fgopen(path.c_str(), "rb")) == NULL ) {
- return(FG_OPTIONS_ERROR);
- }
- }
+ fg_gzifstream in( path );
+ if ( !in )
+ return(FG_OPTIONS_ERROR);
- fgPrintf( FG_GENERAL, FG_INFO, "Processing config file: %s\n",
- path.c_str() );
+ FG_LOG( FG_GENERAL, FG_INFO, "Processing config file: " << path );
- while ( fggets(f, line, 250) != NULL ) {
- // strip trailing newline if it exists
- len = strlen(line);
- if ( line[len-1] == '\n' ) {
- line[len-1] = '\0';
- }
+ in >> skipcomment;
+ while ( !in.eof() )
+ {
+ string line;
+ getline( in, line );
- // strip dos ^M if it exists
- len = strlen(line);
- if ( line[len-1] == '\r' ) {
- line[len-1] = '\0';
- }
-
- if ( parse_option( line ) == FG_OPTIONS_ERROR ) {
- fgPrintf( FG_GENERAL, FG_EXIT,
- "Config file parse error: %s '%s'\n",
- path.c_str(), line );
+ if ( parse_option( line ) == FG_OPTIONS_ERROR ) {
+ FG_LOG( FG_GENERAL, FG_ALERT,
+ "Config file parse error: " << path << " '"
+ << line << "'" );
+ exit(-1);
}
+ in >> skipcomment;
}
- fgclose(f);
return FG_OPTIONS_OK;
}
printf("General Options:\n");
printf("\t--help -h: print usage\n");
printf("\t--fg-root=path: specify the root path for all the data files\n");
- printf("\t--disable-gamemode: disable full-screen game mode\n");
- printf("\t--enable-gamemode: enable full-screen game mode\n");
+ printf("\t--disable-game-mode: disable full-screen game mode\n");
+ printf("\t--enable-game-mode: enable full-screen game mode\n");
printf("\t--disable-splash-screen: disable splash screen\n");
printf("\t--enable-splash-screen: enable splash screen\n");
printf("\t--disable-intro-music: disable introduction music\n");
printf("\n");
printf("Hud Options:\n");
+ printf("\t--units-feet: Hud displays units in feet\n");
+ 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");
// $Log$
+// Revision 1.29 1998/11/06 21:18:12 curt
+// Converted to new logstream debugging facility. This allows release
+// builds with no messages at all (and no performance impact) by using
+// the -DFG_NDEBUG flag.
+//
+// Revision 1.28 1998/11/06 14:47:03 curt
+// Changes to track Bernie's updates to fgstream.
+//
+// Revision 1.27 1998/11/02 23:04:04 curt
+// HUD units now display in feet by default with meters being a command line
+// option.
+//
+// Revision 1.26 1998/10/17 01:34:24 curt
+// C++ ifying ...
+//
+// Revision 1.25 1998/09/15 02:09:27 curt
+// Include/fg_callback.hxx
+// Moved code inline to stop g++ 2.7 from complaining.
+//
+// Simulator/Time/event.[ch]xx
+// Changed return type of fgEVENT::printStat(). void caused g++ 2.7 to
+// complain bitterly.
+//
+// Minor bugfix and changes.
+//
+// Simulator/Main/GLUTmain.cxx
+// Added missing type to idle_state definition - eliminates a warning.
+//
+// Simulator/Main/fg_init.cxx
+// Changes to airport lookup.
+//
+// Simulator/Main/options.cxx
+// Uses fg_gzifstream when loading config file.
+//
+// Revision 1.24 1998/09/08 15:04:33 curt
+// Optimizations by Norman Vine.
+//
// Revision 1.23 1998/08/27 17:02:07 curt
// Contributions from Bernie Bright <bbright@c031.aone.net.au>
// - use strings for fg_root and airport_id and added methods to return