diff --git a/src/blackcore/simulatorcommon.cpp b/src/blackcore/simulatorcommon.cpp index f194cb04e..9fb081b44 100644 --- a/src/blackcore/simulatorcommon.cpp +++ b/src/blackcore/simulatorcommon.cpp @@ -59,23 +59,23 @@ namespace BlackCore m_remoteAircraftProviderConnections.append( m_remoteAircraftProvider->connectRemoteAircraftProviderSignals( this, // receiver must match object in bind - std::bind(&CSimulatorCommon::ps_remoteProviderAddAircraftSituation, this, std::placeholders::_1), - std::bind(&CSimulatorCommon::ps_remoteProviderAddAircraftParts, this, std::placeholders::_1, std::placeholders::_2), - std::bind(&CSimulatorCommon::ps_remoteProviderRemovedAircraft, this, std::placeholders::_1), - std::bind(&CSimulatorCommon::ps_recalculateRenderedAircraft, this, std::placeholders::_1)) + std::bind(&CSimulatorCommon::onRemoteProviderAddedAircraftSituation, this, std::placeholders::_1), + std::bind(&CSimulatorCommon::onRemoteProviderAddedAircraftParts, this, std::placeholders::_1, std::placeholders::_2), + std::bind(&CSimulatorCommon::onRemoteProviderRemovedAircraft, this, std::placeholders::_1), + std::bind(&CSimulatorCommon::onRecalculatedRenderedAircraft, this, std::placeholders::_1)) ); // timer - connect(&m_oneSecondTimer, &QTimer::timeout, this, &CSimulatorCommon::ps_oneSecondTimer); + connect(&m_oneSecondTimer, &QTimer::timeout, this, &CSimulatorCommon::oneSecondTimerTimeout); this->m_oneSecondTimer.setObjectName(this->objectName().append(":m_oneSecondTimer")); this->m_oneSecondTimer.start(1000); // swift data - if (sApp && sApp->getWebDataServices()) + if (sApp && sApp->hasWebDataServices()) { - connect(sApp->getWebDataServices(), &CWebDataServices::allSwiftDbDataRead, this, &CSimulatorCommon::ps_allSwiftDataRead); - connect(sApp->getWebDataServices(), &CWebDataServices::swiftDbAirportsRead, this, &CSimulatorCommon::ps_airportsRead); - connect(sApp->getWebDataServices(), &CWebDataServices::swiftDbModelMatchingEntities, this, &CSimulatorCommon::ps_modelMatchingEntities); + connect(sApp->getWebDataServices(), &CWebDataServices::allSwiftDbDataRead, this, &CSimulatorCommon::onSwiftDbAllDataRead, Qt::QueuedConnection); + connect(sApp->getWebDataServices(), &CWebDataServices::swiftDbAirportsRead, this, &CSimulatorCommon::onSwiftDbAirportsRead, Qt::QueuedConnection); + connect(sApp->getWebDataServices(), &CWebDataServices::swiftDbModelMatchingEntitiesRead, this, &CSimulatorCommon::onSwiftDbModelMatchingEntitiesRead, Qt::QueuedConnection); } // info @@ -243,7 +243,7 @@ namespace BlackCore else { // we wait for the data - connect(sApp->getWebDataServices(), &CWebDataServices::swiftDbModelMatchingEntities, this, [ = ] + connect(sApp->getWebDataServices(), &CWebDataServices::swiftDbModelMatchingEntitiesRead, this, [ = ] { this->reverseLookupAndUpdateOwnAircraftModel(model); }); @@ -286,17 +286,17 @@ namespace BlackCore return reverseModel; } - void CSimulatorCommon::ps_allSwiftDataRead() + void CSimulatorCommon::onSwiftDbAllDataRead() { // void, can be overridden in specialized drivers } - void CSimulatorCommon::ps_modelMatchingEntities() + void CSimulatorCommon::onSwiftDbModelMatchingEntitiesRead() { // void, can be overridden in specialized drivers } - void CSimulatorCommon::ps_airportsRead() + void CSimulatorCommon::onSwiftDbAirportsRead() { // void, can be overridden in specialized drivers } @@ -461,12 +461,12 @@ namespace BlackCore CSimpleCommandParser::registerCommand({".drv spline|linear ", "set spline/linear interpolator for one/all callsign(s)"}); } - void CSimulatorCommon::ps_oneSecondTimer() + void CSimulatorCommon::oneSecondTimerTimeout() { this->blinkHighlightedAircraft(); } - void CSimulatorCommon::ps_recalculateRenderedAircraft(const CAirspaceAircraftSnapshot &snapshot) + void CSimulatorCommon::onRecalculatedRenderedAircraft(const CAirspaceAircraftSnapshot &snapshot) { if (!snapshot.isValidSnapshot()) { return;} @@ -516,18 +516,18 @@ namespace BlackCore } } - void CSimulatorCommon::ps_remoteProviderAddAircraftSituation(const CAircraftSituation &situation) + void CSimulatorCommon::onRemoteProviderAddedAircraftSituation(const CAircraftSituation &situation) { Q_UNUSED(situation); } - void CSimulatorCommon::ps_remoteProviderAddAircraftParts(const BlackMisc::Aviation::CCallsign &callsign, const CAircraftParts &parts) + void CSimulatorCommon::onRemoteProviderAddedAircraftParts(const BlackMisc::Aviation::CCallsign &callsign, const CAircraftParts &parts) { Q_UNUSED(callsign); Q_UNUSED(parts); } - void CSimulatorCommon::ps_remoteProviderRemovedAircraft(const CCallsign &callsign) + void CSimulatorCommon::onRemoteProviderRemovedAircraft(const CCallsign &callsign) { Q_UNUSED(callsign); } diff --git a/src/blackcore/simulatorcommon.h b/src/blackcore/simulatorcommon.h index 61d887b25..b215e18c9 100644 --- a/src/blackcore/simulatorcommon.h +++ b/src/blackcore/simulatorcommon.h @@ -106,34 +106,6 @@ namespace BlackCore // --------- ISimulator implementations ------------ - protected slots: - //! \name Connected with remote aircraft provider signals - //! @{ - //! Slow timer used to highlight aircraft, can be used for other things too - virtual void ps_oneSecondTimer(); - - //! Recalculate the rendered aircraft, this happens when restrictions are applied (max. aircraft, range) - virtual void ps_recalculateRenderedAircraft(const BlackMisc::Simulation::CAirspaceAircraftSnapshot &snapshot); - - //! Provider added situation - virtual void ps_remoteProviderAddAircraftSituation(const BlackMisc::Aviation::CAircraftSituation &situation); - - //! Provider added parts - virtual void ps_remoteProviderAddAircraftParts(const BlackMisc::Aviation::CCallsign &callsign, const BlackMisc::Aviation::CAircraftParts &parts); - - //! Provider removed aircraft - virtual void ps_remoteProviderRemovedAircraft(const BlackMisc::Aviation::CCallsign &callsign); - //! @} - - //! All swift data read from DB - virtual void ps_allSwiftDataRead(); - - //! DB models read - virtual void ps_modelMatchingEntities(); - - //! DB Airports read - virtual void ps_airportsRead(); - protected: //! Constructor CSimulatorCommon(const BlackMisc::Simulation::CSimulatorPluginInfo &info, @@ -148,6 +120,28 @@ namespace BlackCore virtual bool logicallyRemoveRemoteAircraft(const BlackMisc::Aviation::CCallsign &callsign) override; //! @} + //! \name When swift DB data are read + //! @{ + virtual void onSwiftDbAllDataRead(); + virtual void onSwiftDbModelMatchingEntitiesRead(); + virtual void onSwiftDbAirportsRead(); + //! @} + + //! \name Connected with remote aircraft provider signals + //! @{ + //! Recalculate the rendered aircraft, this happens when restrictions are applied (max. aircraft, range) + virtual void onRecalculatedRenderedAircraft(const BlackMisc::Simulation::CAirspaceAircraftSnapshot &snapshot); + + //! Provider added situation + virtual void onRemoteProviderAddedAircraftSituation(const BlackMisc::Aviation::CAircraftSituation &situation); + + //! Provider added parts + virtual void onRemoteProviderAddedAircraftParts(const BlackMisc::Aviation::CCallsign &callsign, const BlackMisc::Aviation::CAircraftParts &parts); + + //! Provider removed aircraft + virtual void onRemoteProviderRemovedAircraft(const BlackMisc::Aviation::CCallsign &callsign); + //! @} + //! New plugin info //! \remark normally only used by void setNewPluginInfo(const BlackMisc::Simulation::CSimulatorPluginInfo &info, const BlackMisc::Simulation::CAircraftModel &defaultModel); @@ -197,12 +191,15 @@ namespace BlackCore //! Show log messages? bool showDebugLogMessage() const; + //! Slow timer used to highlight aircraft, can be used for other things too + virtual void oneSecondTimerTimeout(); + bool m_pausedSimFreezesInterpolation = false; //!< paused simulator will also pause interpolation (so AI aircraft will hold) bool m_autoCalcAirportDistance = true; //!< automatically calculate airport distance and bearing - BlackMisc::Simulation::CAircraftModel m_defaultModel; //!< default model int m_statsUpdateAircraftCountMs = 0; //!< statistics update count qint64 m_statsUpdateAircraftTimeTotalMs = 0; //!< statistics update time qint64 m_statsUpdateAircraftTimeAvgMs = 0; //!< statistics update time + BlackMisc::Simulation::CAircraftModel m_defaultModel; //!< default model BlackMisc::Simulation::CSimulatorInternals m_simulatorInternals; //!< setup object BlackMisc::Simulation::CInterpolationLogger m_interpolationLogger; //!< log interpolation mutable QReadWriteLock m_interpolationRenderingSetupMutex; //!< mutex protecting setup object diff --git a/src/blackcore/webdataservices.cpp b/src/blackcore/webdataservices.cpp index f32da7493..8d7ce68c3 100644 --- a/src/blackcore/webdataservices.cpp +++ b/src/blackcore/webdataservices.cpp @@ -1187,11 +1187,11 @@ namespace BlackCore if (m_swiftDbEntitiesRead.testFlag(CEntityFlags::AllIcaoEntities) && signalEntitiesAlreadyRead(CEntityFlags::AllIcaoEntities)) { - emit swiftDbAllIcaoEntities(); + emit swiftDbAllIcaoEntitiesRead(); } if (m_swiftDbEntitiesRead.testFlag(CEntityFlags::ModelMatchingEntities) && signalEntitiesAlreadyRead(CEntityFlags::ModelMatchingEntities)) { - emit swiftDbModelMatchingEntities(); + emit swiftDbModelMatchingEntitiesRead(); } } } diff --git a/src/blackcore/webdataservices.h b/src/blackcore/webdataservices.h index b1d7a0b06..3c9d93ffa 100644 --- a/src/blackcore/webdataservices.h +++ b/src/blackcore/webdataservices.h @@ -460,10 +460,10 @@ namespace BlackCore void swiftDbAirportsRead(); //! All ICAO entities - void swiftDbAllIcaoEntities(); + void swiftDbAllIcaoEntitiesRead(); //! All entities needed for model matching - void swiftDbModelMatchingEntities(); + void swiftDbModelMatchingEntitiesRead(); //! @} public slots: diff --git a/src/plugins/simulator/fs9/simulatorfs9.cpp b/src/plugins/simulator/fs9/simulatorfs9.cpp index fdd0078c8..7dd91398c 100644 --- a/src/plugins/simulator/fs9/simulatorfs9.cpp +++ b/src/plugins/simulator/fs9/simulatorfs9.cpp @@ -417,14 +417,14 @@ namespace BlackSimPlugin m_fsuipc->write(weatherGrid); } - void CSimulatorFs9::ps_remoteProviderAddAircraftSituation(const CAircraftSituation &situation) + void CSimulatorFs9::onRemoteProviderAddedAircraftSituation(const CAircraftSituation &situation) { const auto it = m_hashFs9Clients.find(situation.getCallsign()); if (it == m_hashFs9Clients.end()) { return; } QTimer::singleShot(0, it->data(), [client = *it, situation] { client->getInterpolator()->addAircraftSituation(situation); }); } - void CSimulatorFs9::ps_remoteProviderAddAircraftParts(const BlackMisc::Aviation::CCallsign &callsign, const CAircraftParts &parts) + void CSimulatorFs9::onRemoteProviderAddedAircraftParts(const BlackMisc::Aviation::CCallsign &callsign, const CAircraftParts &parts) { const auto it = m_hashFs9Clients.find(callsign); if (it == m_hashFs9Clients.end()) { return; } diff --git a/src/plugins/simulator/fs9/simulatorfs9.h b/src/plugins/simulator/fs9/simulatorfs9.h index 2b44e8393..0e60f560d 100644 --- a/src/plugins/simulator/fs9/simulatorfs9.h +++ b/src/plugins/simulator/fs9/simulatorfs9.h @@ -78,8 +78,12 @@ namespace BlackSimPlugin //! \name Base class overrides //! @{ virtual void injectWeatherGrid(const BlackMisc::Weather::CWeatherGrid &weatherGrid) override; - virtual void ps_remoteProviderAddAircraftSituation(const BlackMisc::Aviation::CAircraftSituation &situation) override; - virtual void ps_remoteProviderAddAircraftParts(const BlackMisc::Aviation::CCallsign &callsign, const BlackMisc::Aviation::CAircraftParts &parts) override; + //! @} + + //! \name Remote aircraft provider overrides + //! @{ + virtual void onRemoteProviderAddedAircraftSituation(const BlackMisc::Aviation::CAircraftSituation &situation) override; + virtual void onRemoteProviderAddedAircraftParts(const BlackMisc::Aviation::CCallsign &callsign, const BlackMisc::Aviation::CAircraftParts &parts) override; //! @} private slots: diff --git a/src/plugins/simulator/fscommon/simulatorfscommon.cpp b/src/plugins/simulator/fscommon/simulatorfscommon.cpp index 6fd380d13..dca51827e 100644 --- a/src/plugins/simulator/fscommon/simulatorfscommon.cpp +++ b/src/plugins/simulator/fscommon/simulatorfscommon.cpp @@ -147,14 +147,14 @@ namespace BlackSimPlugin return true; } - void CSimulatorFsCommon::ps_airportsRead() + void CSimulatorFsCommon::onSwiftDbAirportsRead() { const CAirportList webServiceAirports = this->getWebServiceAirports(); if (!webServiceAirports.isEmpty()) { m_airportsInRangeFromSimulator.updateMissingParts(webServiceAirports); } - CSimulatorCommon::ps_airportsRead(); + CSimulatorCommon::onSwiftDbAirportsRead(); } } // namespace } // namespace diff --git a/src/plugins/simulator/fscommon/simulatorfscommon.h b/src/plugins/simulator/fscommon/simulatorfscommon.h index 00edead13..747597e69 100644 --- a/src/plugins/simulator/fscommon/simulatorfscommon.h +++ b/src/plugins/simulator/fscommon/simulatorfscommon.h @@ -48,10 +48,6 @@ namespace BlackSimPlugin virtual bool changeRemoteAircraftEnabled(const BlackMisc::Simulation::CSimulatedAircraft &aircraft) override; // ---------------------- ISimulator ------------------ - protected slots: - //! \copydoc BlackCore::CSimulatorCommon::ps_allSwiftDataRead - virtual void ps_airportsRead() override; - protected: //! Constructor CSimulatorFsCommon(const BlackMisc::Simulation::CSimulatorPluginInfo &info, @@ -63,6 +59,11 @@ namespace BlackSimPlugin //! Init the internal objects virtual void initSimulatorInternals(); + //! \name When swift DB data are read + //! @{ + virtual void onSwiftDbAirportsRead() override; + //! @} + //! \addtogroup swiftdotcommands //! @{ //!
diff --git a/src/plugins/simulator/fsxcommon/simulatorfsxcommon.cpp b/src/plugins/simulator/fsxcommon/simulatorfsxcommon.cpp
index d25981b20..f451ad561 100644
--- a/src/plugins/simulator/fsxcommon/simulatorfsxcommon.cpp
+++ b/src/plugins/simulator/fsxcommon/simulatorfsxcommon.cpp
@@ -1434,13 +1434,13 @@ namespace BlackSimPlugin
             CSimulatorFsCommon::clearAllAircraft();
         }
 
-        void CSimulatorFsxCommon::ps_remoteProviderAddAircraftSituation(const CAircraftSituation &situation)
+        void CSimulatorFsxCommon::onRemoteProviderAddedAircraftSituation(const CAircraftSituation &situation)
         {
             if (!m_simConnectObjects.contains(situation.getCallsign())) { return; }
             m_simConnectObjects[situation.getCallsign()].addAircraftSituation(situation);
         }
 
-        void CSimulatorFsxCommon::ps_remoteProviderAddAircraftParts(const BlackMisc::Aviation::CCallsign &callsign, const CAircraftParts &parts)
+        void CSimulatorFsxCommon::onRemoteProviderAddedAircraftParts(const BlackMisc::Aviation::CCallsign &callsign, const CAircraftParts &parts)
         {
             if (!m_simConnectObjects.contains(callsign)) { return; }
             m_simConnectObjects[callsign].addAircraftParts(parts);
diff --git a/src/plugins/simulator/fsxcommon/simulatorfsxcommon.h b/src/plugins/simulator/fsxcommon/simulatorfsxcommon.h
index d9ce9b6b7..978e007dc 100644
--- a/src/plugins/simulator/fsxcommon/simulatorfsxcommon.h
+++ b/src/plugins/simulator/fsxcommon/simulatorfsxcommon.h
@@ -135,8 +135,12 @@ namespace BlackSimPlugin
             virtual void clearAllAircraft() override;
             virtual void initSimulatorInternals() override;
             virtual void injectWeatherGrid(const BlackMisc::Weather::CWeatherGrid &weatherGrid) override;
-            virtual void ps_remoteProviderAddAircraftSituation(const BlackMisc::Aviation::CAircraftSituation &situation) override;
-            virtual void ps_remoteProviderAddAircraftParts(const BlackMisc::Aviation::CCallsign &callsign, const BlackMisc::Aviation::CAircraftParts &parts) override;
+            //! @}
+
+            //! \name Remote aircraft provider overrides
+            //! @{
+            virtual void onRemoteProviderAddedAircraftSituation(const BlackMisc::Aviation::CAircraftSituation &situation) override;
+            virtual void onRemoteProviderAddedAircraftParts(const BlackMisc::Aviation::CCallsign &callsign, const BlackMisc::Aviation::CAircraftParts &parts) override;
             //! @}
 
             //! Timer event (our SimConnect event loop), runs dispatch
diff --git a/src/plugins/simulator/xplane/simulatorxplane.cpp b/src/plugins/simulator/xplane/simulatorxplane.cpp
index 1df81812a..226fe1c6d 100644
--- a/src/plugins/simulator/xplane/simulatorxplane.cpp
+++ b/src/plugins/simulator/xplane/simulatorxplane.cpp
@@ -526,7 +526,7 @@ namespace BlackSimPlugin
             return true;
         }
 
-        void CSimulatorXPlane::ps_remoteProviderAddAircraftSituation(const BlackMisc::Aviation::CAircraftSituation &situation)
+        void CSimulatorXPlane::onRemoteProviderAddedAircraftSituation(const BlackMisc::Aviation::CAircraftSituation &situation)
         {
             if (!isConnected()) { return; } //! \fixme why is this method called when not connected?
             using namespace BlackMisc::PhysicalQuantities;
@@ -567,11 +567,11 @@ namespace BlackSimPlugin
                 {
                     parts.setLights({ true, false, false, true, true, true, true, true });
                 }
-                ps_remoteProviderAddAircraftParts(situation.getCallsign(), parts);
+                onRemoteProviderAddedAircraftParts(situation.getCallsign(), parts);
             }
         }
 
