From d7aa0af7232a7063093aee6a637dcb8ef20c013e Mon Sep 17 00:00:00 2001 From: Klaus Basan Date: Tue, 10 Sep 2019 23:00:07 +0200 Subject: [PATCH] Use simulator from plugin if plugin is connected --- src/blackcore/context/contextsimulatorimpl.cpp | 16 ++++++++++++++-- .../simulator/emulated/simulatoremulated.cpp | 5 +++++ .../simulator/emulated/simulatoremulated.h | 3 +++ 3 files changed, 22 insertions(+), 2 deletions(-) diff --git a/src/blackcore/context/contextsimulatorimpl.cpp b/src/blackcore/context/contextsimulatorimpl.cpp index b26ee6176..d7f92f8bd 100644 --- a/src/blackcore/context/contextsimulatorimpl.cpp +++ b/src/blackcore/context/contextsimulatorimpl.cpp @@ -221,7 +221,7 @@ namespace BlackCore CAircraftModelList CContextSimulator::getModelSet() const { if (m_debugEnabled) { CLogMessage(this, CLogCategory::contextSlot()).debug() << Q_FUNC_INFO; } - const CSimulatorInfo simulator = m_modelSetSimulator.get(); + const CSimulatorInfo simulator = this->getModelSetLoaderSimulator(); if (!simulator.isSingleSimulator()) { return CAircraftModelList(); } CCentralMultiSimulatorModelSetCachesProvider::modelCachesInstance().synchronizeCache(simulator); @@ -231,6 +231,18 @@ namespace BlackCore CSimulatorInfo CContextSimulator::getModelSetLoaderSimulator() const { if (m_debugEnabled) { CLogMessage(this, CLogCategory::contextSlot()).debug() << Q_FUNC_INFO; } + if (m_simulatorPlugin.second) + { + if (m_simulatorPlugin.second->isConnected()) + { + if (m_simulatorPlugin.second->isEmulatedDriver()) + { + // specialized version returning the "emulated info" + return this->getSimulatorPluginInfo().getSimulatorInfo(); + } + return m_simulatorPlugin.first.getSimulatorInfo(); + } + } return m_modelSetSimulator.get(); } @@ -238,7 +250,7 @@ namespace BlackCore { Q_ASSERT_X(simulator.isSingleSimulator(), Q_FUNC_INFO, "Need single simulator"); if (m_debugEnabled) { CLogMessage(this, CLogCategory::contextSlot()).debug() << Q_FUNC_INFO; } - if (this->isSimulatorAvailable()) { return; } + if (this->isSimulatorAvailable()) { return; } // if a plugin is loaded, do ignore this m_modelSetSimulator.set(simulator); const CAircraftModelList models = this->getModelSet(); // cache synced m_aircraftMatcher.setModelSet(models, simulator, false); diff --git a/src/plugins/simulator/emulated/simulatoremulated.cpp b/src/plugins/simulator/emulated/simulatoremulated.cpp index 4c550b7a7..b368bbcbe 100644 --- a/src/plugins/simulator/emulated/simulatoremulated.cpp +++ b/src/plugins/simulator/emulated/simulatoremulated.cpp @@ -211,6 +211,11 @@ namespace BlackSimPlugin this->emitSimulatorCombinedStatus(); } + CSimulatorInfo CSimulatorEmulated::getEmulatedSimulator() const + { + return m_pluginSettings.get().getEmulatedSimulator(); + } + bool CSimulatorEmulated::changeInternalCom(const CSimulatedAircraft &aircraft) { bool changed = false; diff --git a/src/plugins/simulator/emulated/simulatoremulated.h b/src/plugins/simulator/emulated/simulatoremulated.h index 2ec8abfbf..1e560a43c 100644 --- a/src/plugins/simulator/emulated/simulatoremulated.h +++ b/src/plugins/simulator/emulated/simulatoremulated.h @@ -90,6 +90,9 @@ namespace BlackSimPlugin //! UI setter void setCombinedStatus(bool connected, bool simulating, bool paused); + //! The emulated simulated simulator + BlackMisc::Simulation::CSimulatorInfo getEmulatedSimulator() const; + //! Internal own aircraft //! \remark normally used by corresponding BlackSimPlugin::Emulated::CSimulatorEmulatedMonitorDialog const BlackMisc::Simulation::CSimulatedAircraft &getInternalOwnAircraft() const { return m_myAircraft; }