]> git.mxchange.org Git - flightgear.git/blobdiff - src/Main/globals.cxx
Modified Files:
[flightgear.git] / src / Main / globals.cxx
index 97777dcb27ef5a46983506df99492fa13e40f57d..33098d807ee09619d331933e3bc437f0ee78a381 100644 (file)
@@ -2,7 +2,7 @@
 //
 // Written by Curtis Olson, started July 2000.
 //
 //
 // Written by Curtis Olson, started July 2000.
 //
-// Copyright (C) 2000  Curtis L. Olson - curt@flightgear.org
+// Copyright (C) 2000  Curtis L. Olson - http://www.flightgear.org/~curt
 //
 // This program is free software; you can redistribute it and/or
 // modify it under the terms of the GNU General Public License as
 //
 // This program is free software; you can redistribute it and/or
 // modify it under the terms of the GNU General Public License as
 //
 // You should have received a copy of the GNU General Public License
 // along with this program; if not, write to the Free Software
 //
 // 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$
 
 //
 // $Id$
 
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
 
 #include <simgear/sound/soundmgr_openal.hxx>
 #include <simgear/structure/commands.hxx>
 #include <simgear/misc/sg_path.hxx>
 
 
 #include <simgear/sound/soundmgr_openal.hxx>
 #include <simgear/structure/commands.hxx>
 #include <simgear/misc/sg_path.hxx>
 
+#include <GUI/new_gui.hxx>
+
 #include "globals.hxx"
 #include "globals.hxx"
+#include "renderer.hxx"
 #include "viewmgr.hxx"
 
 #include "fg_props.hxx"
 #include "viewmgr.hxx"
 
 #include "fg_props.hxx"
@@ -42,11 +48,11 @@ FGGlobals *globals;
 
 // Constructor
 FGGlobals::FGGlobals() :
 
 // Constructor
 FGGlobals::FGGlobals() :
+    renderer( new FGRenderer ),
     subsystem_mgr( new SGSubsystemMgr ),
     event_mgr( new SGEventMgr ),
     sim_time_sec( 0.0 ),
     fg_root( "" ),
     subsystem_mgr( new SGSubsystemMgr ),
     event_mgr( new SGEventMgr ),
     sim_time_sec( 0.0 ),
     fg_root( "" ),
-    fg_scenery( "" ),
 #if defined(FX) && defined(XMESA)
     fullscreen( true ),
 #endif
 #if defined(FX) && defined(XMESA)
     fullscreen( true ),
 #endif
@@ -67,20 +73,23 @@ FGGlobals::FGGlobals() :
     props( new SGPropertyNode ),
     initial_state( NULL ),
     locale( NULL ),
     props( new SGPropertyNode ),
     initial_state( NULL ),
     locale( NULL ),
-    commands( new SGCommandMgr ),
+    commands( SGCommandMgr::instance() ),
     model_lib( NULL ),
     acmodel( NULL ),
     model_mgr( NULL ),
     channel_options_list( NULL ),
     model_lib( NULL ),
     acmodel( NULL ),
     model_mgr( NULL ),
     channel_options_list( NULL ),
-    initial_waypoints(0),
+    initial_waypoints( NULL ),
     scenery( NULL ),
     tile_mgr( NULL ),
     io( new FGIO ),
     scenery( NULL ),
     tile_mgr( NULL ),
     io( new FGIO ),
+    fontcache ( new FGFontCache ),
     navlist( NULL ),
     loclist( NULL ),
     gslist( NULL ),
     dmelist( NULL ),
     mkrlist( NULL ),
     navlist( NULL ),
     loclist( NULL ),
     gslist( NULL ),
     dmelist( NULL ),
     mkrlist( NULL ),
+    tacanlist( NULL ),
+    carrierlist( NULL ), 
     fixlist( NULL )
 {
 }
     fixlist( NULL )
 {
 }
@@ -94,13 +103,10 @@ FGGlobals::~FGGlobals()
     delete event_mgr;
     delete initial_state;
     delete props;
     delete event_mgr;
     delete initial_state;
     delete props;
-    delete commands;
     delete io;
     delete io;
-  
-    // make sure only to delete the initial waypoints list if it acually
-    // still exists. 
-    if (initial_waypoints)
-        delete initial_waypoints;
+    delete fontcache;
+    delete renderer;
+    delete initial_waypoints;
 }
 
 
 }
 
 
@@ -114,42 +120,62 @@ void FGGlobals::set_fg_root (const string &root) {
     tmp.append( "version" );
     if ( ulFileExists( tmp.c_str() ) ) {
         fg_root += "/data";
     tmp.append( "version" );
     if ( ulFileExists( tmp.c_str() ) ) {
         fg_root += "/data";
-        }
+    }
+
+    fgSetString("/sim/fg-root", fg_root.c_str());   
 }
 
 void FGGlobals::set_fg_scenery (const string &scenery) {
 }
 
 void FGGlobals::set_fg_scenery (const string &scenery) {
-
-    if (scenery.empty())
-        return;
-
-    SGPath pt( scenery ), po( scenery );
-    pt.append("Terrain");
-    po.append("Objects");
-
-cout << "pt: " << pt.str() << endl;
-cout << "po: " << po.str() << endl;
-    ulDir *td = ulOpenDir(pt.c_str());
-    ulDir *od = ulOpenDir(po.c_str());
-
-    if (td == NULL) {
-        if (od == NULL) {
-            fg_scenery = scenery;
-        } else {
-            fg_scenery = po.str();
-            ulCloseDir(od);
-        }
-    } else {
-        if (od != NULL) {
-            pt.add(po.str());
-            ulCloseDir(od);
+    SGPath s;
+    if (scenery.empty()) {
+        s.set( fg_root );
+        s.append( "Scenery" );
+    } else
+        s.set( scenery );
+
+    string_list path_list = sgPathSplit( s.str() );
+    fg_scenery.clear();
+
+    for (unsigned i = 0; i < path_list.size(); i++) {
+
+        ulDir *d = ulOpenDir( path_list[i].c_str() );
+        if (d == NULL)
+            continue;
+        ulCloseDir( d );
+
+        SGPath pt( path_list[i] ), po( path_list[i] );
+        pt.append("Terrain");
+        po.append("Objects");
+
+        ulDir *td = ulOpenDir( pt.c_str() );
+        ulDir *od = ulOpenDir( po.c_str() );
+
+        if (td == NULL && od == NULL)
+            fg_scenery.push_back( path_list[i] );
+        else {
+            if (td != NULL) {
+                fg_scenery.push_back( pt.str() );
+                ulCloseDir( td );
+            }
+            if (od != NULL) {
+                fg_scenery.push_back( po.str() );
+                ulCloseDir( od );
+            }
         }
         }
-        fg_scenery = pt.str();
-        ulCloseDir(td);
+        // insert a marker for FGTileEntry::load(), so that
+        // FG_SCENERY=A:B becomes list ["A/Terrain", "A/Objects", "",
+        // "B/Terrain", "B/Objects", ""]
+        fg_scenery.push_back("");
     }
     }
-cout << "fg_scenery: " << fg_scenery << endl;
 }
 
 
 }
 
 
+FGRenderer *
+FGGlobals::get_renderer () const
+{
+   return renderer;
+}
+
 SGSubsystemMgr *
 FGGlobals::get_subsystem_mgr () const
 {
 SGSubsystemMgr *
 FGGlobals::get_subsystem_mgr () const
 {