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)
{
m_lastWeatherPosition = currentPosition;
const auto weatherGrid = CWeatherGrid { { "GLOB", currentPosition } };
requestWeatherGrid(weatherGrid, { this, &CSimulatorEmulated::injectWeatherGrid });
requestWeatherGrid(currentPosition, this->identifier());
}
}
}
@@ -579,15 +578,15 @@ namespace BlackSimPlugin
this->finishUpdateRemoteAircraftAndSetStatistics(now);
}
void CSimulatorEmulated::requestWeather()
bool CSimulatorEmulated::requestWeather()
{
if (!m_isWeatherActivated) { return; }
if (!m_isWeatherActivated) { return false; }
const CWeatherScenario s = m_weatherScenarioSettings.get();
this->getOwnAircraftPosition();
const CCoordinateGeodetic currentPosition = this->getOwnAircraftPosition();
const auto weatherGrid = CWeatherGrid { { "GLOB", currentPosition } };
this->requestWeatherGrid(weatherGrid, { this, &CSimulatorEmulated::injectWeatherGrid });
this->requestWeatherGrid(currentPosition, this->identifier());
return true;
}
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 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 void injectWeatherGrid(const BlackMisc::Weather::CWeatherGrid &weatherGrid) override;
// ----- functions just logged -------
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 logicallyRemoveRemoteAircraft(const BlackMisc::Aviation::CCallsign &callsign) override;
virtual int physicallyRemoveMultipleRemoteAircraft(const BlackMisc::Aviation::CCallsignSet &callsigns) override;
virtual void injectWeatherGrid(const BlackMisc::Weather::CWeatherGrid &weatherGrid) override;
// functions logged and used
//! \addtogroup swiftdotcommands
@@ -171,7 +171,7 @@ namespace BlackSimPlugin
void updateRemoteAircraft();
//! Request weather
void requestWeather();
bool requestWeather();
bool m_log = false; //!< from settings
bool m_paused = false;

View File

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

View File

@@ -65,6 +65,7 @@ namespace BlackSimPlugin
virtual void displayTextMessage(const BlackMisc::Network::CTextMessage &message) 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 void injectWeatherGrid(const BlackMisc::Weather::CWeatherGrid &weatherGrid) override;
//! \@}
protected:
@@ -79,11 +80,6 @@ namespace BlackSimPlugin
//! \sa CSimulatorFsxCommon::dispatch
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
// updateRemoteAircraft()

View File

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

View File

@@ -156,6 +156,7 @@ namespace BlackSimPlugin
virtual void setFlightNetworkConnected(bool connected) 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 void injectWeatherGrid(const BlackMisc::Weather::CWeatherGrid &weatherGrid) override;
//! @}
//! \copydoc BlackMisc::Simulation::ISimulationEnvironmentProvider::requestElevation
@@ -232,7 +233,6 @@ namespace BlackSimPlugin
//! @{
virtual void reset() override;
virtual void initSimulatorInternals() override;
virtual void injectWeatherGrid(const BlackMisc::Weather::CWeatherGrid &weatherGrid) override;
virtual void clearAllRemoteAircraftData() 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)
{
m_lastWeatherPosition = situation;
const auto weatherGrid = CWeatherGrid { { "GLOB", situation } };
this->requestWeatherGrid(weatherGrid, { this, &CSimulatorXPlane::injectWeatherGrid });
requestWeatherGrid(situation, this->identifier());
}
}
} // weather

View File

@@ -144,6 +144,7 @@ namespace BlackSimPlugin
virtual void resetAircraftStatistics() 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 void injectWeatherGrid(const BlackMisc::Weather::CWeatherGrid &weatherGrid) 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 int physicallyRemoveAllRemoteAircraft() override;
virtual void clearAllRemoteAircraftData() override;
virtual void injectWeatherGrid(const BlackMisc::Weather::CWeatherGrid &weatherGrid) override;
virtual bool isPaused() const override
{
//! \todo XP: provide correct pause state