Ref T384, get closest ATC stations online

This commit is contained in:
Klaus Basan
2018-10-04 17:18:08 +02:00
parent 4c159d8293
commit 7300a2af1f
7 changed files with 30 additions and 2 deletions

View File

@@ -174,6 +174,11 @@ namespace BlackCore
//! The ATC list with online ATC controllers //! The ATC list with online ATC controllers
virtual BlackMisc::Aviation::CAtcStationList getAtcStationsOnline(bool recalculateDistance) const = 0; virtual BlackMisc::Aviation::CAtcStationList getAtcStationsOnline(bool recalculateDistance) const = 0;
//! The ATC list with online ATC controllers
//! \remark recalculates distance and picks closest elements
//! \remark sorted by distance, nearest first
virtual BlackMisc::Aviation::CAtcStationList getClosestAtcStationsOnline(int number) const = 0;
//! ATC list, with booked controllers //! ATC list, with booked controllers
virtual BlackMisc::Aviation::CAtcStationList getAtcStationsBooked(bool recalculateDistance) const = 0; virtual BlackMisc::Aviation::CAtcStationList getAtcStationsBooked(bool recalculateDistance) const = 0;

View File

@@ -44,6 +44,14 @@ namespace BlackCore
return BlackMisc::Aviation::CAtcStationList(); return BlackMisc::Aviation::CAtcStationList();
} }
//! \copydoc IContextNetwork::getClosestAtcStationsOnline()
virtual BlackMisc::Aviation::CAtcStationList getClosestAtcStationsOnline(int number) const override
{
Q_UNUSED(number);
logEmptyContextWarning(Q_FUNC_INFO);
return BlackMisc::Aviation::CAtcStationList();
}
//! \copydoc IContextNetwork::getAtcStationsBooked() //! \copydoc IContextNetwork::getAtcStationsBooked()
virtual BlackMisc::Aviation::CAtcStationList getAtcStationsBooked(bool recalculateDistance) const override virtual BlackMisc::Aviation::CAtcStationList getAtcStationsBooked(bool recalculateDistance) const override
{ {

View File

@@ -618,6 +618,14 @@ namespace BlackCore
return stations; return stations;
} }
CAtcStationList CContextNetwork::getClosestAtcStationsOnline(int number) const
{
if (!this->getIContextOwnAircraft()) { return CAtcStationList(); }
const CAircraftSituation ownSituation = this->getIContextOwnAircraft()->getOwnAircraftSituation();
const CAtcStationList stations = m_airspace->getAtcStationsOnline().findClosest(number, ownSituation);
return stations;
}
CAtcStationList CContextNetwork::getAtcStationsBooked(bool recalculateDistance) const CAtcStationList CContextNetwork::getAtcStationsBooked(bool recalculateDistance) const
{ {
if (this->isDebugEnabled()) { CLogMessage(this, CLogCategory::contextSlot()).debug() << Q_FUNC_INFO; } if (this->isDebugEnabled()) { CLogMessage(this, CLogCategory::contextSlot()).debug() << Q_FUNC_INFO; }

View File

@@ -233,6 +233,7 @@ namespace BlackCore
virtual void requestAtcBookingsUpdate() const override; virtual void requestAtcBookingsUpdate() const override;
virtual BlackMisc::Aviation::CAtcStationList getAtcStationsBooked(bool recalculateDistance) const override; virtual BlackMisc::Aviation::CAtcStationList getAtcStationsBooked(bool recalculateDistance) const override;
virtual BlackMisc::Aviation::CAtcStationList getAtcStationsOnline(bool recalculateDistance) const override; virtual BlackMisc::Aviation::CAtcStationList getAtcStationsOnline(bool recalculateDistance) const override;
virtual BlackMisc::Aviation::CAtcStationList getClosestAtcStationsOnline(int number) const override;
virtual BlackMisc::Aviation::CAtcStation getOnlineStationForCallsign(const BlackMisc::Aviation::CCallsign &callsign) const override; virtual BlackMisc::Aviation::CAtcStation getOnlineStationForCallsign(const BlackMisc::Aviation::CCallsign &callsign) const override;
virtual BlackMisc::CStatusMessage connectToNetwork(const BlackMisc::Network::CServer &server, BlackCore::INetwork::LoginMode mode) override; virtual BlackMisc::CStatusMessage connectToNetwork(const BlackMisc::Network::CServer &server, BlackCore::INetwork::LoginMode mode) override;
virtual BlackMisc::Network::CServer getConnectedServer() const override; virtual BlackMisc::Network::CServer getConnectedServer() const override;

View File

@@ -108,11 +108,16 @@ namespace BlackCore
m_dBusInterface->callDBus(QLatin1String("requestAtcBookingsUpdate")); m_dBusInterface->callDBus(QLatin1String("requestAtcBookingsUpdate"));
} }
BlackMisc::Aviation::CAtcStationList CContextNetworkProxy::getAtcStationsOnline(bool recalculateDistance) const CAtcStationList CContextNetworkProxy::getAtcStationsOnline(bool recalculateDistance) const
{ {
return m_dBusInterface->callDBusRet<BlackMisc::Aviation::CAtcStationList>(QLatin1String("getAtcStationsOnline"), recalculateDistance); return m_dBusInterface->callDBusRet<BlackMisc::Aviation::CAtcStationList>(QLatin1String("getAtcStationsOnline"), recalculateDistance);
} }
CAtcStationList CContextNetworkProxy::getClosestAtcStationsOnline(int number) const
{
return m_dBusInterface->callDBusRet<BlackMisc::Aviation::CAtcStationList>(QLatin1String("getClosestAtcStationsOnline"), number);
}
CAtcStationList CContextNetworkProxy::getAtcStationsBooked(bool recalculateDistance) const CAtcStationList CContextNetworkProxy::getAtcStationsBooked(bool recalculateDistance) const
{ {
return m_dBusInterface->callDBusRet<BlackMisc::Aviation::CAtcStationList>(QLatin1String("getAtcStationsBooked"), recalculateDistance); return m_dBusInterface->callDBusRet<BlackMisc::Aviation::CAtcStationList>(QLatin1String("getAtcStationsBooked"), recalculateDistance);

View File

@@ -77,6 +77,7 @@ namespace BlackCore
//! @{ //! @{
virtual void requestAtcBookingsUpdate() const override; virtual void requestAtcBookingsUpdate() const override;
virtual BlackMisc::Aviation::CAtcStationList getAtcStationsOnline(bool recalculateDistance) const override; virtual BlackMisc::Aviation::CAtcStationList getAtcStationsOnline(bool recalculateDistance) const override;
virtual BlackMisc::Aviation::CAtcStationList getClosestAtcStationsOnline(int number) const override;
virtual BlackMisc::Aviation::CAtcStationList getAtcStationsBooked(bool recalculateDistance) const override; virtual BlackMisc::Aviation::CAtcStationList getAtcStationsBooked(bool recalculateDistance) const override;
virtual BlackMisc::Simulation::CSimulatedAircraftList getAircraftInRange() const override; virtual BlackMisc::Simulation::CSimulatedAircraftList getAircraftInRange() const override;
virtual BlackMisc::Aviation::CCallsignSet getAircraftInRangeCallsigns() const override; virtual BlackMisc::Aviation::CCallsignSet getAircraftInRangeCallsigns() const override;

View File

@@ -151,7 +151,7 @@ namespace BlackMisc
{ {
return calculateEuclideanDistanceSquared(a, coordinate) < calculateEuclideanDistanceSquared(b, coordinate); return calculateEuclideanDistanceSquared(a, coordinate) < calculateEuclideanDistanceSquared(b, coordinate);
}); });
Q_ASSERT_X(closest.size() > number, Q_FUNC_INFO, "size exceeded"); closest.truncate(number);
return closest; return closest;
} }