X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FMain%2Ffg_init.cxx;h=5419fcd040a421a6c6c44a009cee0d98375fe68e;hb=2fbab0d702c9b1331aeec3c66167b813d101b593;hp=58fa1f1b541e2962c1b628e6043841c9618394c2;hpb=093960be317525ae72929fbb2f2bb3cdf949744d;p=flightgear.git diff --git a/src/Main/fg_init.cxx b/src/Main/fg_init.cxx index 58fa1f1b5..5419fcd04 100644 --- a/src/Main/fg_init.cxx +++ b/src/Main/fg_init.cxx @@ -52,6 +52,7 @@ #endif #include +#include #include STL_STRING @@ -107,6 +108,7 @@ #include "fg_props.hxx" #include "options.hxx" #include "globals.hxx" +#include "viewmgr.hxx" #if defined(FX) && defined(XMESA) #include @@ -192,9 +194,9 @@ string fgBasePackageVersion() { old_path.append( "Thanks" ); sg_gzifstream old( old_path.str() ); if ( !old.is_open() ) { - return "[none found]"; + return "[none]"; } else { - return "[old version, please upgrade]"; + return "[old version]"; } } @@ -215,12 +217,15 @@ bool fgInitConfig ( int argc, char **argv ) { SGPath props_path(globals->get_fg_root()); props_path.append("preferences.xml"); SG_LOG(SG_INPUT, SG_INFO, "Reading global preferences"); - if (!readProperties(props_path.str(), globals->get_props())) { - SG_LOG(SG_INPUT, SG_ALERT, "Failed to read global preferences from " - << props_path.str()); - } else { - SG_LOG(SG_INPUT, SG_INFO, "Finished Reading global preferences"); + try { + readProperties(props_path.str(), globals->get_props()); + } catch (const sg_exception &e) { + string message = "Error reading global preferences: "; + message += e.getFormattedMessage(); + SG_LOG(SG_INPUT, SG_ALERT, message); + exit(2); } + SG_LOG(SG_INPUT, SG_INFO, "Finished Reading global preferences"); // Attempt to locate and parse the various config files in order // from least precidence to greatest precidence @@ -655,19 +660,35 @@ bool fgInitSubsystems( void ) { sgSetVec3( position, current_aircraft.fdm_state->get_Latitude(), current_aircraft.fdm_state->get_Longitude(), current_aircraft.fdm_state->get_Altitude() * SG_FEET_TO_METER ); - FGLocalWeatherDatabase::theFGLocalWeatherDatabase = + double init_vis = fgGetDouble("/environment/visibility-m"); + + FGLocalWeatherDatabase::DatabaseWorkingType working_type; + + if (fgGetString("/environment/weather/working-type") == "internet") + { + working_type = FGLocalWeatherDatabase::use_internet; + } else { + working_type = FGLocalWeatherDatabase::default_mode; + } + + if ( init_vis > 0 ) { + FGLocalWeatherDatabase::theFGLocalWeatherDatabase = new FGLocalWeatherDatabase( position, - globals->get_fg_root() ); + globals->get_fg_root(), + working_type, + init_vis ); + } else { + FGLocalWeatherDatabase::theFGLocalWeatherDatabase = + new FGLocalWeatherDatabase( position, + globals->get_fg_root(), + working_type ); + } + // cout << theFGLocalWeatherDatabase << endl; // cout << "visibility = " // << theFGLocalWeatherDatabase->getWeatherVisibility() << endl; WeatherDatabase = FGLocalWeatherDatabase::theFGLocalWeatherDatabase; - - double init_vis = fgGetDouble("/environment/visibility-m"); - if ( init_vis > 0 ) { - WeatherDatabase->setWeatherVisibility( init_vis ); - } // register the periodic update of the weather global_events.Register( "weather update", fgUpdateWeatherDatabase, @@ -788,8 +809,8 @@ bool fgInitSubsystems( void ) { // Initialize the controls subsystem. //////////////////////////////////////////////////////////////////// - controls.init(); - controls.bind(); + globals->get_controls()->init(); + globals->get_controls()->bind(); //////////////////////////////////////////////////////////////////// @@ -863,7 +884,7 @@ void fgReInitSubsystems( void ) cur_fdm_state->init(); - controls.reset_all(); + globals->get_controls()->reset_all(); current_autopilot->reset(); fgUpdateSunPos();