diff --git a/src/blackcore/contextsimulatorimpl.cpp b/src/blackcore/contextsimulatorimpl.cpp index e424b6458..3fd234609 100644 --- a/src/blackcore/contextsimulatorimpl.cpp +++ b/src/blackcore/contextsimulatorimpl.cpp @@ -332,7 +332,7 @@ namespace BlackCore Q_ASSERT(this->getIContextNetwork()->isUsingImplementingObject()); IOwnAircraftProvider *ownAircraftProvider = this->getRuntime()->getCContextOwnAircraft(); IRemoteAircraftProvider *renderedAircraftProvider = this->getRuntime()->getCContextNetwork(); - ISimulator *simulator = factory->create(simulatorInfo, ownAircraftProvider, renderedAircraftProvider, m_plugins); + ISimulator *simulator = factory->create(simulatorInfo, ownAircraftProvider, renderedAircraftProvider, m_plugins, &m_weatherManager); Q_ASSERT_X(simulator, Q_FUNC_INFO, "no simulator driver can be created"); bool c = connect(simulator, &ISimulator::simulatorStatusChanged, this, &CContextSimulator::ps_onSimulatorStatusChanged); diff --git a/src/blackcore/contextsimulatorimpl.h b/src/blackcore/contextsimulatorimpl.h index a3b47a3c5..559c224a3 100644 --- a/src/blackcore/contextsimulatorimpl.h +++ b/src/blackcore/contextsimulatorimpl.h @@ -15,6 +15,7 @@ #include "blackcoreexport.h" #include "blackcore/contextsimulator.h" #include "blackcore/simulator.h" +#include "blackcore/weathermanager.h" #include "blackmisc/simulation/simulatorplugininfolist.h" #include "blackmisc/simulation/simulatedaircraftlist.h" #include "blackmisc/network/textmessagelist.h" @@ -179,6 +180,7 @@ namespace BlackCore QPair m_simulatorPlugin; //!< Currently loaded simulator plugin CPluginManagerSimulator *m_plugins = nullptr; BlackMisc::CRegularThread m_listenersThread; + BlackCore::CWeatherManager m_weatherManager { this }; }; } // namespace diff --git a/src/blackcore/simulator.h b/src/blackcore/simulator.h index 44093944f..dded9d702 100644 --- a/src/blackcore/simulator.h +++ b/src/blackcore/simulator.h @@ -27,6 +27,7 @@ #include "blackmisc/network/client.h" #include "blackmisc/pixmap.h" #include "blackmisc/identifiable.h" +#include "blackmisc/weather/weathergridprovider.h" #include namespace BlackCore @@ -284,7 +285,8 @@ namespace BlackCore const BlackMisc::Simulation::CSimulatorPluginInfo &info, BlackMisc::Simulation::IOwnAircraftProvider *ownAircraftProvider, BlackMisc::Simulation::IRemoteAircraftProvider *remoteAircraftProvider, - BlackMisc::IPluginStorageProvider *pluginStorageProvider) = 0; + BlackMisc::IPluginStorageProvider *pluginStorageProvider, + BlackMisc::Weather::IWeatherGridProvider *weatherGridProvider) = 0; //! Simulator listener instance virtual ISimulatorListener *createListener(const BlackMisc::Simulation::CSimulatorPluginInfo &info) = 0; diff --git a/src/blackcore/simulatorcommon.cpp b/src/blackcore/simulatorcommon.cpp index 76b2f79cb..7b01b55eb 100644 --- a/src/blackcore/simulatorcommon.cpp +++ b/src/blackcore/simulatorcommon.cpp @@ -20,17 +20,21 @@ using namespace BlackMisc::Aviation; using namespace BlackMisc::Simulation; using namespace BlackMisc::PhysicalQuantities; using namespace BlackMisc::Simulation; +using namespace BlackMisc::Weather; namespace BlackCore { CSimulatorCommon::CSimulatorCommon(const CSimulatorPluginInfo &info, BlackMisc::Simulation::IOwnAircraftProvider *ownAircraftProvider, BlackMisc::Simulation::IRemoteAircraftProvider *remoteAircraftProvider, - IPluginStorageProvider *pluginStorageProvider, QObject *parent) + IPluginStorageProvider *pluginStorageProvider, + IWeatherGridProvider *weatherGridProvider, + QObject *parent) : ISimulator(parent), COwnAircraftAware(ownAircraftProvider), CRemoteAircraftAware(remoteAircraftProvider), CPluginStorageAware(pluginStorageProvider), + CWeatherGridAware(weatherGridProvider), m_simulatorPluginInfo(info) { this->setObjectName("Simulator: " + info.getIdentifier()); diff --git a/src/blackcore/simulatorcommon.h b/src/blackcore/simulatorcommon.h index f6c4a533f..fba68759c 100644 --- a/src/blackcore/simulatorcommon.h +++ b/src/blackcore/simulatorcommon.h @@ -28,6 +28,7 @@ #include "blackmisc/network/client.h" #include "blackmisc/pixmap.h" #include "blackmisc/connectionguard.h" +#include "blackmisc/weather/weathergridprovider.h" #include namespace BlackCore @@ -37,7 +38,8 @@ namespace BlackCore public BlackCore::ISimulator, public BlackMisc::Simulation::COwnAircraftAware, // gain access to in memory own aircraft data public BlackMisc::Simulation::CRemoteAircraftAware, // gain access to in memory remote aircraft data - public BlackMisc::CPluginStorageAware // gain access to in memory plugin storage + public BlackMisc::CPluginStorageAware, // gain access to in memory plugin storage + public BlackMisc::Weather::CWeatherGridAware // gain access to in memory weather grid { Q_OBJECT @@ -118,6 +120,7 @@ namespace BlackCore BlackMisc::Simulation::IOwnAircraftProvider *ownAircraftProvider, BlackMisc::Simulation::IRemoteAircraftProvider *remoteAircraftProvider, BlackMisc::IPluginStorageProvider *pluginStorageProvider, + BlackMisc::Weather::IWeatherGridProvider *weatherGridProvider, QObject *parent); //! \copydoc ISimulator::logicallyAddRemoteAircraft diff --git a/src/plugins/simulator/fs9/simulatorfs9.cpp b/src/plugins/simulator/fs9/simulatorfs9.cpp index a52af0b9b..5720e077a 100644 --- a/src/plugins/simulator/fs9/simulatorfs9.cpp +++ b/src/plugins/simulator/fs9/simulatorfs9.cpp @@ -99,8 +99,9 @@ namespace BlackSimPlugin IOwnAircraftProvider *ownAircraftProvider, IRemoteAircraftProvider *remoteAircraftProvider, IPluginStorageProvider *pluginStorageProvider, + IWeatherGridProvider *weatherGridProvider, QObject *parent) : - CSimulatorFsCommon(info, ownAircraftProvider, remoteAircraftProvider, pluginStorageProvider, parent), + CSimulatorFsCommon(info, ownAircraftProvider, remoteAircraftProvider, pluginStorageProvider, weatherGridProvider, parent), m_fs9Host(fs9Host), m_lobbyClient(lobbyClient) { @@ -443,9 +444,10 @@ namespace BlackSimPlugin const CSimulatorPluginInfo &info, IOwnAircraftProvider *ownAircraftProvider, IRemoteAircraftProvider *remoteAircraftProvider, - IPluginStorageProvider *pluginStorageProvider) + IPluginStorageProvider *pluginStorageProvider, + IWeatherGridProvider *weatherGridProvider) { - return new CSimulatorFs9(info, m_fs9Host, m_lobbyClient, ownAircraftProvider, remoteAircraftProvider, pluginStorageProvider, this); + return new CSimulatorFs9(info, m_fs9Host, m_lobbyClient, ownAircraftProvider, remoteAircraftProvider, pluginStorageProvider, weatherGridProvider, this); } BlackCore::ISimulatorListener *CSimulatorFs9Factory::createListener(const CSimulatorPluginInfo &info) diff --git a/src/plugins/simulator/fs9/simulatorfs9.h b/src/plugins/simulator/fs9/simulatorfs9.h index 7802c1144..0c5069270 100644 --- a/src/plugins/simulator/fs9/simulatorfs9.h +++ b/src/plugins/simulator/fs9/simulatorfs9.h @@ -45,6 +45,7 @@ namespace BlackSimPlugin BlackMisc::Simulation::IOwnAircraftProvider *ownAircraftProvider, BlackMisc::Simulation::IRemoteAircraftProvider *remoteAircraftProvider, BlackMisc::IPluginStorageProvider *pluginStorageProvider, + BlackMisc::Weather::IWeatherGridProvider *weatherGridProvider, QObject *parent = nullptr); //! Destructor @@ -164,7 +165,8 @@ namespace BlackSimPlugin const BlackMisc::Simulation::CSimulatorPluginInfo &info, BlackMisc::Simulation::IOwnAircraftProvider *ownAircraftProvider, BlackMisc::Simulation::IRemoteAircraftProvider *remoteAircraftProvider, - BlackMisc::IPluginStorageProvider *pluginStorageProvider) override; + BlackMisc::IPluginStorageProvider *pluginStorageProvider, + BlackMisc::Weather::IWeatherGridProvider *weatherGridProvider) override; //! \copydoc BlackCore::ISimulatorFactory::createListener virtual BlackCore::ISimulatorListener *createListener(const BlackMisc::Simulation::CSimulatorPluginInfo &info) override; diff --git a/src/plugins/simulator/fscommon/simulatorfscommon.cpp b/src/plugins/simulator/fscommon/simulatorfscommon.cpp index 670ba1f7b..f470c0050 100644 --- a/src/plugins/simulator/fscommon/simulatorfscommon.cpp +++ b/src/plugins/simulator/fscommon/simulatorfscommon.cpp @@ -29,8 +29,9 @@ namespace BlackSimPlugin IOwnAircraftProvider *ownAircraftProvider, IRemoteAircraftProvider *renderedAircraftProvider, IPluginStorageProvider *pluginStorageProvider, + Weather::IWeatherGridProvider *weatherGridProvider, QObject *parent) : - CSimulatorCommon(info, ownAircraftProvider, renderedAircraftProvider, pluginStorageProvider, parent), + CSimulatorCommon(info, ownAircraftProvider, renderedAircraftProvider, pluginStorageProvider, weatherGridProvider, parent), m_fsuipc(new CFsuipc()), m_aircraftCfgParser(CAircraftCfgParser::createModelLoader(CSimulatorInfo(info.getIdentifier()))), m_modelMatcher(CAircraftMatcher::AllModes, this) diff --git a/src/plugins/simulator/fscommon/simulatorfscommon.h b/src/plugins/simulator/fscommon/simulatorfscommon.h index a6f06e213..aedfce1f7 100644 --- a/src/plugins/simulator/fscommon/simulatorfscommon.h +++ b/src/plugins/simulator/fscommon/simulatorfscommon.h @@ -82,6 +82,7 @@ namespace BlackSimPlugin BlackMisc::Simulation::IOwnAircraftProvider *ownAircraftProvider, BlackMisc::Simulation::IRemoteAircraftProvider *renderedAircraftProvider, BlackMisc::IPluginStorageProvider *pluginStorageProvider, + BlackMisc::Weather::IWeatherGridProvider *weatherGridProvider, QObject *parent = nullptr); QString simulatorDetails; //!< describes version etc. diff --git a/src/plugins/simulator/fsx/simulatorfsx.cpp b/src/plugins/simulator/fsx/simulatorfsx.cpp index 7b2a6d40d..4732c87a1 100644 --- a/src/plugins/simulator/fsx/simulatorfsx.cpp +++ b/src/plugins/simulator/fsx/simulatorfsx.cpp @@ -43,8 +43,9 @@ namespace BlackSimPlugin IOwnAircraftProvider *ownAircraftProvider, IRemoteAircraftProvider *remoteAircraftProvider, IPluginStorageProvider *pluginStorageProvider, + IWeatherGridProvider *weatherGridProvider, QObject *parent) : - CSimulatorFsCommon(info, ownAircraftProvider, remoteAircraftProvider, pluginStorageProvider, parent) + CSimulatorFsCommon(info, ownAircraftProvider, remoteAircraftProvider, pluginStorageProvider, weatherGridProvider, parent) { Q_ASSERT_X(ownAircraftProvider, Q_FUNC_INFO, "Missing provider"); Q_ASSERT_X(remoteAircraftProvider, Q_FUNC_INFO, "Missing provider"); diff --git a/src/plugins/simulator/fsx/simulatorfsx.h b/src/plugins/simulator/fsx/simulatorfsx.h index ab89b985c..c75e4126a 100644 --- a/src/plugins/simulator/fsx/simulatorfsx.h +++ b/src/plugins/simulator/fsx/simulatorfsx.h @@ -79,6 +79,7 @@ namespace BlackSimPlugin BlackMisc::Simulation::IOwnAircraftProvider *ownAircraftProvider, BlackMisc::Simulation::IRemoteAircraftProvider *remoteAircraftProvider, BlackMisc::IPluginStorageProvider *pluginStorageProvider, + BlackMisc::Weather::IWeatherGridProvider *weatherGridProvider, QObject *parent = nullptr); //! Destructor diff --git a/src/plugins/simulator/fsx/simulatorfsxfactory.cpp b/src/plugins/simulator/fsx/simulatorfsxfactory.cpp index 895f86767..627b939be 100644 --- a/src/plugins/simulator/fsx/simulatorfsxfactory.cpp +++ b/src/plugins/simulator/fsx/simulatorfsxfactory.cpp @@ -19,10 +19,11 @@ namespace BlackSimPlugin BlackCore::ISimulator *CSimulatorFsxFactory::create(const BlackMisc::Simulation::CSimulatorPluginInfo &info, BlackMisc::Simulation::IOwnAircraftProvider *ownAircraftProvider, BlackMisc::Simulation::IRemoteAircraftProvider *remoteAircraftProvider, - BlackMisc::IPluginStorageProvider *pluginStorageProvider) + BlackMisc::IPluginStorageProvider *pluginStorageProvider, + BlackMisc::Weather::IWeatherGridProvider *weatherGridProvider) { Q_ASSERT(ownAircraftProvider); - return new CSimulatorFsx(info, ownAircraftProvider, remoteAircraftProvider, pluginStorageProvider, this); + return new CSimulatorFsx(info, ownAircraftProvider, remoteAircraftProvider, pluginStorageProvider, weatherGridProvider, this); } BlackCore::ISimulatorListener *CSimulatorFsxFactory::createListener(const BlackMisc::Simulation::CSimulatorPluginInfo &info) diff --git a/src/plugins/simulator/fsx/simulatorfsxfactory.h b/src/plugins/simulator/fsx/simulatorfsxfactory.h index 00103abf6..736e04f32 100644 --- a/src/plugins/simulator/fsx/simulatorfsxfactory.h +++ b/src/plugins/simulator/fsx/simulatorfsxfactory.h @@ -37,7 +37,8 @@ namespace BlackSimPlugin virtual BlackCore::ISimulator *create(const BlackMisc::Simulation::CSimulatorPluginInfo &info, BlackMisc::Simulation::IOwnAircraftProvider *ownAircraftProvider, BlackMisc::Simulation::IRemoteAircraftProvider *remoteAircraftProvider, - BlackMisc::IPluginStorageProvider *pluginStorageProvider) override; + BlackMisc::IPluginStorageProvider *pluginStorageProvider, + BlackMisc::Weather::IWeatherGridProvider *weatherGridProvider) override; //! \copydoc BlackCore::ISimulatorFactory::createListener virtual BlackCore::ISimulatorListener *createListener(const BlackMisc::Simulation::CSimulatorPluginInfo &info) override; diff --git a/src/plugins/simulator/xplane/simulatorxplane.cpp b/src/plugins/simulator/xplane/simulatorxplane.cpp index 8f3e27484..28cc84a86 100644 --- a/src/plugins/simulator/xplane/simulatorxplane.cpp +++ b/src/plugins/simulator/xplane/simulatorxplane.cpp @@ -45,8 +45,9 @@ namespace BlackSimPlugin IOwnAircraftProvider *ownAircraftProvider, IRemoteAircraftProvider *remoteAircraftProvider, IPluginStorageProvider *pluginStorageProvider, + IWeatherGridProvider *weatherGridProvider, QObject *parent) : - CSimulatorCommon(info, ownAircraftProvider, remoteAircraftProvider, pluginStorageProvider, parent) + CSimulatorCommon(info, ownAircraftProvider, remoteAircraftProvider, pluginStorageProvider, weatherGridProvider, parent) { m_watcher = new QDBusServiceWatcher(this); m_watcher->setWatchMode(QDBusServiceWatcher::WatchForUnregistration); @@ -575,9 +576,10 @@ namespace BlackSimPlugin BlackCore::ISimulator *CSimulatorXPlaneFactory::create(const CSimulatorPluginInfo &info, IOwnAircraftProvider *ownAircraftProvider, IRemoteAircraftProvider *remoteAircraftProvider, - IPluginStorageProvider *pluginStorageProvider) + IPluginStorageProvider *pluginStorageProvider, + IWeatherGridProvider *weatherGridProvider) { - return new CSimulatorXPlane(info, ownAircraftProvider, remoteAircraftProvider, pluginStorageProvider, this); + return new CSimulatorXPlane(info, ownAircraftProvider, remoteAircraftProvider, pluginStorageProvider, weatherGridProvider, this); } CSimulatorXPlaneListener::CSimulatorXPlaneListener(const CSimulatorPluginInfo &info): ISimulatorListener(info) diff --git a/src/plugins/simulator/xplane/simulatorxplane.h b/src/plugins/simulator/xplane/simulatorxplane.h index 80099f8c7..f4b22e64e 100644 --- a/src/plugins/simulator/xplane/simulatorxplane.h +++ b/src/plugins/simulator/xplane/simulatorxplane.h @@ -42,6 +42,7 @@ namespace BlackSimPlugin BlackMisc::Simulation::IOwnAircraftProvider *ownAircraftProvider, BlackMisc::Simulation::IRemoteAircraftProvider *remoteAircraftProvider, BlackMisc::IPluginStorageProvider *pluginStorageProvider, + BlackMisc::Weather::IWeatherGridProvider *weatherGridProvider, QObject *parent = nullptr); //! \copydoc BlackCore::ISimulator::isTimeSynchronized @@ -234,7 +235,8 @@ namespace BlackSimPlugin virtual BlackCore::ISimulator *create(const BlackMisc::Simulation::CSimulatorPluginInfo &info, BlackMisc::Simulation::IOwnAircraftProvider *ownAircraftProvider, BlackMisc::Simulation::IRemoteAircraftProvider *remoteAircraftProvider, - BlackMisc::IPluginStorageProvider *pluginStorageProvider) override; + BlackMisc::IPluginStorageProvider *pluginStorageProvider, + BlackMisc::Weather::IWeatherGridProvider *weatherGridProvider) override; //! \copydoc BlackCore::ISimulatorFactory::createListener virtual BlackCore::ISimulatorListener *createListener(const BlackMisc::Simulation::CSimulatorPluginInfo &info) override { return new CSimulatorXPlaneListener(info); }