Ref T786, use identifier based requestWeatherGrid in simulator plugins

This commit is contained in:
Klaus Basan
2020-04-19 02:38:10 +02:00
committed by Mat Sutcliffe
parent 58583d3ffa
commit 026e19add0
8 changed files with 13 additions and 21 deletions

View File

@@ -337,8 +337,7 @@ namespace BlackSimPlugin
calculateGreatCircleDistance(m_lastWeatherPosition, currentPosition).value(CLengthUnit::mi()) > 20) calculateGreatCircleDistance(m_lastWeatherPosition, currentPosition).value(CLengthUnit::mi()) > 20)
{ {
m_lastWeatherPosition = currentPosition; m_lastWeatherPosition = currentPosition;
const auto weatherGrid = CWeatherGrid { { "GLOB", currentPosition } }; requestWeatherGrid(currentPosition, this->identifier());
requestWeatherGrid(weatherGrid, { this, &CSimulatorEmulated::injectWeatherGrid });
} }
} }
} }
@@ -579,15 +578,15 @@ namespace BlackSimPlugin
this->finishUpdateRemoteAircraftAndSetStatistics(now); this->finishUpdateRemoteAircraftAndSetStatistics(now);
} }
void CSimulatorEmulated::requestWeather() bool CSimulatorEmulated::requestWeather()
{ {
if (!m_isWeatherActivated) { return; } if (!m_isWeatherActivated) { return false; }
const CWeatherScenario s = m_weatherScenarioSettings.get(); const CWeatherScenario s = m_weatherScenarioSettings.get();
this->getOwnAircraftPosition(); this->getOwnAircraftPosition();
const CCoordinateGeodetic currentPosition = this->getOwnAircraftPosition(); const CCoordinateGeodetic currentPosition = this->getOwnAircraftPosition();
const auto weatherGrid = CWeatherGrid { { "GLOB", currentPosition } }; this->requestWeatherGrid(currentPosition, this->identifier());
this->requestWeatherGrid(weatherGrid, { this, &CSimulatorEmulated::injectWeatherGrid }); return true;
} }
CSimulatorEmulatedListener::CSimulatorEmulatedListener(const CSimulatorPluginInfo &info) CSimulatorEmulatedListener::CSimulatorEmulatedListener(const CSimulatorPluginInfo &info)

View File

@@ -74,13 +74,13 @@ namespace BlackSimPlugin
virtual BlackMisc::CStatusMessageList getInterpolationMessages(const BlackMisc::Aviation::CCallsign &callsign) const override; virtual BlackMisc::CStatusMessageList getInterpolationMessages(const BlackMisc::Aviation::CCallsign &callsign) const override;
virtual bool testSendSituationAndParts(const BlackMisc::Aviation::CCallsign &callsign, const BlackMisc::Aviation::CAircraftSituation &situation, const BlackMisc::Aviation::CAircraftParts &parts) override; virtual bool testSendSituationAndParts(const BlackMisc::Aviation::CCallsign &callsign, const BlackMisc::Aviation::CAircraftSituation &situation, const BlackMisc::Aviation::CAircraftParts &parts) override;
virtual bool requestElevation(const BlackMisc::Geo::ICoordinateGeodetic &reference, const BlackMisc::Aviation::CCallsign &callsign) override; virtual bool requestElevation(const BlackMisc::Geo::ICoordinateGeodetic &reference, const BlackMisc::Aviation::CCallsign &callsign) override;
virtual void injectWeatherGrid(const BlackMisc::Weather::CWeatherGrid &weatherGrid) override;
// ----- functions just logged ------- // ----- functions just logged -------
virtual void highlightAircraft(const BlackMisc::Simulation::CSimulatedAircraft &aircraftToHighlight, bool enableHighlight, const BlackMisc::PhysicalQuantities::CTime &displayTime) override; virtual void highlightAircraft(const BlackMisc::Simulation::CSimulatedAircraft &aircraftToHighlight, bool enableHighlight, const BlackMisc::PhysicalQuantities::CTime &displayTime) override;
virtual bool logicallyAddRemoteAircraft(const BlackMisc::Simulation::CSimulatedAircraft &remoteAircraft) override; virtual bool logicallyAddRemoteAircraft(const BlackMisc::Simulation::CSimulatedAircraft &remoteAircraft) override;
virtual bool logicallyRemoveRemoteAircraft(const BlackMisc::Aviation::CCallsign &callsign) override; virtual bool logicallyRemoveRemoteAircraft(const BlackMisc::Aviation::CCallsign &callsign) override;
virtual int physicallyRemoveMultipleRemoteAircraft(const BlackMisc::Aviation::CCallsignSet &callsigns) override; virtual int physicallyRemoveMultipleRemoteAircraft(const BlackMisc::Aviation::CCallsignSet &callsigns) override;
virtual void injectWeatherGrid(const BlackMisc::Weather::CWeatherGrid &weatherGrid) override;
// functions logged and used // functions logged and used
//! \addtogroup swiftdotcommands //! \addtogroup swiftdotcommands
@@ -171,7 +171,7 @@ namespace BlackSimPlugin
void updateRemoteAircraft(); void updateRemoteAircraft();
//! Request weather //! Request weather
void requestWeather(); bool requestWeather();
bool m_log = false; //!< from settings bool m_log = false; //!< from settings
bool m_paused = false; bool m_paused = false;

