Ref T659, network can use changed livery/modelstring, and/or not send at all

This commit is contained in:
Klaus Basan
2019-07-22 01:38:31 +02:00
committed by Mat Sutcliffe
parent 2fb207c028
commit 4761f5f356
3 changed files with 31 additions and 8 deletions

View File

@@ -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.

View File

@@ -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)

View File

@@ -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