X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FMain%2Fglobals.hxx;h=d962bae2c2937bbc6e2f12de46e177e6ac6d0f53;hb=18d1593c42c2df60d7fb44ace722ca3e8a7fd82c;hp=b2e1001091ec08a1daa7801b28c38592937ea6a1;hpb=eaf9fa762180182c4af7a877f4e6865726dd8e5f;p=flightgear.git diff --git a/src/Main/globals.hxx b/src/Main/globals.hxx index b2e100109..d962bae2c 100644 --- a/src/Main/globals.hxx +++ b/src/Main/globals.hxx @@ -2,7 +2,7 @@ // // 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 @@ -16,7 +16,7 @@ // // 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$ @@ -25,54 +25,87 @@ #define _GLOBALS_HXX #include +#include +#include #include -#include STL_STRING - - -#include -#include -#include -#include -#include -#include - -SG_USING_STD( vector ); -SG_USING_STD( string ); - -typedef vector string_list; - -#include +#include +typedef std::vector string_list; // Forward declarations -class FGEnvironmentMgr; -class FGEnvironment; + +// This file is included, directly or indirectly, almost everywhere in +// FlightGear, so if any of its dependencies changes, most of the sim +// has to be recompiled. Using these forward declarations helps us to +// avoid including a lot of header files (and thus, a lot of +// dependencies). Since Most of the methods simply set or return +// pointers, we don't need to know anything about the class details +// anyway. + +class SGEphemeris; +class SGCommandMgr; +class SGMagVar; +class SGMaterialLib; +class SGPropertyNode; +class SGTime; +class SGSoundMgr; +class SGEventMgr; +class SGSubsystemMgr; +class SGSubsystem; + +class FGAIMgr; +class FGATCMgr; +class FGAircraftModel; class FGControls; -class FGSoundMgr; -class FGFX; +class FGFlightPlanDispatcher; +class FGIO; +class FGNavList; +class FGAirwayNetwork; +class FGTACANList; +class FGLight; +class FGModelMgr; +class FGRouteMgr; +class FGScenery; +class FGMultiplayMgr; +class FGPanel; +class FGTileMgr; class FGViewMgr; class FGViewer; +class FGRenderer; +class FGFontCache; + -class FGGlobals { +/** + * Bucket for subsystem pointers representing the sim's state. + */ + +class FGGlobals +{ private: - // Root of FlightGear data tree - string fg_root; + // properties, destroy last + SGPropertyNode_ptr props; + SGPropertyNode_ptr initial_state; + + // localization + SGPropertyNode_ptr locale; - // Root of FlightGear scenery tree - string fg_scenery; + FGRenderer *renderer; + SGSubsystemMgr *subsystem_mgr; + SGEventMgr *event_mgr; + + // Number of milliseconds elapsed since the start of the program. + double sim_time_sec; + + // Root of FlightGear data tree + std::string fg_root; -#if 0 - // Freeze sim - bool freeze; -#endif + // Roots of FlightGear scenery tree + string_list fg_scenery; - // Fullscreen mode for old 3DFX cards. -#if defined(FX) && defined(XMESA) - bool fullscreen; -#endif + std::string browser; // An offset in seconds from the true time. Allows us to adjust // the effective time of day. @@ -91,56 +124,100 @@ private: // Magnetic Variation SGMagVar *mag; + // Material properties library + SGMaterialLib *matlib; + // Global autopilot "route" - SGRoute *route; + FGRouteMgr *route_mgr; + + // 2D panel + FGPanel *current_panel; // sound manager - FGSoundMgr *soundmgr; + SGSoundMgr *soundmgr; - // sound-effects manager - FGFX *fx; + // ATC manager + FGATCMgr *ATC_mgr; - // environment information - FGEnvironmentMgr * environment_mgr; + // AI manager + FGAIMgr *AI_mgr; // control input state FGControls *controls; // viewer manager FGViewMgr *viewmgr; - FGViewer *current_view; - - // properties - SGPropertyNode *props; - SGPropertyNode *initial_state; SGCommandMgr *commands; + //FGFlightPlanDispatcher *fpDispatcher; + + FGAircraftModel *acmodel; + + FGModelMgr * model_mgr; + // list of serial port-like configurations string_list *channel_options_list; + // A list of initial waypoints that are read from the command line + // and or flight-plan file during initialization + string_list *initial_waypoints; + + // FlightGear scenery manager + FGScenery *scenery; + + // Tile manager + FGTileMgr *tile_mgr; + + // Input/Ouput subsystem + FGIO *io; + + FGFontCache *fontcache; + + // Navigational Aids + FGNavList *navlist; + FGNavList *loclist; + FGNavList *gslist; + FGNavList *dmelist; + FGNavList *tacanlist; + FGNavList *carrierlist; + FGTACANList *channellist; + FGAirwayNetwork *airwaynet; + + //Mulitplayer managers + FGMultiplayMgr *multiplayer_mgr; + public: FGGlobals(); - ~FGGlobals(); + virtual ~FGGlobals(); - inline const string &get_fg_root () const { return fg_root; } - inline void set_fg_root (const string &root) { fg_root = root; } + virtual FGRenderer *get_renderer () const; - inline const string &get_fg_scenery () const { return fg_scenery; } - inline void set_fg_scenery (const string &scenery) { - fg_scenery = scenery; - } + virtual SGSubsystemMgr *get_subsystem_mgr () const; + + virtual SGSubsystem *get_subsystem (const char * name); + + virtual void add_subsystem (const char * name, + SGSubsystem * subsystem, + SGSubsystemMgr::GroupType + type = SGSubsystemMgr::GENERAL, + double min_time_sec = 0); + + virtual SGEventMgr *get_event_mgr () const; -#if 0 - inline bool get_freeze() const { return freeze; } - inline void set_freeze( bool f ) { freeze = f; } -#endif + 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; } -#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_fg_root () const { return fg_root; } + void set_fg_root (const std::string &root); + + inline const string_list &get_fg_scenery () const { return fg_scenery; } + void set_fg_scenery (const std::string &scenery); + + 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; } @@ -159,42 +236,57 @@ public: inline SGMagVar *get_mag() const { return mag; } inline void set_mag( SGMagVar *m ) { mag = m; } - inline SGRoute *get_route() const { return route; } - inline void set_route( SGRoute *r ) { route = r; } + inline SGMaterialLib *get_matlib() const { return matlib; } + inline void set_matlib( SGMaterialLib *m ) { matlib = m; } - inline FGEnvironmentMgr * get_environment_mgr() { - return environment_mgr; - } - inline void set_environment_mgr(FGEnvironmentMgr * mgr) { - environment_mgr = mgr; - } - inline const FGEnvironment * get_environment() const { - return environment_mgr->getEnvironment(); - } - inline const FGEnvironment * get_environment(double lat, double lon, - double alt) const { - return environment_mgr->getEnvironment(lat, lon, alt); - } + inline FGATCMgr *get_ATC_mgr() const { return ATC_mgr; } + inline void set_ATC_mgr( FGATCMgr *a ) {ATC_mgr = a; } - inline FGSoundMgr *get_soundmgr() const { return soundmgr; } - inline void set_soundmgr( FGSoundMgr *sm ) { soundmgr = sm; } + inline FGAIMgr *get_AI_mgr() const { return AI_mgr; } + inline void set_AI_mgr( FGAIMgr *a ) {AI_mgr = a; } - inline FGFX *get_fx() const { return fx; } - inline void set_fx( FGFX *x ) { fx = x; } + 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 FGControls *get_controls() const { return controls; } inline void set_controls( FGControls *c ) { controls = c; } inline FGViewMgr *get_viewmgr() const { return viewmgr; } inline void set_viewmgr( FGViewMgr *vm ) { viewmgr = vm; } - inline FGViewer *get_current_view() const { return current_view; } - inline void set_current_view( FGViewer *v ) { current_view = v; } + FGViewer *get_current_view() const; 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 SGCommandMgr *get_commands () { return commands; } + inline FGAircraftModel *get_aircraft_model () { return acmodel; } + + inline void set_aircraft_model (FGAircraftModel * model) + { + acmodel = model; + } + + 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; + } + inline string_list *get_channel_options_list () { return channel_options_list; } @@ -202,8 +294,43 @@ public: channel_options_list = l; } + inline string_list *get_initial_waypoints () { + return initial_waypoints; + } + + inline void set_initial_waypoints (string_list *list) { + initial_waypoints = list; + } - /** + inline FGScenery * get_scenery () const { return scenery; } + inline void set_scenery ( FGScenery *s ) { scenery = s; } + + 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 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. */ void saveInitialState (); @@ -221,5 +348,3 @@ extern FGGlobals *globals; #endif // _GLOBALS_HXX - -