From 4761f5f3569716b14a6089ce91b9fe7edacef051 Mon Sep 17 00:00:00 2001 From: Klaus Basan Date: Mon, 22 Jul 2019 01:38:31 +0200 Subject: [PATCH] Ref T659, network can use changed livery/modelstring, and/or not send at all --- src/blackcore/network.h | 6 ++++++ src/blackcore/vatsim/networkvatlib.cpp | 27 +++++++++++++++++++------- src/blackcore/vatsim/networkvatlib.h | 6 +++++- 3 files changed, 31 insertions(+), 8 deletions(-) diff --git a/src/blackcore/network.h b/src/blackcore/network.h index 8dd3213ad..bf57f2f1d 100644 --- a/src/blackcore/network.h +++ b/src/blackcore/network.h @@ -207,6 +207,12 @@ namespace BlackCore */ virtual void presetLoginMode(BlackCore::INetwork::LoginMode mode) = 0; + /*! + * Set the model string and livery string before connecting. + * \pre Network must be disconnected when calling this function. + */ + virtual void presetLiveryAndModelString(const QString &livery, bool sendLiveryString, const QString &modelString, bool sendModelString) = 0; + /*! * Set simulator info before connecting. * \pre Network must be disconnected when calling this function. diff --git a/src/blackcore/vatsim/networkvatlib.cpp b/src/blackcore/vatsim/networkvatlib.cpp index 922a26fea..c3f6d6a54 100644 --- a/src/blackcore/vatsim/networkvatlib.cpp +++ b/src/blackcore/vatsim/networkvatlib.cpp @@ -487,10 +487,22 @@ namespace BlackCore Q_ASSERT_X(isDisconnected(), Q_FUNC_INFO, "Can't change ICAO codes while still connected"); m_ownAircraftIcaoCode = ownAircraft.getAircraftIcaoCode(); m_ownAirlineIcaoCode = ownAircraft.getAirlineIcaoCode(); - m_ownLiveryDescription = removeColon(ownAircraft.getModel().getSwiftLiveryString()); + m_ownLivery = removeColon(ownAircraft.getModel().getSwiftLiveryString()); + m_ownModelString = removeColon(ownAircraft.getModelString()); + m_sendLiveryString = true; + m_sendMModelString = true; + updateOwnIcaoCodes(m_ownAircraftIcaoCode, m_ownAirlineIcaoCode); } + void CNetworkVatlib::presetLiveryAndModelString(const QString &livery, bool sendLiveryString, const QString &modelString, bool sendModelString) + { + m_ownLivery = removeColon(livery); + m_ownModelString = removeColon(modelString); + m_sendLiveryString = sendLiveryString; + m_sendMModelString = sendModelString; + } + void CNetworkVatlib::presetLoginMode(LoginMode mode) { Q_ASSERT_X(isDisconnected(), Q_FUNC_INFO, "Can't change login mode while still connected"); @@ -825,10 +837,10 @@ namespace BlackCore { const QString airlineIcao = m_server.getFsdSetup().force3LetterAirlineCodes() ? m_ownAirlineIcaoCode.getDesignator() : m_ownAirlineIcaoCode.getVDesignator(); const QByteArray acTypeICAObytes = toFSDnoColon(m_ownAircraftIcaoCode.getDesignator()); - const QByteArray liverybytes = toFSDnoColon(m_ownLiveryDescription); + const QByteArray liverybytes = toFSDnoColon(m_ownLivery); const QByteArray airlineICAObytes = toFSDnoColon(airlineIcao); - VatAircraftInfo aircraftInfo {acTypeICAObytes, airlineICAObytes, liverybytes}; + VatAircraftInfo aircraftInfo { acTypeICAObytes, airlineICAObytes, m_sendLiveryString ? liverybytes : QByteArray() }; Vat_SendAircraftInfo(m_net.data(), toFSD(callsign), &aircraftInfo); // statistics @@ -915,15 +927,16 @@ namespace BlackCore { Q_ASSERT_X(isConnected(), Q_FUNC_INFO, "Can't send to server when disconnected"); const CSimulatedAircraft myAircraft(getOwnAircraft()); - const QString modelString = myAircraft.hasModelString() ? myAircraft.getModelString() : noModelString(); + QString modelString = m_ownModelString.isEmpty() ? myAircraft.getModelString() : m_ownModelString; + if (modelString.isEmpty()) { modelString = noModelString(); } const QStringList data { { "0" }, myAircraft.getAirlineIcaoCodeDesignator(), myAircraft.getAircraftIcaoCodeDesignator(), - { "" }, { "" }, { "" }, { "" }, + { QString() }, { QString() }, { QString() }, { QString() }, myAircraft.getAircraftIcaoCombinedType(), - removeColon(modelString) + m_sendMModelString ? removeColon(modelString) : QString() }; - sendCustomPacket(callsign, "FSIPIR", data); + sendCustomPacket(callsign, QStringLiteral("FSIPIR"), data); } void CNetworkVatlib::sendCustomFsinnReponse(const CCallsign &callsign) diff --git a/src/blackcore/vatsim/networkvatlib.h b/src/blackcore/vatsim/networkvatlib.h index dcd563f8a..8f31bb7af 100644 --- a/src/blackcore/vatsim/networkvatlib.h +++ b/src/blackcore/vatsim/networkvatlib.h @@ -84,6 +84,7 @@ namespace BlackCore virtual void presetServer(const BlackMisc::Network::CServer &server) override; virtual void presetCallsign(const BlackMisc::Aviation::CCallsign &callsign) override; virtual void presetIcaoCodes(const BlackMisc::Simulation::CSimulatedAircraft &ownAircraft) override; + virtual void presetLiveryAndModelString(const QString &livery, bool sendLiveryString, const QString &modelString, bool sendModelString) override; virtual void presetSimulatorInfo(const BlackMisc::Simulation::CSimulatorPluginInfo &simInfo) override; virtual void initiateConnection() override; virtual void terminateConnection() override; @@ -289,7 +290,10 @@ namespace BlackCore BlackMisc::Aviation::CCallsign m_ownCallsign; //!< "buffered callsign", as this must not change when connected BlackMisc::Aviation::CAircraftIcaoCode m_ownAircraftIcaoCode; //!< "buffered icao", as this must not change when connected BlackMisc::Aviation::CAirlineIcaoCode m_ownAirlineIcaoCode; //!< "buffered icao", as this must not change when connected - QString m_ownLiveryDescription; //!< "buffered livery", as this must not change when connected + QString m_ownLivery; //!< "buffered livery", as this must not change when connected + QString m_ownModelString; //!< "buffered model string", as this must not change when connected + bool m_sendLiveryString = true; + bool m_sendMModelString = true; BlackMisc::Aviation::CCallsignSet m_interimPositionReceivers; //!< all aircraft receiving interim positions BlackMisc::Aviation::CAircraftParts m_sentAircraftConfig; //!< aircraft parts sent BlackMisc::CTokenBucket m_tokenBucket; //!< used with aircraft parts messages