X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;ds=sidebyside;f=src%2FMain%2Fglobals.hxx;h=071c97c24cd44ea5c4ba35488230aad386e2e418;hb=e7795093e7d846ef2fc9303763291eea9c16bc7e;hp=46daa721f9591434b250408db5538595511eb72b;hpb=36876decf310c2adbd2ad5eb3b60bf7242c55a49;p=flightgear.git diff --git a/src/Main/globals.hxx b/src/Main/globals.hxx index 46daa721f..071c97c24 100644 --- a/src/Main/globals.hxx +++ b/src/Main/globals.hxx @@ -24,19 +24,18 @@ #ifndef _GLOBALS_HXX #define _GLOBALS_HXX +#ifdef HAVE_CONFIG_H +# include +#endif + #include +#include +#include +#include #include #include STL_STRING - -#include -#include -#include -#include -#include -#include - SG_USING_STD( vector ); SG_USING_STD( string ); @@ -44,24 +43,61 @@ typedef vector string_list; // Forward declarations -class FGLogger; -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 SGModelLib; +class SGPropertyNode; +class SGTime; +class SGSoundMgr; + +class FGAirportList; +class FGRunwayList; +class FGAIMgr; +class FGATCMgr; +class FGATCDisplay; +class FGAircraftModel; class FGControls; -class FGSoundMgr; -class FGAutopilot; -class FGFX; +class FGIO; +class FGLight; +class FGModelMgr; +class FGRouteMgr; +class FGScenery; +#ifdef FG_MPLAYER_AS +class FGMultiplayRxMgr; +class FGMultiplayTxMgr; +#endif +class FGPanel; +class FGTileMgr; class FGViewMgr; class FGViewer; -class FGATCMgr; -class FGATCDisplay; -class FGGlobals { + +/** + * Bucket for subsystem pointers representing the sim's state. + */ + +class FGGlobals +{ private: + SGSubsystemMgr * subsystem_mgr; + SGEventMgr * event_mgr; + // Number of milliseconds elapsed since the start of the program. - long elapsed_time_ms; + double sim_time_sec; // Root of FlightGear data tree string fg_root; @@ -69,11 +105,6 @@ private: // Root of FlightGear scenery tree string fg_scenery; -#if 0 - // Freeze sim - bool freeze; -#endif - // Fullscreen mode for old 3DFX cards. #if defined(FX) && defined(XMESA) bool fullscreen; @@ -87,9 +118,6 @@ private: // to make time progress faster than normal (or even run in reverse.) long int warp_delta; - // Logger - FGLogger * logger; - // Time structure SGTime *time_params; @@ -99,20 +127,23 @@ private: // Magnetic Variation SGMagVar *mag; - // Current autopilot - FGAutopilot *autopilot; + // 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; + // Simple Airport List + FGAirportList *airports; - // environment information - FGEnvironmentMgr * environment_mgr; + // Runway List + FGRunwayList *runways; // ATC manager FGATCMgr *ATC_mgr; @@ -120,43 +151,82 @@ private: // ATC Renderer FGATCDisplay *ATC_display; + // AI manager + FGAIMgr *AI_mgr; + // control input state FGControls *controls; // viewer manager FGViewMgr *viewmgr; - FGViewer *current_view; // properties SGPropertyNode *props; SGPropertyNode *initial_state; + // localization + SGPropertyNode *locale; + SGCommandMgr *commands; + SGModelLib *model_lib; + + 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; + +#ifdef FG_MPLAYER_AS + //Mulitplayer managers + FGMultiplayTxMgr *multiplayer_tx_mgr; + + FGMultiplayRxMgr *multiplayer_rx_mgr; +#endif + public: FGGlobals(); - ~FGGlobals(); + virtual ~FGGlobals(); + + virtual SGSubsystemMgr * get_subsystem_mgr () const; + + virtual SGSubsystem * get_subsystem (const char * name); - inline long get_elapsed_time_ms () const { return elapsed_time_ms; } - inline void set_elapsed_time_ms (long t) { elapsed_time_ms = t; } + 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; + + 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; } - inline void set_fg_root (const string &root) { fg_root = root; } + void set_fg_root (const string &root); inline const string &get_fg_scenery () const { return fg_scenery; } inline void set_fg_scenery (const string &scenery) { fg_scenery = scenery; } -#if 0 - inline bool get_freeze() const { return freeze; } - inline void set_freeze( bool f ) { freeze = f; } -#endif - #if defined(FX) && defined(XMESA) inline bool get_fullscreen() const { return fullscreen; } inline bool set_fullscreen( bool f ) { fullscreen = f; } @@ -170,9 +240,6 @@ public: inline void set_warp_delta( long int d ) { warp_delta = d; } inline void inc_warp_delta( long int d ) { warp_delta += d; } - inline FGLogger * get_logger () { return logger; } - inline void set_logger (FGLogger * l) { logger = l; } - inline SGTime *get_time_params() const { return time_params; } inline void set_time_params( SGTime *t ) { time_params = t; } @@ -182,47 +249,81 @@ public: inline SGMagVar *get_mag() const { return mag; } inline void set_mag( SGMagVar *m ) { mag = m; } - inline FGAutopilot *get_autopilot() const { return autopilot; } - inline void set_autopilot( FGAutopilot *ap) { autopilot = ap; } + inline SGMaterialLib *get_matlib() const { return matlib; } + inline void set_matlib( SGMaterialLib *m ) { matlib = m; } - inline SGRoute *get_route() const { return route; } - inline void set_route( SGRoute *r ) { route = r; } + inline FGAirportList *get_airports() const { return airports; } + inline void set_airports( FGAirportList *a ) {airports = a; } - inline FGEnvironmentMgr * get_environment_mgr() { - return environment_mgr; - } - inline void set_environment_mgr(FGEnvironmentMgr * mgr) { - environment_mgr = mgr; - } - const FGEnvironment * get_environment() const; - const FGEnvironment * get_environment(double lat, double lon, - double alt) const; + 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 FGATCDisplay *get_ATC_display() const { return ATC_display; } - inline void set_ATC_display( FGATCDisplay *d ) {ATC_display = d; } + inline void set_ATC_display( FGATCDisplay *d ) {ATC_display = d; } + + inline FGAIMgr *get_AI_mgr() const { return AI_mgr; } + inline void set_AI_mgr( FGAIMgr *a ) {AI_mgr = a; } - inline FGSoundMgr *get_soundmgr() const { return soundmgr; } - inline void set_soundmgr( FGSoundMgr *sm ) { soundmgr = sm; } + inline FGPanel *get_current_panel() const { return current_panel; } + inline void set_current_panel( FGPanel *cp ) { current_panel = cp; } - inline FGFX *get_fx() const { return fx; } - inline void set_fx( FGFX *x ) { fx = x; } + 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 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; + } + + inline FGModelMgr *get_model_mgr () { return model_mgr; } + + inline void set_model_mgr (FGModelMgr * mgr) + { + model_mgr = mgr; + } + +#ifdef FG_MPLAYER_AS + inline FGMultiplayTxMgr *get_multiplayer_tx_mgr () { return multiplayer_tx_mgr; } + + inline void set_multiplayer_tx_mgr (FGMultiplayTxMgr * mgr) + { + multiplayer_tx_mgr = mgr; + } + + inline FGMultiplayRxMgr *get_multiplayer_rx_mgr () { return multiplayer_rx_mgr; } + + inline void set_multiplayer_rx_mgr (FGMultiplayRxMgr * mgr) + { + multiplayer_rx_mgr = mgr; + } +#endif + inline string_list *get_channel_options_list () { return channel_options_list; } @@ -230,6 +331,21 @@ 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; } /** * Save the current state as the initial state.