X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FMain%2Fglobals.hxx;h=40c2b697ee838bd34a260668c55cbaf8e0466cc9;hb=029012b8b94f0719fc824f2b6afff43afe2cb9c2;hp=8db8f5557e9b4d761024f5e0a9d6fbafcb17a5fb;hpb=16a2bb0118b609a69843bdd0bcd0dc28e2f4be6d;p=flightgear.git diff --git a/src/Main/globals.hxx b/src/Main/globals.hxx index 8db8f5557..40c2b697e 100644 --- a/src/Main/globals.hxx +++ b/src/Main/globals.hxx @@ -24,23 +24,15 @@ #ifndef _GLOBALS_HXX #define _GLOBALS_HXX -#ifdef HAVE_CONFIG_H -# include -#endif - #include -#include +#include #include -#include +#include #include -#include STL_STRING - -SG_USING_STD( vector ); -SG_USING_STD( string ); - -typedef vector string_list; +#include +typedef std::vector string_list; // Forward declarations @@ -53,34 +45,21 @@ typedef vector string_list; // anyway. class SGEphemeris; - class SGCommandMgr; -class SGMagVar; class SGMaterialLib; -class SGModelLib; class SGPropertyNode; class SGTime; +class SGEventMgr; +class SGSubsystemMgr; +class SGSubsystem; class SGSoundMgr; - -class FGAirportList; -class FGRunwayList; -class FGAIMgr; -class FGATCMgr; -class FGAircraftModel; +class FGATISMgr; class FGControls; -class FGFlightPlanDispatcher; -class FGIO; -class FGNavList; -class FGAirwayNetwork; class FGTACANList; -class FGFixList; -class FGLight; -class FGModelMgr; +class FGLocale; class FGRouteMgr; class FGScenery; -class FGMultiplayMgr; -class FGPanel; class FGTileMgr; class FGViewMgr; class FGViewer; @@ -97,6 +76,13 @@ class FGGlobals private: + // properties, destroy last + SGPropertyNode_ptr props; + SGPropertyNode_ptr initial_state; + + // localization + FGLocale* locale; + FGRenderer *renderer; SGSubsystemMgr *subsystem_mgr; SGEventMgr *event_mgr; @@ -105,23 +91,15 @@ private: double sim_time_sec; // Root of FlightGear data tree - string fg_root; + std::string fg_root; + + // Users home directory for data + std::string fg_home; // Roots of FlightGear scenery tree string_list fg_scenery; - // Fullscreen mode for old 3DFX cards. -#if defined(FX) && defined(XMESA) - bool fullscreen; -#endif - - // An offset in seconds from the true time. Allows us to adjust - // the effective time of day. - long int warp; - - // How much to change the value of warp each iteration. Allows us - // to make time progress faster than normal (or even run in reverse.) - long int warp_delta; + std::string browser; // Time structure SGTime *time_params; @@ -129,32 +107,14 @@ private: // Sky structures SGEphemeris *ephem; - // Magnetic Variation - SGMagVar *mag; - // Material properties library SGMaterialLib *matlib; // Global autopilot "route" FGRouteMgr *route_mgr; - // 2D panel - FGPanel *current_panel; - - // sound manager - SGSoundMgr *soundmgr; - - // Simple Airport List - FGAirportList *airports; - - // Runway List - FGRunwayList *runways; - // ATC manager - FGATCMgr *ATC_mgr; - - // AI manager - FGAIMgr *AI_mgr; + FGATISMgr *ATIS_mgr; // control input state FGControls *controls; @@ -162,23 +122,8 @@ private: // viewer manager FGViewMgr *viewmgr; - // properties - SGPropertyNode *props; - SGPropertyNode *initial_state; - - // localization - SGPropertyNode *locale; - SGCommandMgr *commands; - SGModelLib *model_lib; - - //FGFlightPlanDispatcher *fpDispatcher; - - FGAircraftModel *acmodel; - - FGModelMgr * model_mgr; - // list of serial port-like configurations string_list *channel_options_list; @@ -192,26 +137,18 @@ private: // Tile manager FGTileMgr *tile_mgr; - // Input/Ouput subsystem - FGIO *io; - FGFontCache *fontcache; // Navigational Aids - FGNavList *navlist; - FGNavList *loclist; - FGNavList *gslist; - FGNavList *dmelist; - FGNavList *mkrlist; - FGNavList *tacanlist; - FGNavList *carrierlist; FGTACANList *channellist; - FGFixList *fixlist; - FGAirwayNetwork *airwaynet; - //Mulitplayer managers - FGMultiplayMgr *multiplayer_mgr; + /// roots of Aircraft trees + string_list fg_aircraft_dirs; + bool haveUserSettings; + + SGPropertyNode_ptr positionLon, positionLat, positionAlt; + SGPropertyNode_ptr orientHeading, orientPitch, orientRoll; public: FGGlobals(); @@ -231,28 +168,58 @@ public: virtual SGEventMgr *get_event_mgr () const; + virtual SGSoundMgr *get_soundmgr () const; + inline double get_sim_time_sec () const { return sim_time_sec; } inline void inc_sim_time_sec (double dt) { sim_time_sec += dt; } inline void set_sim_time_sec (double t) { sim_time_sec = t; } - inline const string &get_fg_root () const { return fg_root; } - void set_fg_root (const string &root); + inline const std::string &get_fg_root () const { return fg_root; } + void set_fg_root (const std::string &root); + + inline const std::string &get_fg_home () const { return fg_home; } + void set_fg_home (const std::string &home); inline const string_list &get_fg_scenery () const { return fg_scenery; } - void set_fg_scenery (const string &scenery); + void append_fg_scenery (const std::string &scenery); + + const string_list& get_aircraft_paths() const { return fg_aircraft_dirs; } + void append_aircraft_path(const std::string& path); + void append_aircraft_paths(const std::string& path); + + /** + * Given a path to an aircraft-related resource file, resolve it + * against the appropriate root. This means looking at the location + * defined by /sim/aircraft-dir, and then aircraft_path in turn, + * finishing with fg_root/Aircraft. + * + * if the path could not be resolved, an empty path is returned. + */ + SGPath resolve_aircraft_path(const std::string& branch) const; + + /** + * Same as above, but test for non 'Aircraft/' branch paths, and + * always resolve them against fg_root. + */ + SGPath resolve_maybe_aircraft_path(const std::string& branch) const; + + /** + * Search in the following directories: + * + * 1. Root directory of current aircraft (defined by /sim/aircraft-dir) + * 2. All aircraft directories if branch starts with Aircraft/ + * 3. fg_data directory + */ + SGPath resolve_ressource_path(const std::string& branch) const; -#if defined(FX) && defined(XMESA) - inline bool get_fullscreen() const { return fullscreen; } - inline bool set_fullscreen( bool f ) { fullscreen = f; } -#endif + inline const std::string &get_browser () const { return browser; } + void set_browser (const std::string &b) { browser = b; } - inline long int get_warp() const { return warp; } - inline void set_warp( long int w ) { warp = w; } - inline void inc_warp( long int w ) { warp += w; } + long int get_warp() const; + void set_warp( long int w ); - inline long int get_warp_delta() const { return warp_delta; } - inline void set_warp_delta( long int d ) { warp_delta = d; } - inline void inc_warp_delta( long int d ) { warp_delta += d; } + long int get_warp_delta() const; + void set_warp_delta( long int d ); inline SGTime *get_time_params() const { return time_params; } inline void set_time_params( SGTime *t ) { time_params = t; } @@ -260,29 +227,11 @@ public: inline SGEphemeris *get_ephem() const { return ephem; } inline void set_ephem( SGEphemeris *e ) { ephem = e; } - inline SGMagVar *get_mag() const { return mag; } - inline void set_mag( SGMagVar *m ) { mag = m; } - inline SGMaterialLib *get_matlib() const { return matlib; } inline void set_matlib( SGMaterialLib *m ) { matlib = m; } - inline FGAirportList *get_airports() const { return airports; } - inline void set_airports( FGAirportList *a ) {airports = a; } - - inline FGRunwayList *get_runways() const { return runways; } - inline void set_runways( FGRunwayList *r ) {runways = r; } - - inline FGATCMgr *get_ATC_mgr() const { return ATC_mgr; } - inline void set_ATC_mgr( FGATCMgr *a ) {ATC_mgr = a; } - - inline FGAIMgr *get_AI_mgr() const { return AI_mgr; } - inline void set_AI_mgr( FGAIMgr *a ) {AI_mgr = a; } - - inline FGPanel *get_current_panel() const { return current_panel; } - inline void set_current_panel( FGPanel *cp ) { current_panel = cp; } - - inline SGSoundMgr *get_soundmgr() const { return soundmgr; } - inline void set_soundmgr( SGSoundMgr *sm ) { soundmgr = sm; } + inline FGATISMgr *get_ATIS_mgr() const { return ATIS_mgr; } + inline void set_ATIS_mgr( FGATISMgr *a ) {ATIS_mgr = a; } inline FGControls *get_controls() const { return controls; } inline void set_controls( FGControls *c ) { controls = c; } @@ -294,38 +243,16 @@ public: inline SGPropertyNode *get_props () { return props; } inline void set_props( SGPropertyNode *n ) { props = n; } - inline SGPropertyNode *get_locale () { return locale; } - inline void set_locale( SGPropertyNode *n ) { locale = n; } + inline FGLocale* get_locale () { return locale; } inline SGCommandMgr *get_commands () { return commands; } - inline SGModelLib * get_model_lib () { return model_lib; } - - inline void set_model_lib (SGModelLib *m) { - model_lib = m; - } - - inline FGAircraftModel *get_aircraft_model () { return acmodel; } - - inline void set_aircraft_model (FGAircraftModel * model) - { - acmodel = model; - } + SGGeod get_aircraft_position() const; - inline FGModelMgr *get_model_mgr () { return model_mgr; } - - inline void set_model_mgr (FGModelMgr * mgr) - { - model_mgr = mgr; - } - - inline FGMultiplayMgr *get_multiplayer_mgr () { return multiplayer_mgr; } - - inline void set_multiplayer_mgr (FGMultiplayMgr * mgr) - { - multiplayer_mgr = mgr; - } + SGVec3d get_aircraft_positon_cart() const; + void get_aircraft_orientation(double& heading, double& pitch, double& roll); + inline string_list *get_channel_options_list () { return channel_options_list; } @@ -347,32 +274,11 @@ public: inline FGTileMgr * get_tile_mgr () const { return tile_mgr; } inline void set_tile_mgr ( FGTileMgr *t ) { tile_mgr = t; } - inline FGIO* get_io() const { return io; } inline FGFontCache *get_fontcache() const { return fontcache; } - - inline FGNavList *get_navlist() const { return navlist; } - inline void set_navlist( FGNavList *n ) { navlist = n; } - inline FGNavList *get_loclist() const { return loclist; } - inline void set_loclist( FGNavList *n ) { loclist = n; } - inline FGNavList *get_gslist() const { return gslist; } - inline void set_gslist( FGNavList *n ) { gslist = n; } - inline FGNavList *get_dmelist() const { return dmelist; } - inline void set_dmelist( FGNavList *n ) { dmelist = n; } - inline FGNavList *get_tacanlist() const { return tacanlist; } - inline void set_tacanlist( FGNavList *n ) { tacanlist = n; } - inline FGNavList *get_carrierlist() const { return carrierlist; } - inline void set_carrierlist( FGNavList *n ) { carrierlist = n; } - inline FGNavList *get_mkrlist() const { return mkrlist; } - inline void set_mkrlist( FGNavList *n ) { mkrlist = n; } - inline FGFixList *get_fixlist() const { return fixlist; } - inline void set_fixlist( FGFixList *f ) { fixlist = f; } + inline FGTACANList *get_channellist() const { return channellist; } inline void set_channellist( FGTACANList *c ) { channellist = c; } - - inline FGAirwayNetwork *get_airwaynet() const { return airwaynet; } - inline void set_airwaynet( FGAirwayNetwork *a ) { airwaynet = a; } - - + /** * Save the current state as the initial state. */ @@ -384,6 +290,15 @@ public: */ void restoreInitialState (); + /** + * Load user settings from autosave.xml + */ + void loadUserSettings(const SGPath& datapath); + + /** + * Save user settings in autosave.xml + */ + void saveUserSettings(); };