From c2cd983d645b4262faa6148c33f01da8155ce84b Mon Sep 17 00:00:00 2001 From: Klaus Basan Date: Tue, 20 May 2014 22:29:24 +0200 Subject: [PATCH] refs #242, removed own aircraft from network context * removed attribute * changed to use object (local) from own aircraft context * helper methods --- src/blackcore/context_network.h | 20 +------ src/blackcore/context_network_aircraft.cpp | 4 +- src/blackcore/context_network_atc.cpp | 6 +- src/blackcore/context_network_impl.cpp | 64 ++++++++++++++-------- src/blackcore/context_network_impl.h | 51 +++++++++-------- src/blackcore/context_network_proxy.cpp | 25 --------- src/blackcore/context_network_proxy.h | 15 ----- 7 files changed, 73 insertions(+), 112 deletions(-) diff --git a/src/blackcore/context_network.h b/src/blackcore/context_network.h index 3c6a85e08..fd1ff8536 100644 --- a/src/blackcore/context_network.h +++ b/src/blackcore/context_network.h @@ -101,9 +101,6 @@ namespace BlackCore //! User for given callsign, e.g. for text messages virtual BlackMisc::Network::CUser getUserForCallsign(const BlackMisc::Aviation::CCallsign &callsign) const = 0; - //! Get own aircraft - virtual BlackMisc::Aviation::CAircraft getOwnAircraft() const = 0; - //! Information about other clients virtual BlackMisc::Network::CClientList getOtherClients() const = 0; @@ -126,22 +123,6 @@ namespace BlackCore //! \brief Network connected? virtual bool isConnected() const = 0; - /*! - * Set own aircraft - * \param aircraft - * \return message list, as aircraft can only be set prior connecting - */ - virtual BlackMisc::CStatusMessageList setOwnAircraft(const BlackMisc::Aviation::CAircraft &aircraft) = 0; - - //! Own position, be aware height is terrain height - virtual void updateOwnPosition(const BlackMisc::Geo::CCoordinateGeodetic &position, const BlackMisc::Aviation::CAltitude &altitude) = 0; - - //! Complete situation update - virtual void updateOwnSituation(const BlackMisc::Aviation::CAircraftSituation &situation) = 0; - - //! Update own cockpit - virtual void updateOwnCockpit(const BlackMisc::Aviation::CComSystem &com1, const BlackMisc::Aviation::CComSystem &com2, const BlackMisc::Aviation::CTransponder &transponder) = 0; - //! Text messages (radio and private chat messages) virtual void sendTextMessages(const BlackMisc::Network::CTextMessageList &textMessages) = 0; @@ -170,6 +151,7 @@ namespace BlackCore protected: //! Constructor IContextNetwork(CRuntimeConfig::ContextMode mode, CRuntime *runtime) : CContext(mode, runtime) {} + }; } diff --git a/src/blackcore/context_network_aircraft.cpp b/src/blackcore/context_network_aircraft.cpp index 388b1eee1..c1d8fc5c7 100644 --- a/src/blackcore/context_network_aircraft.cpp +++ b/src/blackcore/context_network_aircraft.cpp @@ -43,7 +43,7 @@ namespace BlackCore aircraft.setCallsign(callsign); aircraft.setSituation(situation); aircraft.setTransponder(transponder); - aircraft.calculcateDistanceToPlane(this->m_ownAircraft.getPosition()); + aircraft.calculcateDistanceToPlane(this->ownAircraft().getPosition()); this->m_vatsimDataFileReader->getAircrafts().updateFromVatsimDataFileAircraft(aircraft); this->m_aircraftsInRange.push_back(aircraft); @@ -67,7 +67,7 @@ namespace BlackCore else { // update - CLength distance = this->m_ownAircraft.calculcateDistanceToPlane(situation.getPosition()); + CLength distance = this->ownAircraft().calculcateDistanceToPlane(situation.getPosition()); distance.switchUnit(CLengthUnit::NM()); CIndexVariantMap vm; vm.addValue(CAircraft::IndexTransponder, transponder); diff --git a/src/blackcore/context_network_atc.cpp b/src/blackcore/context_network_atc.cpp index d4f64efb0..c5577a17d 100644 --- a/src/blackcore/context_network_atc.cpp +++ b/src/blackcore/context_network_atc.cpp @@ -138,8 +138,8 @@ namespace BlackCore */ CAtcStationList CContextNetwork::getSelectedAtcStations() const { - CAtcStationList stationsCom1 = this->m_atcStationsOnline.findIfComUnitTunedIn25KHz(this->m_ownAircraft.getCom1System()); - CAtcStationList stationsCom2 = this->m_atcStationsOnline.findIfComUnitTunedIn25KHz(this->m_ownAircraft.getCom2System()); + CAtcStationList stationsCom1 = this->m_atcStationsOnline.findIfComUnitTunedIn25KHz(this->ownAircraft().getCom1System()); + CAtcStationList stationsCom2 = this->m_atcStationsOnline.findIfComUnitTunedIn25KHz(this->ownAircraft().getCom2System()); stationsCom1.sortBy(&CAtcStation::getDistanceToPlane); stationsCom2.sortBy(&CAtcStation::getDistanceToPlane); @@ -179,7 +179,7 @@ namespace BlackCore station.setFrequency(frequency); station.setPosition(position); station.setOnline(true); - station.calculcateDistanceToPlane(this->m_ownAircraft.getPosition()); + station.calculcateDistanceToPlane(this->ownAircraft().getPosition()); this->m_vatsimDataFileReader->getAtcStations().updateFromVatsimDataFileStation(station); // prefill this->m_atcStationsOnline.push_back(station); emit this->changedAtcStationsOnline(); diff --git a/src/blackcore/context_network_impl.cpp b/src/blackcore/context_network_impl.cpp index c436d8c57..ca56df291 100644 --- a/src/blackcore/context_network_impl.cpp +++ b/src/blackcore/context_network_impl.cpp @@ -8,6 +8,7 @@ #include "context_settings.h" #include "context_application.h" #include "context_simulator.h" +#include "context_ownaircraft_impl.h" #include "network_vatlib.h" #include "vatsimbookingreader.h" #include "vatsimdatafilereader.h" @@ -94,8 +95,8 @@ namespace BlackCore { Q_ASSERT(this->getRuntime()); Q_ASSERT(this->getRuntime()->getIContextSettings()); - this->m_ownAircraft.initComSystems(); - this->m_ownAircraft.initTransponder(); + this->ownAircraft().initComSystems(); + this->ownAircraft().initTransponder(); CAircraftSituation situation( CCoordinateGeodetic( CLatitude::fromWgs84("N 049° 18' 17"), @@ -103,13 +104,13 @@ namespace BlackCore CLength(0, CLengthUnit::m())), CAltitude(312, CAltitude::MeanSeaLevel, CLengthUnit::ft()) ); - this->m_ownAircraft.setSituation(situation); - this->m_ownAircraft.setPilot(this->getIContextSettings()->getNetworkSettings().getCurrentTrafficNetworkServer().getUser()); + this->ownAircraft().setSituation(situation); + this->ownAircraft().setPilot(this->getIContextSettings()->getNetworkSettings().getCurrentTrafficNetworkServer().getUser()); // TODO: This would need to come from somewhere (mappings) // Own callsign, plane ICAO status, model used - this->m_ownAircraft.setCallsign(CCallsign("BLACK")); - this->m_ownAircraft.setIcaoInfo(CAircraftIcao("C172", "L1P", "GA", "GA", "0000ff")); + this->ownAircraft().setCallsign(CCallsign("BLACK")); + this->ownAircraft().setIcaoInfo(CAircraftIcao("C172", "L1P", "GA", "GA", "0000ff")); } /* @@ -125,7 +126,7 @@ namespace BlackCore { msgs.push_back(CStatusMessage(CStatusMessage::TypeTrafficNetwork, CStatusMessage::SeverityWarning, "Invalid user credentials")); } - else if (!this->m_ownAircraft.getIcaoInfo().hasAircraftAndAirlineDsignator()) + else if (!this->ownAircraft().getIcaoInfo().hasAircraftAndAirlineDsignator()) { msgs.push_back(CStatusMessage(CStatusMessage::TypeTrafficNetwork, CStatusMessage::SeverityWarning, "Invalid ICAO data for own aircraft")); } @@ -139,12 +140,12 @@ namespace BlackCore if (CNetworkUtils::canConnect(currentServer, msg, 2000)) { INetwork::LoginMode mode = static_cast(loginMode); - this->m_ownAircraft.setPilot(currentServer.getUser()); // still needed? + this->ownAircraft().setPilot(currentServer.getUser()); // still needed? this->m_network->presetServer(currentServer); this->m_network->presetLoginMode(mode); - this->m_network->presetCallsign(this->m_ownAircraft.getCallsign()); - this->m_network->presetIcaoCodes(this->m_ownAircraft.getIcaoInfo()); - this->m_network->setOwnAircraft(this->m_ownAircraft); + this->m_network->presetCallsign(this->ownAircraft().getCallsign()); + this->m_network->presetIcaoCodes(this->ownAircraft().getIcaoInfo()); + this->m_network->setOwnAircraft(this->ownAircraft()); this->m_network->initiateConnection(); msg = "Connection pending "; msg.append(" ").append(currentServer.getAddress()).append(" ").append(QString::number(currentServer.getPort())); @@ -205,7 +206,7 @@ namespace BlackCore } else { - this->m_ownAircraft = aircraft; + this->ownAircraft() = aircraft; } return msgs; } @@ -216,8 +217,8 @@ namespace BlackCore void CContextNetwork::updateOwnPosition(const BlackMisc::Geo::CCoordinateGeodetic &position, const BlackMisc::Aviation::CAltitude &altitude) { if (this->getRuntime()->isSlotLogForNetworkEnabled()) this->getRuntime()->logSlot(Q_FUNC_INFO, position.toQString(), altitude.toQString()); - this->m_ownAircraft.setPosition(position); - this->m_ownAircraft.setAltitude(altitude); + this->ownAircraft().setPosition(position); + this->ownAircraft().setAltitude(altitude); this->m_network->setOwnAircraftPosition(position, altitude); } @@ -227,7 +228,7 @@ namespace BlackCore void CContextNetwork::updateOwnSituation(const BlackMisc::Aviation::CAircraftSituation &situation) { if (this->getRuntime()->isSlotLogForNetworkEnabled()) this->getRuntime()->logSlot(Q_FUNC_INFO, situation.toQString()); - this->m_ownAircraft.setSituation(situation); + this->ownAircraft().setSituation(situation); this->m_network->setOwnAircraftSituation(situation); } @@ -238,19 +239,19 @@ namespace BlackCore { if (this->getRuntime()->isSlotLogForNetworkEnabled()) this->getRuntime()->logSlot(Q_FUNC_INFO, com1.toQString(), com2.toQString(), transponder.toQString()); bool changed = false; - if (com1 != this->m_ownAircraft.getCom1System()) + if (com1 != this->ownAircraft().getCom1System()) { - this->m_ownAircraft.setCom1System(com1); + this->ownAircraft().setCom1System(com1); changed = true; } - if (com2 != this->m_ownAircraft.getCom2System()) + if (com2 != this->ownAircraft().getCom2System()) { - this->m_ownAircraft.setCom2System(com2); + this->ownAircraft().setCom2System(com2); changed = true; } - if (transponder != this->m_ownAircraft.getTransponder()) + if (transponder != this->ownAircraft().getTransponder()) { - this->m_ownAircraft.setTransponder(transponder); + this->ownAircraft().setTransponder(transponder); changed = true; } @@ -263,8 +264,8 @@ namespace BlackCore */ CAircraft CContextNetwork::getOwnAircraft() const { - if (this->getRuntime()->isSlotLogForNetworkEnabled()) this->getRuntime()->logSlot(Q_FUNC_INFO, this->m_ownAircraft.toQString()); - return this->m_ownAircraft; + if (this->getRuntime()->isSlotLogForNetworkEnabled()) this->getRuntime()->logSlot(Q_FUNC_INFO, this->ownAircraft().toQString()); + return this->ownAircraft(); } /* @@ -402,7 +403,7 @@ namespace BlackCore if (to == INetwork::Connected) { QString m("Connected, own aircraft "); - m.append(this->m_ownAircraft.toQString(true)); + m.append(this->ownAircraft().toQString(true)); msgs.push_back(CStatusMessage(CStatusMessage::TypeTrafficNetwork, CStatusMessage::SeverityInfo, m)); } @@ -531,4 +532,19 @@ namespace BlackCore icao.getAircraftCombinedType(), modelString); return data; } + + const CAircraft &CContextNetwork::ownAircraft() const + { + Q_ASSERT(this->getRuntime()); + Q_ASSERT(this->getRuntime()->getCContextOwnAircraft()); + return this->getRuntime()->getCContextOwnAircraft()->ownAircraft(); + } + + CAircraft &CContextNetwork::ownAircraft() + { + Q_ASSERT(this->getRuntime()); + Q_ASSERT(this->getRuntime()->getCContextOwnAircraft()); + return this->getRuntime()->getCContextOwnAircraft()->ownAircraft(); + } + } // namespace diff --git a/src/blackcore/context_network_impl.h b/src/blackcore/context_network_impl.h index 93b0d6983..52c56ba65 100644 --- a/src/blackcore/context_network_impl.h +++ b/src/blackcore/context_network_impl.h @@ -35,6 +35,25 @@ namespace BlackCore //! Destructor virtual ~CContextNetwork(); + /*! + * Set own aircraft + * \param aircraft + * \return message list, as aircraft can only be set prior connecting + */ + BlackMisc::CStatusMessageList setOwnAircraft(const BlackMisc::Aviation::CAircraft &aircraft); + + //! Own position, be aware height is terrain height + void updateOwnPosition(const BlackMisc::Geo::CCoordinateGeodetic &position, const BlackMisc::Aviation::CAltitude &altitude); + + //! Complete situation update + void updateOwnSituation(const BlackMisc::Aviation::CAircraftSituation &situation); + + //! Update own cockpit + void updateOwnCockpit(const BlackMisc::Aviation::CComSystem &com1, const BlackMisc::Aviation::CComSystem &com2, const BlackMisc::Aviation::CTransponder &transponder); + + //! Get own aircraft + BlackMisc::Aviation::CAircraft getOwnAircraft() const; + public slots: // IContextNetwork overrides //! \copydoc IContextNetwork::readAtcBookingsFromSource() @@ -70,21 +89,6 @@ namespace BlackCore //! \copydoc IContextNetwork::isConnected() virtual bool isConnected() const override; - //! \copydoc IContextNetwork::setOwnAircraft() - virtual BlackMisc::CStatusMessageList setOwnAircraft(const BlackMisc::Aviation::CAircraft &aircraft) override; - - //! \copydoc IContextNetwork::updateOwnPosition() - virtual void updateOwnPosition(const BlackMisc::Geo::CCoordinateGeodetic &position, const BlackMisc::Aviation::CAltitude &altitude) override; - - //! \copydoc IContextNetwork::updateOwnSituation() - virtual void updateOwnSituation(const BlackMisc::Aviation::CAircraftSituation &situation) override; - - //! \copydoc IContextNetwork::updateOwnCockpit() - virtual void updateOwnCockpit(const BlackMisc::Aviation::CComSystem &com1, const BlackMisc::Aviation::CComSystem &com2, const BlackMisc::Aviation::CTransponder &transponder) override; - - //! \copydoc IContextNetwork::getOwnAircraft() - virtual BlackMisc::Aviation::CAircraft getOwnAircraft() const override; - //! \copydoc IContextNetwork::sendTextMessages() virtual void sendTextMessages(const BlackMisc::Network::CTextMessageList &textMessages) override; @@ -139,7 +143,6 @@ namespace BlackCore BlackMisc::Aviation::CAircraftList m_aircraftsInRange; BlackMisc::Network::CClientList m_otherClients; BlackCore::INetwork *m_network; - BlackMisc::Aviation::CAircraft m_ownAircraft; QMap m_metarCache /*!< Keep METARs for a while */; // for reading XML and VATSIM data files @@ -154,16 +157,10 @@ namespace BlackCore void setAtcStationsOnline(const BlackMisc::Aviation::CAtcStationList &newStations); //! The "central" ATC list with online ATC controllers - BlackMisc::Aviation::CAtcStationList &atcStationsOnline() - { - return m_atcStationsOnline; - } + BlackMisc::Aviation::CAtcStationList &atcStationsOnline() { return m_atcStationsOnline; } //! ATC list, with booked controllers - BlackMisc::Aviation::CAtcStationList &atcStationsBooked() - { - return m_atcStationsBooked; - } + BlackMisc::Aviation::CAtcStationList &atcStationsBooked() { return m_atcStationsBooked; } //! Init my very own aircraft void initOwnAircraft(); @@ -185,6 +182,12 @@ namespace BlackCore //! Custom package data based on own aircraft / model QStringList createFsipiCustomPackageData() const; + //! Own aircraft + const BlackMisc::Aviation::CAircraft &ownAircraft() const; + + //! Own aircraft + BlackMisc::Aviation::CAircraft &ownAircraft(); + private slots: //! ATC bookings received void psReceivedBookings(BlackMisc::Aviation::CAtcStationList bookedStations); diff --git a/src/blackcore/context_network_proxy.cpp b/src/blackcore/context_network_proxy.cpp index c164dea3b..470f65fc1 100644 --- a/src/blackcore/context_network_proxy.cpp +++ b/src/blackcore/context_network_proxy.cpp @@ -111,11 +111,6 @@ namespace BlackCore this->m_dBusInterface->callDBus(QLatin1Literal("requestAtisUpdates")); } - BlackMisc::Aviation::CAircraft CContextNetworkProxy::getOwnAircraft() const - { - return this->m_dBusInterface->callDBusRet(QLatin1Literal("getOwnAircraft")); - } - BlackMisc::CStatusMessageList CContextNetworkProxy::connectToNetwork(uint loginMode) { return this->m_dBusInterface->callDBusRet(QLatin1Literal("connectToNetwork"), loginMode); @@ -131,26 +126,6 @@ namespace BlackCore return this->m_dBusInterface->callDBusRet(QLatin1Literal("isConnected")); } - BlackMisc::CStatusMessageList CContextNetworkProxy::setOwnAircraft(const BlackMisc::Aviation::CAircraft &aircraft) - { - return this->m_dBusInterface->callDBusRet(QLatin1Literal("setOwnAircraft"), aircraft); - } - - void CContextNetworkProxy::updateOwnPosition(const BlackMisc::Geo::CCoordinateGeodetic &position, const BlackMisc::Aviation::CAltitude &altitude) - { - this->m_dBusInterface->callDBus(QLatin1Literal("updateOwnPosition"), position, altitude); - } - - void CContextNetworkProxy::updateOwnSituation(const BlackMisc::Aviation::CAircraftSituation &situation) - { - this->m_dBusInterface->callDBus(QLatin1Literal("updateOwnSituation"), situation); - } - - void CContextNetworkProxy::updateOwnCockpit(const BlackMisc::Aviation::CComSystem &com1, const BlackMisc::Aviation::CComSystem &com2, const BlackMisc::Aviation::CTransponder &transponder) - { - this->m_dBusInterface->callDBus(QLatin1Literal("updateOwnCockpit"), com1, com2, transponder); - } - void CContextNetworkProxy::sendTextMessages(const BlackMisc::Network::CTextMessageList &textMessages) { this->m_dBusInterface->callDBus(QLatin1Literal("sendTextMessages"), textMessages); diff --git a/src/blackcore/context_network_proxy.h b/src/blackcore/context_network_proxy.h index 86be9dca1..d6e638140 100644 --- a/src/blackcore/context_network_proxy.h +++ b/src/blackcore/context_network_proxy.h @@ -73,21 +73,6 @@ namespace BlackCore //! \copydoc IContextNetwork::isConnected() virtual bool isConnected() const override; - //! \copydoc IContextNetwork::setOwnAircraft() - virtual BlackMisc::CStatusMessageList setOwnAircraft(const BlackMisc::Aviation::CAircraft &aircraft) override; - - //! \copydoc IContextNetwork::updateOwnPosition() - virtual void updateOwnPosition(const BlackMisc::Geo::CCoordinateGeodetic &position, const BlackMisc::Aviation::CAltitude &altitude) override; - - //! \copydoc IContextNetwork::updateOwnSituation() - virtual void updateOwnSituation(const BlackMisc::Aviation::CAircraftSituation &situation) override; - - //! \copydoc IContextNetwork::updateOwnCockpit() - virtual void updateOwnCockpit(const BlackMisc::Aviation::CComSystem &com1, const BlackMisc::Aviation::CComSystem &com2, const BlackMisc::Aviation::CTransponder &transponder) override; - - //! \copydoc IContextNetwork::getOwnAircraft() - virtual BlackMisc::Aviation::CAircraft getOwnAircraft() const override; - //! \copydoc IContextNetwork::sendTextMessages() virtual void sendTextMessages(const BlackMisc::Network::CTextMessageList &textMessages) override;