mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-03-23 07:15:35 +08:00
Ref T384, get closest ATC stations online
This commit is contained in:
@@ -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;
|
||||
|
||||
|
||||
@@ -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
|
||||
{
|
||||
|
||||
@@ -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; }
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user