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
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
virtual BlackMisc::Aviation::CAtcStationList getAtcStationsBooked(bool recalculateDistance) const = 0;

View File

@@ -44,6 +44,14 @@ namespace BlackCore
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()
virtual BlackMisc::Aviation::CAtcStationList getAtcStationsBooked(bool recalculateDistance) const override
{

View File

@@ -618,6 +618,14 @@ namespace BlackCore
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
{
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 BlackMisc::Aviation::CAtcStationList getAtcStationsBooked(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::CStatusMessage connectToNetwork(const BlackMisc::Network::CServer &server, BlackCore::INetwork::LoginMode mode) override;
virtual BlackMisc::Network::CServer getConnectedServer() const override;

View File

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

View File

@@ -77,6 +77,7 @@ namespace BlackCore
//! @{
virtual void requestAtcBookingsUpdate() 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::Simulation::CSimulatedAircraftList getAircraftInRange() const override;
virtual BlackMisc::Aviation::CCallsignSet getAircraftInRangeCallsigns() const override;

View File

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