From f3f2fa664e5cdde2ca4bc759fd6a3d6e847463bf Mon Sep 17 00:00:00 2001 From: Klaus Basan Date: Mon, 3 Sep 2018 13:40:41 +0200 Subject: [PATCH] Ref T322, ATC station distance can be recalculated when getting ATC stations from network context --- src/blackcore/context/contextnetwork.h | 4 ++-- src/blackcore/context/contextnetworkempty.h | 6 ++++-- src/blackcore/context/contextnetworkimpl.cpp | 16 +++++++++++----- src/blackcore/context/contextnetworkimpl.h | 4 ++-- src/blackcore/context/contextnetworkproxy.cpp | 8 ++++---- src/blackcore/context/contextnetworkproxy.h | 6 +++--- 6 files changed, 26 insertions(+), 18 deletions(-) diff --git a/src/blackcore/context/contextnetwork.h b/src/blackcore/context/contextnetwork.h index f4bdcad8c..5d66a57c0 100644 --- a/src/blackcore/context/contextnetwork.h +++ b/src/blackcore/context/contextnetwork.h @@ -172,10 +172,10 @@ namespace BlackCore virtual void requestAtcBookingsUpdate() const = 0; //! The ATC list with online ATC controllers - virtual BlackMisc::Aviation::CAtcStationList getAtcStationsOnline() const = 0; + virtual BlackMisc::Aviation::CAtcStationList getAtcStationsOnline(bool recalculateDistance) const = 0; //! ATC list, with booked controllers - virtual BlackMisc::Aviation::CAtcStationList getAtcStationsBooked() const = 0; + virtual BlackMisc::Aviation::CAtcStationList getAtcStationsBooked(bool recalculateDistance) const = 0; //! Aircraft list virtual BlackMisc::Simulation::CSimulatedAircraftList getAircraftInRange() const = 0; diff --git a/src/blackcore/context/contextnetworkempty.h b/src/blackcore/context/contextnetworkempty.h index e7f6d24ab..5d3e22575 100644 --- a/src/blackcore/context/contextnetworkempty.h +++ b/src/blackcore/context/contextnetworkempty.h @@ -37,15 +37,17 @@ namespace BlackCore } //! \copydoc IContextNetwork::getAtcStationsOnline() - virtual BlackMisc::Aviation::CAtcStationList getAtcStationsOnline() const override + virtual BlackMisc::Aviation::CAtcStationList getAtcStationsOnline(bool recalculateDistance) const override { + Q_UNUSED(recalculateDistance); logEmptyContextWarning(Q_FUNC_INFO); return BlackMisc::Aviation::CAtcStationList(); } //! \copydoc IContextNetwork::getAtcStationsBooked() - virtual BlackMisc::Aviation::CAtcStationList getAtcStationsBooked() const override + virtual BlackMisc::Aviation::CAtcStationList getAtcStationsBooked(bool recalculateDistance) const override { + Q_UNUSED(recalculateDistance); logEmptyContextWarning(Q_FUNC_INFO); return BlackMisc::Aviation::CAtcStationList(); } diff --git a/src/blackcore/context/contextnetworkimpl.cpp b/src/blackcore/context/contextnetworkimpl.cpp index debb19291..ad4164333 100644 --- a/src/blackcore/context/contextnetworkimpl.cpp +++ b/src/blackcore/context/contextnetworkimpl.cpp @@ -384,7 +384,7 @@ namespace BlackCore if (parser.countParts() < 2) { return false; } const bool watchdog = parser.toBool(1, true); - m_airspace->enableWatchdog(watchdog); + m_airspace->enableAnalyzer(watchdog); CLogMessage(this).info("Enabled watchdog: %1") << boolToYesNo(watchdog); } else if (parser.matchesCommand(".reinit", ".reinitialize")) @@ -595,16 +595,22 @@ namespace BlackCore return this->getRuntime()->getCContextOwnAircraft()->getOwnAircraft(); } - CAtcStationList CContextNetwork::getAtcStationsOnline() const + CAtcStationList CContextNetwork::getAtcStationsOnline(bool recalculateDistance) const { if (this->isDebugEnabled()) { CLogMessage(this, CLogCategory::contextSlot()).debug() << Q_FUNC_INFO; } - return m_airspace->getAtcStationsOnline(); + CAtcStationList stations = m_airspace->getAtcStationsOnline(); + if (!recalculateDistance || !this->getIContextOwnAircraft()) { return stations; } + stations.calculcateAndUpdateRelativeDistanceAndBearing(this->getIContextOwnAircraft()->getOwnAircraftSituation()); + return stations; } - CAtcStationList CContextNetwork::getAtcStationsBooked() const + CAtcStationList CContextNetwork::getAtcStationsBooked(bool recalculateDistance) const { if (this->isDebugEnabled()) { CLogMessage(this, CLogCategory::contextSlot()).debug() << Q_FUNC_INFO; } - return m_airspace->getAtcStationsBooked(); + CAtcStationList stations = m_airspace->getAtcStationsBooked(); + if (!recalculateDistance || !this->getIContextOwnAircraft()) { return stations; } + stations.calculcateAndUpdateRelativeDistanceAndBearing(this->getIContextOwnAircraft()->getOwnAircraftSituation()); + return stations; } CSimulatedAircraftList CContextNetwork::getAircraftInRange() const diff --git a/src/blackcore/context/contextnetworkimpl.h b/src/blackcore/context/contextnetworkimpl.h index 3456d009d..815ebba9a 100644 --- a/src/blackcore/context/contextnetworkimpl.h +++ b/src/blackcore/context/contextnetworkimpl.h @@ -220,9 +220,9 @@ namespace BlackCore //! \publicsection //! @{ - virtual BlackMisc::Aviation::CAtcStationList getAtcStationsBooked() const override; virtual void requestAtcBookingsUpdate() const override; - virtual BlackMisc::Aviation::CAtcStationList getAtcStationsOnline() const override; + virtual BlackMisc::Aviation::CAtcStationList getAtcStationsBooked(bool recalculateDistance) const override; + virtual BlackMisc::Aviation::CAtcStationList getAtcStationsOnline(bool recalculateDistance) 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; diff --git a/src/blackcore/context/contextnetworkproxy.cpp b/src/blackcore/context/contextnetworkproxy.cpp index f9d314720..5eb3b9f0e 100644 --- a/src/blackcore/context/contextnetworkproxy.cpp +++ b/src/blackcore/context/contextnetworkproxy.cpp @@ -108,14 +108,14 @@ namespace BlackCore m_dBusInterface->callDBus(QLatin1String("requestAtcBookingsUpdate")); } - BlackMisc::Aviation::CAtcStationList CContextNetworkProxy::getAtcStationsOnline() const + BlackMisc::Aviation::CAtcStationList CContextNetworkProxy::getAtcStationsOnline(bool recalculateDistance) const { - return m_dBusInterface->callDBusRet(QLatin1String("getAtcStationsOnline")); + return m_dBusInterface->callDBusRet(QLatin1String("getAtcStationsOnline"), recalculateDistance); } - CAtcStationList CContextNetworkProxy::getAtcStationsBooked() const + CAtcStationList CContextNetworkProxy::getAtcStationsBooked(bool recalculateDistance) const { - return m_dBusInterface->callDBusRet(QLatin1String("getAtcStationsBooked")); + return m_dBusInterface->callDBusRet(QLatin1String("getAtcStationsBooked"), recalculateDistance); } CSimulatedAircraftList CContextNetworkProxy::getAircraftInRange() const diff --git a/src/blackcore/context/contextnetworkproxy.h b/src/blackcore/context/contextnetworkproxy.h index 9ff6f9e4d..3fe3689fe 100644 --- a/src/blackcore/context/contextnetworkproxy.h +++ b/src/blackcore/context/contextnetworkproxy.h @@ -66,7 +66,7 @@ namespace BlackCore public: //! Destructor - virtual ~CContextNetworkProxy() {} + virtual ~CContextNetworkProxy() override {} //! Unit test relay signals //! \private @@ -76,8 +76,8 @@ namespace BlackCore //! \name Interface overrides //! @{ virtual void requestAtcBookingsUpdate() const override; - virtual BlackMisc::Aviation::CAtcStationList getAtcStationsOnline() const override; - virtual BlackMisc::Aviation::CAtcStationList getAtcStationsBooked() const override; + virtual BlackMisc::Aviation::CAtcStationList getAtcStationsOnline(bool recalculateDistance) 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; virtual int getAircraftInRangeCount() const override;