View File

@@ -406,8 +406,7 @@ namespace BlackSimPlugin
calculateGreatCircleDistance(m_lastWeatherPosition, aircraftSituation).value(CLengthUnit::mi()) > 20) calculateGreatCircleDistance(m_lastWeatherPosition, aircraftSituation).value(CLengthUnit::mi()) > 20)
{ {
m_lastWeatherPosition = aircraftSituation; m_lastWeatherPosition = aircraftSituation;
const auto weatherGrid = CWeatherGrid { { "GLOB", aircraftSituation } }; requestWeatherGrid(aircraftSituation, this->identifier());
requestWeatherGrid(weatherGrid, { this, &CSimulatorFs9::injectWeatherGrid });
} }
} }
} // weather } // weather

View File

@@ -65,6 +65,7 @@ namespace BlackSimPlugin
virtual void displayTextMessage(const BlackMisc::Network::CTextMessage &message) const override; virtual void displayTextMessage(const BlackMisc::Network::CTextMessage &message) const override;
virtual BlackMisc::CStatusMessageList getInterpolationMessages(const BlackMisc::Aviation::CCallsign &callsign) const override; virtual BlackMisc::CStatusMessageList getInterpolationMessages(const BlackMisc::Aviation::CCallsign &callsign) const override;
virtual bool testSendSituationAndParts(const BlackMisc::Aviation::CCallsign &callsign, const BlackMisc::Aviation::CAircraftSituation &situation, const BlackMisc::Aviation::CAircraftParts &parts) override; virtual bool testSendSituationAndParts(const BlackMisc::Aviation::CCallsign &callsign, const BlackMisc::Aviation::CAircraftSituation &situation, const BlackMisc::Aviation::CAircraftParts &parts) override;
virtual void injectWeatherGrid(const BlackMisc::Weather::CWeatherGrid &weatherGrid) override;
//! \@} //! \@}
protected: protected:
@@ -79,11 +80,6 @@ namespace BlackSimPlugin
//! \sa CSimulatorFsxCommon::dispatch //! \sa CSimulatorFsxCommon::dispatch
virtual void timerEvent(QTimerEvent *event) override; virtual void timerEvent(QTimerEvent *event) override;
//! \name Base class overrides
//! @{
virtual void injectWeatherGrid(const BlackMisc::Weather::CWeatherGrid &weatherGrid) override;
//! @}
// remark: in FS9 there is no central updateRemoteAircraft() function, each FS9 client updates itself // remark: in FS9 there is no central updateRemoteAircraft() function, each FS9 client updates itself
// updateRemoteAircraft() // updateRemoteAircraft()

View File

@@ -779,8 +779,7 @@ namespace BlackSimPlugin
calculateGreatCircleDistance(m_lastWeatherPosition, currentPosition).value(CLengthUnit::mi()) > 20) calculateGreatCircleDistance(m_lastWeatherPosition, currentPosition).value(CLengthUnit::mi()) > 20)
{ {
m_lastWeatherPosition = currentPosition; m_lastWeatherPosition = currentPosition;
const auto weatherGrid = CWeatherGrid { { "GLOB", currentPosition } }; requestWeatherGrid(currentPosition, this->identifier());
requestWeatherGrid(weatherGrid, { this, &CSimulatorFsxCommon::injectWeatherGrid });
} }
} }
} }

View File