-        void CSimulatorXPlane::ps_remoteProviderAddAircraftParts(const BlackMisc::Aviation::CCallsign &callsign, const BlackMisc::Aviation::CAircraftParts &parts)
+        void CSimulatorXPlane::onRemoteProviderAddedAircraftParts(const BlackMisc::Aviation::CCallsign &callsign, const BlackMisc::Aviation::CAircraftParts &parts)
         {
             if (!isConnected()) { return; } //! \fixme why is this method called when not connected?
             m_traffic->addPlaneSurfaces(callsign.asString(), parts.isGearDown() ? 1 : 0,
@@ -582,7 +582,7 @@ namespace BlackSimPlugin
             m_traffic->setPlaneTransponder(callsign.asString(), 2000, true, false);
         }
 
-        void CSimulatorXPlane::ps_remoteProviderRemovedAircraft(const CCallsign &callsign)
+        void CSimulatorXPlane::onRemoteProviderRemovedAircraft(const CCallsign &callsign)
         {
             Q_UNUSED(callsign);
             //! \todo call removeRemoteAircraft or just let removeRemoteAircraft handle it?
diff --git a/src/plugins/simulator/xplane/simulatorxplane.h b/src/plugins/simulator/xplane/simulatorxplane.h
index 69022e98f..c27e5d37e 100644
--- a/src/plugins/simulator/xplane/simulatorxplane.h
+++ b/src/plugins/simulator/xplane/simulatorxplane.h
@@ -106,17 +106,14 @@ namespace BlackSimPlugin
             //! Creates an appropriate dbus connection from the string describing it
             static QDBusConnection connectionFromString(const QString &str);
 
-        protected slots:
-            //! \copydoc BlackCore::CSimulatorCommon::ps_remoteProviderAddAircraftSituation
-            virtual void ps_remoteProviderAddAircraftSituation(const BlackMisc::Aviation::CAircraftSituation &situation) override;
-
-            //! \copydoc BlackCore::CSimulatorCommon::ps_remoteProviderAddAircraftParts
-            virtual void ps_remoteProviderAddAircraftParts(const BlackMisc::Aviation::CCallsign &callsign, const BlackMisc::Aviation::CAircraftParts &parts) override;
-
-            //! \copydoc BlackCore::CSimulatorCommon::ps_remoteProviderRemovedAircraft
-            virtual void ps_remoteProviderRemovedAircraft(const BlackMisc::Aviation::CCallsign &callsign) override;
-
         protected:
+            //! \name Remote aircraft provider overrides
+            //! @{
+            virtual void onRemoteProviderAddedAircraftSituation(const BlackMisc::Aviation::CAircraftSituation &situation) override;
+            virtual void onRemoteProviderAddedAircraftParts(const BlackMisc::Aviation::CCallsign &callsign, const BlackMisc::Aviation::CAircraftParts &parts) override;
+            virtual void onRemoteProviderRemovedAircraft(const BlackMisc::Aviation::CCallsign &callsign) override;
+            //! @}
+
             //! \copydoc BlackCore::ISimulator::isConnected
             virtual bool isConnected() const override;