mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-03-30 11:55:35 +08:00
Ref T342, distance of airport can be recalculated
This commit is contained in:
@@ -155,7 +155,7 @@ namespace BlackCore
|
||||
virtual BlackMisc::Simulation::CSimulatorInternals getSimulatorInternals() const = 0;
|
||||
|
||||
//! Airports in range
|
||||
virtual BlackMisc::Aviation::CAirportList getAirportsInRange() const = 0;
|
||||
virtual BlackMisc::Aviation::CAirportList getAirportsInRange(bool recalculateDistance) const = 0;
|
||||
|
||||
//! Installed models in simulator eco system
|
||||
//! \note might be slow since list can be big
|
||||
|
||||
@@ -73,8 +73,9 @@ namespace BlackCore
|
||||
}
|
||||
|
||||
//! \copydoc IContextSimulator::getAirportsInRange
|
||||
virtual BlackMisc::Aviation::CAirportList getAirportsInRange() const override
|
||||
virtual BlackMisc::Aviation::CAirportList getAirportsInRange(bool recalculatePosition) const override
|
||||
{
|
||||
Q_UNUSED(recalculatePosition);
|
||||
logEmptyContextWarning(Q_FUNC_INFO);
|
||||
return BlackMisc::Aviation::CAirportList();
|
||||
}
|
||||
|
||||
@@ -166,7 +166,7 @@ namespace BlackCore
|
||||
return m_simulatorPlugin.second->getSimulatorInternals();
|
||||
}
|
||||
|
||||
CAirportList CContextSimulator::getAirportsInRange() const
|
||||
CAirportList CContextSimulator::getAirportsInRange(bool recalculateDistance) const
|
||||
{
|
||||
if (m_debugEnabled) { CLogMessage(this, CLogCategory::contextSlot()).debug() << Q_FUNC_INFO; }
|
||||
// If no ISimulator object is available, return a dummy.
|
||||
@@ -176,7 +176,7 @@ namespace BlackCore
|
||||
}
|
||||
|
||||
Q_ASSERT(m_simulatorPlugin.second);
|
||||
return m_simulatorPlugin.second->getAirportsInRange();
|
||||
return m_simulatorPlugin.second->getAirportsInRange(recalculateDistance);
|
||||
}
|
||||
|
||||
CAircraftModelList CContextSimulator::getModelSet() const
|
||||
|
||||
@@ -78,7 +78,7 @@ namespace BlackCore
|
||||
virtual int checkListeners() override;
|
||||
virtual int getSimulatorStatus() const override;
|
||||
virtual BlackMisc::Simulation::CSimulatorInternals getSimulatorInternals() const override;
|
||||
virtual BlackMisc::Aviation::CAirportList getAirportsInRange() const override;
|
||||
virtual BlackMisc::Aviation::CAirportList getAirportsInRange(bool recalculateDistance) const override;
|
||||
virtual BlackMisc::Simulation::CAircraftModelList getModelSet() const override;
|
||||
virtual BlackMisc::Simulation::CSimulatorInfo getModelSetLoaderSimulator() const override;
|
||||
virtual void setModelSetLoaderSimulator(const BlackMisc::Simulation::CSimulatorInfo &simulator) override;
|
||||
|
||||
@@ -101,9 +101,9 @@ namespace BlackCore
|
||||
return m_dBusInterface->callDBusRet<int>(QLatin1String("getSimulatorStatus"));
|
||||
}
|
||||
|
||||
CAirportList CContextSimulatorProxy::getAirportsInRange() const
|
||||
CAirportList CContextSimulatorProxy::getAirportsInRange(bool recalculatePosition) const
|
||||
{
|
||||
return m_dBusInterface->callDBusRet<BlackMisc::Aviation::CAirportList>(QLatin1String("getAirportsInRange"));
|
||||
return m_dBusInterface->callDBusRet<BlackMisc::Aviation::CAirportList>(QLatin1String("getAirportsInRange"), recalculatePosition);
|
||||
}
|
||||
|
||||
CAircraftModelList CContextSimulatorProxy::getModelSet() const
|
||||
|
||||
@@ -62,7 +62,7 @@ namespace BlackCore
|
||||
virtual void stopSimulatorPlugin(const BlackMisc::Simulation::CSimulatorPluginInfo &simulatorInfo) override;
|
||||
virtual int checkListeners() override;
|
||||
virtual int getSimulatorStatus() const override;
|
||||
virtual BlackMisc::Aviation::CAirportList getAirportsInRange() const override;
|
||||
virtual BlackMisc::Aviation::CAirportList getAirportsInRange(bool recalculatePosition) const override;
|
||||
virtual BlackMisc::Simulation::CAircraftModelList getModelSet() const override;
|
||||
virtual BlackMisc::Simulation::CSimulatorInfo simulatorsWithInitializedModelSet() const override;
|
||||
virtual BlackMisc::CStatusMessageList verifyPrerequisites() const override;
|
||||
|
||||
@@ -796,7 +796,7 @@ namespace BlackCore
|
||||
return m_loopbackSituations.value(callsign);
|
||||
}
|
||||
|
||||
CAirportList ISimulator::getAirportsInRange() const
|
||||
CAirportList ISimulator::getAirportsInRange(bool recalculateDistance) const
|
||||
{
|
||||
// default implementation
|
||||
if (this->isShuttingDown()) { return CAirportList(); }
|
||||
@@ -805,9 +805,9 @@ namespace BlackCore
|
||||
const CAirportList airports = sApp->getWebDataServices()->getAirports();
|
||||
if (airports.isEmpty()) { return airports; }
|
||||
const CCoordinateGeodetic ownPosition = this->getOwnAircraftPosition();
|
||||
CAirportList airportInRange = airports.findClosest(maxAirportsInRange(), ownPosition);
|
||||
if (m_autoCalcAirportDistance) { airportInRange.calculcateAndUpdateRelativeDistanceAndBearing(ownPosition); }
|
||||
return airportInRange;
|
||||
CAirportList airportsInRange = airports.findClosest(maxAirportsInRange(), ownPosition);
|
||||
if (recalculateDistance) { airportsInRange.calculcateAndUpdateRelativeDistanceAndBearing(this->getOwnAircraftPosition()); }
|
||||
return airportsInRange;
|
||||
}
|
||||
|
||||
CAircraftModel ISimulator::reverseLookupModel(const CAircraftModel &model)
|
||||
|
||||
@@ -144,7 +144,7 @@ namespace BlackCore
|
||||
virtual void displayTextMessage(const BlackMisc::Network::CTextMessage &message) const = 0;
|
||||
|
||||
//! Airports in range from simulator, or if not available from web service
|
||||
virtual BlackMisc::Aviation::CAirportList getAirportsInRange() const;
|
||||
virtual BlackMisc::Aviation::CAirportList getAirportsInRange(bool recalculateDistance) const;
|
||||
|
||||
//! Set time synchronization between simulator and user's computer time
|
||||
//! \remarks not all drivers implement this, e.g. if it is an intrinsic simulator feature
|
||||
@@ -499,7 +499,6 @@ namespace BlackCore
|
||||
static BlackMisc::Simulation::CAircraftModel reverseLookupModel(const BlackMisc::Simulation::CAircraftModel &model);
|
||||
|
||||
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
|
||||
bool m_updateRemoteAircraftInProgress = false; //!< currently updating remote aircraft
|
||||
int m_timerId = -1; //!< dispatch timer id
|
||||
int m_statsUpdateAircraftRuns = 0; //!< statistics update count
|
||||
|
||||
@@ -108,7 +108,7 @@ namespace BlackGui
|
||||
const bool counter = ((m_updateCounter % 5) == 0); // less frequent than aircraft
|
||||
if (this->countAirportsInRangeInView() < 1 || (visible && counter))
|
||||
{
|
||||
ui->tvp_AirportsInRange->updateContainerMaybeAsync(sGui->getIContextSimulator()->getAirportsInRange());
|
||||
ui->tvp_AirportsInRange->updateContainerMaybeAsync(sGui->getIContextSimulator()->getAirportsInRange(true));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -142,8 +142,8 @@ namespace BlackGui
|
||||
{
|
||||
Q_UNUSED(count);
|
||||
Q_UNUSED(withFilter);
|
||||
int ac = this->indexOf(ui->tb_AircraftInRange);
|
||||
int ap = this->indexOf(ui->tb_AirportsInRange);
|
||||
const int ac = this->indexOf(ui->tb_AircraftInRange);
|
||||
const int ap = this->indexOf(ui->tb_AirportsInRange);
|
||||
QString acs = this->tabBar()->tabText(ac);
|
||||
QString aps = this->tabBar()->tabText(ap);
|
||||
acs = CGuiUtility::replaceTabCountValue(acs, this->countAircraftInView());
|
||||
|
||||
@@ -118,10 +118,15 @@ namespace BlackSimPlugin
|
||||
return true;
|
||||
}
|
||||
|
||||
CAirportList CSimulatorFsCommon::getAirportsInRange() const
|
||||
CAirportList CSimulatorFsCommon::getAirportsInRange(bool recalculateDistance) const
|
||||
{
|
||||
if (!m_airportsInRangeFromSimulator.isEmpty()) { return m_airportsInRangeFromSimulator; }
|
||||
return ISimulator::getAirportsInRange();
|
||||
if (!m_airportsInRangeFromSimulator.isEmpty())
|
||||
{
|
||||
CAirportList airports = m_airportsInRangeFromSimulator;
|
||||
if (recalculateDistance) { airports.calculcateAndUpdateRelativeDistanceAndBearing(this->getOwnAircraftPosition()); }
|
||||
return airports;
|
||||
}
|
||||
return ISimulator::getAirportsInRange(recalculateDistance);
|
||||
}
|
||||
|
||||
void CSimulatorFsCommon::onSwiftDbAirportsRead()
|
||||
|
||||
@@ -43,7 +43,7 @@ namespace BlackSimPlugin
|
||||
virtual bool isTimeSynchronized() const override { return m_simTimeSynced; }
|
||||
virtual BlackMisc::PhysicalQuantities::CTime getTimeSynchronizationOffset() const override;
|
||||
virtual bool setTimeSynchronization(bool enable, const BlackMisc::PhysicalQuantities::CTime &offset) override;
|
||||
virtual BlackMisc::Aviation::CAirportList getAirportsInRange() const override;
|
||||
virtual BlackMisc::Aviation::CAirportList getAirportsInRange(bool recalculateDistance) const override;
|
||||
// ---------------------- ISimulator ------------------
|
||||
|
||||
protected:
|
||||
|
||||
@@ -432,9 +432,12 @@ namespace BlackSimPlugin
|
||||
}
|
||||
}
|
||||
|
||||
CAirportList CSimulatorXPlane::getAirportsInRange() const
|
||||
CAirportList CSimulatorXPlane::getAirportsInRange(bool recalculateDistance) const
|
||||
{
|
||||
return m_airportsInRange;
|
||||
if (!recalculateDistance) { return m_airportsInRange; }
|
||||
CAirportList airports(m_airportsInRange);
|
||||
airports.calculcateAndUpdateRelativeDistanceAndBearing(this->getOwnAircraftPosition());
|
||||
return airports;
|
||||
}
|
||||
|
||||
bool CSimulatorXPlane::setTimeSynchronization(bool enable, const PhysicalQuantities::CTime &offset)
|
||||
|
||||
@@ -129,7 +129,7 @@ namespace BlackSimPlugin
|
||||
virtual bool updateOwnSimulatorSelcal(const BlackMisc::Aviation::CSelcal &selcal, const BlackMisc::CIdentifier &originator) override;
|
||||
virtual void displayStatusMessage(const BlackMisc::CStatusMessage &message) const override;
|
||||
virtual void displayTextMessage(const BlackMisc::Network::CTextMessage &message) const override;
|
||||
virtual BlackMisc::Aviation::CAirportList getAirportsInRange() const override;
|
||||
virtual BlackMisc::Aviation::CAirportList getAirportsInRange(bool recalculateDistance) const override;
|
||||
virtual bool setTimeSynchronization(bool enable, const BlackMisc::PhysicalQuantities::CTime &offset) override;
|
||||
virtual BlackMisc::PhysicalQuantities::CTime getTimeSynchronizationOffset() const override { return BlackMisc::PhysicalQuantities::CTime(0, BlackMisc::PhysicalQuantities::CTimeUnit::hrmin()); }
|
||||
virtual bool isPhysicallyRenderedAircraft(const BlackMisc::Aviation::CCallsign &callsign) const override;
|
||||
|
||||
Reference in New Issue
Block a user