@@ -156,6 +156,7 @@ namespace BlackSimPlugin
virtual void setFlightNetworkConnected(bool connected) override; virtual void setFlightNetworkConnected(bool connected) override;
virtual BlackMisc::CStatusMessageList getInterpolationMessages(const BlackMisc::Aviation::CCallsign &callsign) const override; virtual BlackMisc::CStatusMessageList getInterpolationMessages(const BlackMisc::Aviation::CCallsign &callsign) const override;
virtual bool testSendSituationAndParts(const BlackMisc::Aviation::CCallsign &callsign, const BlackMisc::Aviation::CAircraftSituation &situation, const BlackMisc::Aviation::CAircraftParts &parts) override; virtual bool testSendSituationAndParts(const BlackMisc::Aviation::CCallsign &callsign, const BlackMisc::Aviation::CAircraftSituation &situation, const BlackMisc::Aviation::CAircraftParts &parts) override;
virtual void injectWeatherGrid(const BlackMisc::Weather::CWeatherGrid &weatherGrid) override;
//! @} //! @}
//! \copydoc BlackMisc::Simulation::ISimulationEnvironmentProvider::requestElevation //! \copydoc BlackMisc::Simulation::ISimulationEnvironmentProvider::requestElevation
@@ -232,7 +233,6 @@ namespace BlackSimPlugin
//! @{ //! @{
virtual void reset() override; virtual void reset() override;
virtual void initSimulatorInternals() override; virtual void initSimulatorInternals() override;
virtual void injectWeatherGrid(const BlackMisc::Weather::CWeatherGrid &weatherGrid) override;
virtual void clearAllRemoteAircraftData() override; virtual void clearAllRemoteAircraftData() override;
virtual void onOwnModelChanged(const BlackMisc::Simulation::CAircraftModel &newModel) override; virtual void onOwnModelChanged(const BlackMisc::Simulation::CAircraftModel &newModel) override;
//! @} //! @}

View File

@@ -370,8 +370,7 @@ namespace BlackSimPlugin
calculateGreatCircleDistance(m_lastWeatherPosition, situation).value(CLengthUnit::mi()) > 20) calculateGreatCircleDistance(m_lastWeatherPosition, situation).value(CLengthUnit::mi()) > 20)
{ {
m_lastWeatherPosition = situation; m_lastWeatherPosition = situation;
const auto weatherGrid = CWeatherGrid { { "GLOB", situation } }; requestWeatherGrid(situation, this->identifier());
this->requestWeatherGrid(weatherGrid, { this, &CSimulatorXPlane::injectWeatherGrid });
} }
} }
} // weather } // weather

View File

@@ -144,6 +144,7 @@ namespace BlackSimPlugin
virtual void resetAircraftStatistics() override; virtual void resetAircraftStatistics() override;
virtual BlackMisc::CStatusMessageList getInterpolationMessages(const BlackMisc::Aviation::CCallsign &callsign) const override; virtual BlackMisc::CStatusMessageList getInterpolationMessages(const BlackMisc::Aviation::CCallsign &callsign) const override;
virtual bool testSendSituationAndParts(const BlackMisc::Aviation::CCallsign &callsign, const BlackMisc::Aviation::CAircraftSituation &situation, const BlackMisc::Aviation::CAircraftParts &parts) override; virtual bool testSendSituationAndParts(const BlackMisc::Aviation::CCallsign &callsign, const BlackMisc::Aviation::CAircraftSituation &situation, const BlackMisc::Aviation::CAircraftParts &parts) override;
virtual void injectWeatherGrid(const BlackMisc::Weather::CWeatherGrid &weatherGrid) override;
virtual void callbackReceivedRequestedElevation(const BlackMisc::Geo::CElevationPlane &plane, const BlackMisc::Aviation::CCallsign &callsign, bool isWater) override; virtual void callbackReceivedRequestedElevation(const BlackMisc::Geo::CElevationPlane &plane, const BlackMisc::Aviation::CCallsign &callsign, bool isWater) override;
//! @} //! @}
@@ -158,7 +159,6 @@ namespace BlackSimPlugin
virtual bool physicallyRemoveRemoteAircraft(const BlackMisc::Aviation::CCallsign &callsign) override; virtual bool physicallyRemoveRemoteAircraft(const BlackMisc::Aviation::CCallsign &callsign) override;
virtual int physicallyRemoveAllRemoteAircraft() override; virtual int physicallyRemoveAllRemoteAircraft() override;
virtual void clearAllRemoteAircraftData() override; virtual void clearAllRemoteAircraftData() override;
virtual void injectWeatherGrid(const BlackMisc::Weather::CWeatherGrid &weatherGrid) override;
virtual bool isPaused() const override virtual bool isPaused() const override
{ {
//! \todo XP: provide correct pause state //! \todo XP: provide correct pause state