//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
-// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
//
// $Id$
#ifndef _FG_INIT_HXX
#define _FG_INIT_HXX
+#include <string>
+#include <simgear/misc/sg_path.hxx>
-#ifndef __cplusplus
-# error This library requires C++
-#endif
-
-
-#ifdef HAVE_CONFIG
-# include <config.h>
-#endif
-
-#include <simgear/compiler.h>
-#include <simgear/timing/sg_time.hxx>
-
-#include STL_STRING
-
-#include <Airports/simple.hxx>
-
-SG_USING_STD(string);
-
-
-// Read in configuration (files and command line optoins) but only set
-// fg_root
-bool fgInitFGRoot ( int argc, char **argv );
-
+// forward decls
+class SGPropertyNode;
+class SGPath;
// Return the current base package version
-string fgBasePackageVersion();
+std::string fgBasePackageVersion(const SGPath& path);
+bool fgInitHome();
// Read in configuration (file and command line)
-bool fgInitConfig ( int argc, char **argv );
+int fgInitConfig ( int argc, char **argv, bool reinit );
+
+void fgInitAircraftPaths(bool reinit);
+int fgInitAircraft(bool reinit);
+
+// log various settings / configuration state
+void fgOutputSettings();
// Initialize the localization
SGPropertyNode *fgInitLocale(const char *language);
-
// Init navaids and waypoints
bool fgInitNav ();
bool fgInitGeneral ();
-// This is the top level init routine which calls all the other
-// initialization routines. If you are adding a subsystem to flight
-// gear, its initialization call should located in this routine.
-bool fgInitSubsystems();
-
-
-// Reset
-void fgReInitSubsystems();
-
+// Create all the subsystems needed by the sim
+void fgCreateSubsystems(bool duringReset);
-// Set the initial position based on presets (or defaults)
-bool fgInitPosition();
+// called after the subsystems have been bound and initialised,
+// to peform final init
+void fgPostInitSubsystems();
-// Initialize various time dependent systems (lighting, sun position, etc.)
-// returns a new instance of the SGTime class
-SGTime *fgInitTime();
+// Re-position: when only location is changing, we can do considerably
+// less work than a full re-init.
+void fgStartReposition();
-// set up a time offset (aka warp) if one is specified
-void fgInitTimeOffset();
+void fgStartNewReset();
+// setup the package system including the global root
+void fgInitPackageRoot();
#endif // _FG_INIT_HXX