X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FMain%2Foptions.cxx;h=8571b1ca0f82457951b9b164a8447a77d2043dbe;hb=a9ab25ddd15af9d2ddc0b5dfed6548c51c7e5ed9;hp=4554821787fbd6be7224e2c60602845fdcbf6ffd;hpb=0ffa19cd32c02405d0e740393b37f4009ed5a312;p=flightgear.git diff --git a/src/Main/options.cxx b/src/Main/options.cxx index 455482178..8571b1ca0 100644 --- a/src/Main/options.cxx +++ b/src/Main/options.cxx @@ -52,8 +52,9 @@ bool global_fullscreen = true; # include #endif -#include "views.hxx" +#include "globals.hxx" #include "options.hxx" +#include "views.hxx" FG_USING_STD(string); FG_USING_NAMESPACE(std); @@ -155,13 +156,12 @@ fgOPTIONS::fgOPTIONS() : splash_screen(1), intro_music(1), mouse_pointer(0), - pause(0), control_mode(FG_JOYSTICK), auto_coordination(FG_AUTO_COORD_NOT_SPECIFIED), // Features - hud_status(1), - panel_status(0), + hud_status(0), + panel_status(1), sound(1), anti_alias_hud(0), @@ -182,8 +182,8 @@ fgOPTIONS::fgOPTIONS() : skyblend(1), textures(1), wireframe(0), - xsize(640), - ysize(480), + xsize(800), + ysize(600), bpp(16), view_mode(FG_VIEW_PILOT), @@ -200,7 +200,7 @@ fgOPTIONS::fgOPTIONS() : network_olk(false) { // set initial values/defaults - time_offset_type = SG_TIME_SYS_OFFSET; + time_offset_type = FG_TIME_SYS_OFFSET; char* envp = ::getenv( "FG_ROOT" ); if ( envp != NULL ) { @@ -208,20 +208,32 @@ fgOPTIONS::fgOPTIONS() : // variable $FG_ROOT if it is set. fg_root = envp; } else { - // Otherwise, default to a random compiled in location if + // Otherwise, default to a random compiled-in location if // $FG_ROOT is not set. This can still be overridden from the // command line or a config file. #if defined( WIN32 ) fg_root = "\\FlightGear"; -#elif defined( MACOS ) +#elif defined( macintosh ) fg_root = ""; #else fg_root = PKGLIBDIR; #endif } - airport_id = ""; // default airport id + // set a possibly independent location for scenery data + envp = ::getenv( "FG_SCENERY" ); + + if ( envp != NULL ) { + // fg_root could be anywhere, so default to environmental + // variable $FG_ROOT if it is set. + fg_scenery = envp; + } else { + // Otherwise, default to Scenery being in $FG_ROOT/Scenery + fg_scenery = ""; + } + + airport_id = "P13"; // default airport id net_id = "Johnney"; // default pilot's name // initialize port config string list @@ -231,8 +243,10 @@ fgOPTIONS::fgOPTIONS() : void fgOPTIONS::toggle_panel() { - if( !pause ) - toggle_pause(); + bool freeze = globals->get_freeze(); + + if( !freeze ) + globals->set_freeze(true); if( panel_status ) { panel_status = false; @@ -243,16 +257,19 @@ fgOPTIONS::toggle_panel() { if ( current_panel != NULL ) current_panel->setVisibility(true); } - if ( panel_status ) { + + // new rule .. "fov" shouldn't get messed with like this. + /* if ( panel_status ) { fov *= 0.4232; } else { fov *= (1.0 / 0.4232); - } + } */ + // fgReshape( xsize, ysize); fgReshape( current_view.get_winWidth(), current_view.get_winHeight() ); - if( !pause ) - toggle_pause(); + if( !freeze ) + globals->set_freeze( false ); } double @@ -432,12 +449,8 @@ long int fgOPTIONS::parse_date( const string& date) num[i] = '\0'; gmt.tm_sec = atoi(num); } - time_t theTime = SGTime::cur_time_params->get_gmt(gmt.tm_year, - gmt.tm_mon, - gmt.tm_mday, - gmt.tm_hour, - gmt.tm_min, - gmt.tm_sec); + time_t theTime = sgTimeGetGMT( gmt.tm_year, gmt.tm_mon, gmt.tm_mday, + gmt.tm_hour, gmt.tm_min, gmt.tm_sec ); //printf ("Date is %s\n", ctime(&theTime)); //printf ("in seconds that is %d\n", theTime); //exit(1); @@ -556,10 +569,11 @@ fgOPTIONS::parse_fov( const string& arg ) { // device = OS device name of serial line to be open()'ed // baud = {300, 1200, 2400, ..., 230400} // -// Socket exacmple "--native=socket,dir,hz,machine,port" where +// Socket exacmple "--native=socket,dir,hz,machine,port,style" where // // machine = machine name or ip address if client (leave empty if server) // port = port, leave empty to let system choose +// style = tcp or udp // // File example "--garmin=file,dir,hz,filename" where // @@ -597,10 +611,10 @@ int fgOPTIONS::parse_option( const string& arg ) { mouse_pointer = 1; } else if ( arg == "--enable-mouse-pointer" ) { mouse_pointer = 2; - } else if ( arg == "--disable-pause" ) { - pause = false; - } else if ( arg == "--enable-pause" ) { - pause = true; + } else if ( arg == "--disable-freeze" ) { + globals->set_freeze( false ); + } else if ( arg == "--enable-freeze" ) { + globals->set_freeze( true ); } else if ( arg == "--disable-anti-alias-hud" ) { anti_alias_hud = false; } else if ( arg == "--enable-anti-alias-hud" ) { @@ -622,8 +636,8 @@ int fgOPTIONS::parse_option( const string& arg ) { } else if ( arg == "--enable-panel" ) { panel_status = true; if ( current_panel != NULL ) - current_panel->setVisibility(true); - fov *= 0.4232; + current_panel->setVisibility(true); + // fov *= 0.4232; /* NO!!! */ } else if ( arg == "--disable-sound" ) { sound = false; } else if ( arg == "--enable-sound" ) { @@ -632,14 +646,19 @@ int fgOPTIONS::parse_option( const string& arg ) { airport_id = arg.substr( 13 ); } else if ( arg.find( "--lon=" ) != string::npos ) { lon = parse_degree( arg.substr(6) ); + airport_id = ""; + current_properties.setDoubleValue("/position/longitude", lon); } else if ( arg.find( "--lat=" ) != string::npos ) { lat = parse_degree( arg.substr(6) ); + airport_id = ""; + current_properties.setDoubleValue("/position/latitude", lat); } else if ( arg.find( "--altitude=" ) != string::npos ) { if ( units == FG_UNITS_FEET ) { altitude = atof( arg.substr(11) ) * FEET_TO_METER; } else { altitude = atof( arg.substr(11) ); } + current_properties.setDoubleValue("/position/altitude", altitude); } else if ( arg.find( "--uBody=" ) != string::npos ) { vkcas=mach=-1; if ( units == FG_UNITS_FEET ) { @@ -647,6 +666,7 @@ int fgOPTIONS::parse_option( const string& arg ) { } else { uBody = atof( arg.substr(8) ) * FEET_TO_METER; } + current_properties.setDoubleValue("/velocities/speed-north", uBody); } else if ( arg.find( "--vBody=" ) != string::npos ) { vkcas=mach=-1; if ( units == FG_UNITS_FEET ) { @@ -654,6 +674,7 @@ int fgOPTIONS::parse_option( const string& arg ) { } else { vBody = atof( arg.substr(8) ) * FEET_TO_METER; } + current_properties.setDoubleValue("/velocities/speed-east", vBody); } else if ( arg.find( "--wBody=" ) != string::npos ) { vkcas=mach=-1; if ( units == FG_UNITS_FEET ) { @@ -661,6 +682,7 @@ int fgOPTIONS::parse_option( const string& arg ) { } else { wBody = atof( arg.substr(8) ) * FEET_TO_METER; } + current_properties.setDoubleValue("/velocities/speed-down", wBody); } else if ( arg.find( "--vc=" ) != string::npos) { mach=-1; vkcas=atof( arg.substr(5) ); @@ -670,14 +692,20 @@ int fgOPTIONS::parse_option( const string& arg ) { mach=atof( arg.substr(7) ); } else if ( arg.find( "--heading=" ) != string::npos ) { heading = atof( arg.substr(10) ); + current_properties.setDoubleValue("/orientation/heading", heading); } else if ( arg.find( "--roll=" ) != string::npos ) { roll = atof( arg.substr(7) ); + current_properties.setDoubleValue("/orientation/roll", roll); } else if ( arg.find( "--pitch=" ) != string::npos ) { pitch = atof( arg.substr(8) ); + current_properties.setDoubleValue("/orientation/pitch", pitch); } else if ( arg.find( "--fg-root=" ) != string::npos ) { fg_root = arg.substr( 10 ); + } else if ( arg.find( "--fg-scenery=" ) != string::npos ) { + fg_scenery = arg.substr( 13 ); } else if ( arg.find( "--fdm=" ) != string::npos ) { flight_model = parse_fdm( arg.substr(6) ); + current_properties.setIntValue("/sim/flight-model", flight_model); if((flight_model == FGInterface::FG_JSBSIM) && (get_trim_mode() == 0)) { set_trim_mode(1); } else { @@ -685,6 +713,7 @@ int fgOPTIONS::parse_option( const string& arg ) { } } else if ( arg.find( "--aircraft=" ) != string::npos ) { aircraft = arg.substr(11); + current_properties.setStringValue("/sim/aircraft", aircraft); } else if ( arg.find( "--aircraft-dir=" ) != string::npos ) { aircraft_dir = arg.substr(15); // (UIUC) } else if ( arg.find( "--model-hz=" ) != string::npos ) { @@ -773,22 +802,22 @@ int fgOPTIONS::parse_option( const string& arg ) { tile_diameter = tile_radius * 2 + 1; } else if ( arg.find( "--time-offset" ) != string::npos ) { time_offset = parse_time_offset( (arg.substr(14)) ); - //time_offset_type = SG_TIME_SYS_OFFSET; + //time_offset_type = FG_TIME_SYS_OFFSET; } else if ( arg.find( "--time-match-real") != string::npos ) { //time_offset = parse_time_offset(arg.substr(18)); - time_offset_type = SG_TIME_SYS_OFFSET; + time_offset_type = FG_TIME_SYS_OFFSET; } else if ( arg.find( "--time-match-local") != string::npos ) { //time_offset = parse_time_offset(arg.substr(18)); - time_offset_type = SG_TIME_LAT_OFFSET; + time_offset_type = FG_TIME_LAT_OFFSET; } else if ( arg.find( "--start-date-sys=") != string::npos ) { time_offset = parse_date( (arg.substr(17)) ); - time_offset_type = SG_TIME_SYS_ABSOLUTE; + time_offset_type = FG_TIME_SYS_ABSOLUTE; } else if ( arg.find( "--start-date-lat=") != string::npos ) { time_offset = parse_date( (arg.substr(17)) ); - time_offset_type = SG_TIME_LAT_ABSOLUTE; + time_offset_type = FG_TIME_LAT_ABSOLUTE; } else if ( arg.find( "--start-date-gmt=") != string::npos ) { time_offset = parse_date( (arg.substr(17)) ); - time_offset_type = SG_TIME_GMT_ABSOLUTE; + time_offset_type = FG_TIME_GMT_ABSOLUTE; } else if ( arg == "--hud-tris" ) { tris_or_culled = 0; @@ -881,7 +910,7 @@ int fgOPTIONS::parse_config_file( const string& path ) { #ifdef GETLINE_NEEDS_TERMINATOR getline( in, line, '\n' ); -#elif defined (MACOS) +#elif defined( macintosh ) getline( in, line, '\r' ); #else getline( in, line ); @@ -909,6 +938,9 @@ void fgOPTIONS::usage ( void ) { cout << "\t--help -h: print usage" << endl; cout << "\t--fg-root=path: specify the root path for all the data files" << endl; + cout << "\t--fg-scenery=path: specify the base path for all the scenery" + << " data." << endl + << "\t\tdefaults to $FG_ROOT/Scenery" << endl; cout << "\t--disable-game-mode: disable full-screen game mode" << endl; cout << "\t--enable-game-mode: enable full-screen game mode" << endl; cout << "\t--disable-splash-screen: disable splash screen" << endl; @@ -919,8 +951,8 @@ void fgOPTIONS::usage ( void ) { cout << "\t--enable-mouse-pointer: enable extra mouse pointer (i.e. for" << endl; cout << "\t\tfull screen voodoo/voodoo-II based cards.)" << endl; - cout << "\t--disable-pause: start out in an active state" << endl; - cout << "\t--enable-pause: start out in a paused state" << endl; + cout << "\t--disable-freeze: start out in an running state" << endl; + cout << "\t--enable-freeze: start out in a frozen state" << endl; cout << "\t--control=mode: primary control mode " << "(joystick, keyboard, mouse)" << endl; cout << endl; @@ -1025,6 +1057,8 @@ void fgOPTIONS::usage ( void ) { cout << "" << endl; cout << "Network Options:" << endl; + cout << "\t--enable-network-olk: enable Multipilot mode" << endl; + cout << "\t--disable-network-olk: disable Multipilot mode (default)" << endl; cout << "\t--net-hud: Hud displays network info" << endl; cout << "\t--net-id=name: specify your own callsign" << endl; #endif