Ref T409, network vatlib, remove "colon"/send special string if there is no model string

This commit is contained in:
Klaus Basan
2018-10-27 02:11:24 +02:00
parent 11c5ded3b5
commit 3fc0f34646
2 changed files with 26 additions and 11 deletions

View File

@@ -469,9 +469,9 @@ namespace BlackCore
void CNetworkVatlib::presetIcaoCodes(const CSimulatedAircraft &ownAircraft) void CNetworkVatlib::presetIcaoCodes(const CSimulatedAircraft &ownAircraft)
{ {
Q_ASSERT_X(isDisconnected(), Q_FUNC_INFO, "Can't change ICAO codes while still connected"); Q_ASSERT_X(isDisconnected(), Q_FUNC_INFO, "Can't change ICAO codes while still connected");
m_ownAircraftIcaoCode = ownAircraft.getAircraftIcaoCode(); m_ownAircraftIcaoCode = ownAircraft.getAircraftIcaoCode();
m_ownAirlineIcaoCode = ownAircraft.getAirlineIcaoCode(); m_ownAirlineIcaoCode = ownAircraft.getAirlineIcaoCode();
m_ownLiveryDescription = ownAircraft.getLivery().getDescription(); m_ownLiveryDescription = removeColon(ownAircraft.getModel().getSwiftLiveryString());
updateOwnIcaoCodes(m_ownAircraftIcaoCode, m_ownAirlineIcaoCode); updateOwnIcaoCodes(m_ownAircraftIcaoCode, m_ownAirlineIcaoCode);
} }
@@ -740,9 +740,9 @@ namespace BlackCore
void CNetworkVatlib::sendAircraftInfo(const CCallsign &callsign) // private void CNetworkVatlib::sendAircraftInfo(const CCallsign &callsign) // private
{ {
const QByteArray acTypeICAObytes = toFSD(m_ownAircraftIcaoCode.getDesignator()); const QByteArray acTypeICAObytes = toFSDnoColon(m_ownAircraftIcaoCode.getDesignator());
const QByteArray airlineICAObytes = toFSD(m_ownAirlineIcaoCode.getDesignator()); const QByteArray airlineICAObytes = toFSDnoColon(m_ownAirlineIcaoCode.getDesignator());
const QByteArray liverybytes = toFSD(m_ownLiveryDescription); const QByteArray liverybytes = toFSDnoColon(m_ownLiveryDescription);
VatAircraftInfo aircraftInfo {acTypeICAObytes, airlineICAObytes, liverybytes}; VatAircraftInfo aircraftInfo {acTypeICAObytes, airlineICAObytes, liverybytes};
Vat_SendAircraftInfo(m_net.data(), toFSD(callsign), &aircraftInfo); Vat_SendAircraftInfo(m_net.data(), toFSD(callsign), &aircraftInfo);
@@ -822,15 +822,13 @@ namespace BlackCore
{ {
Q_ASSERT_X(isConnected(), Q_FUNC_INFO, "Can't send to server when disconnected"); Q_ASSERT_X(isConnected(), Q_FUNC_INFO, "Can't send to server when disconnected");
const CSimulatedAircraft myAircraft(getOwnAircraft()); const CSimulatedAircraft myAircraft(getOwnAircraft());
QString modelString = myAircraft.getModel().getModelString(); const QString modelString = myAircraft.hasModelString() ? myAircraft.getModelString() : noModelString();
if (modelString.isEmpty()) { modelString = defaultModelString(); }
const QStringList data { { "0" }, const QStringList data { { "0" },
myAircraft.getAirlineIcaoCodeDesignator(), myAircraft.getAirlineIcaoCodeDesignator(),
myAircraft.getAircraftIcaoCodeDesignator(), myAircraft.getAircraftIcaoCodeDesignator(),
{ "" }, { "" }, { "" }, { "" }, { "" }, { "" }, { "" }, { "" },
myAircraft.getAircraftIcaoCombinedType(), myAircraft.getAircraftIcaoCombinedType(),
modelString removeColon(modelString)
}; };
sendCustomPacket(callsign, "FSIPIR", data); sendCustomPacket(callsign, "FSIPIR", data);
} }
@@ -846,7 +844,7 @@ namespace BlackCore
data[1] = myAircraft.getAirlineIcaoCodeDesignator(); data[1] = myAircraft.getAirlineIcaoCodeDesignator();
data[2] = myAircraft.getAircraftIcaoCodeDesignator(); data[2] = myAircraft.getAircraftIcaoCodeDesignator();
data[7] = myAircraft.getAircraftIcaoCombinedType(); data[7] = myAircraft.getAircraftIcaoCombinedType();
data[8] = myAircraft.hasModelString() ? myAircraft.getModel().getModelString() : defaultModelString(); data[8] = removeColon(myAircraft.hasModelString() ? myAircraft.getModelString() : noModelString());
this->sendCustomPacket(callsign, "FSIPI", data); this->sendCustomPacket(callsign, "FSIPI", data);
} }
@@ -1326,6 +1324,12 @@ namespace BlackCore
return this->averageOffsetTimeMs(callsign, maxLastValues, count); return this->averageOffsetTimeMs(callsign, maxLastValues, count);
} }
QString CNetworkVatlib::removeColon(const QString &candidate)
{
QString r = candidate;
return r.remove(':');
}
void CNetworkVatlib::onInfoQueryRequestReceived(VatFsdClient *, const char *callsignString, VatClientQueryType type, const char *, void *cbvar) void CNetworkVatlib::onInfoQueryRequestReceived(VatFsdClient *, const char *callsignString, VatClientQueryType type, const char *, void *cbvar)
{ {
QPointer<CNetworkVatlib> self(cbvar_cast(cbvar)); QPointer<CNetworkVatlib> self(cbvar_cast(cbvar));

View File

@@ -192,12 +192,20 @@ namespace BlackCore
static void networkLogHandler(VatSeverityLevel severity, const char *context, const char *message); static void networkLogHandler(VatSeverityLevel severity, const char *context, const char *message);
void sendCustomPacket(const BlackMisc::Aviation::CCallsign &callsign, const QString &packetId, const QStringList &data); void sendCustomPacket(const BlackMisc::Aviation::CCallsign &callsign, const QString &packetId, const QStringList &data);
//! Default model string
static const QString &defaultModelString() static const QString &defaultModelString()
{ {
static const QString dm("Cessna Skyhawk 172SP"); static const QString dm("Cessna Skyhawk 172SP");
return dm; return dm;
} }
//! Send if no model string is available
static const QString &noModelString()
{
static const QString noms("swift empty string");
return noms;
}
struct JsonPackets struct JsonPackets
{ {
static const QJsonObject &aircraftConfigRequest(); static const QJsonObject &aircraftConfigRequest();
@@ -246,6 +254,9 @@ namespace BlackCore
//! Average offset time in ms //! Average offset time in ms
qint64 averageOffsetTimeMs(const BlackMisc::Aviation::CCallsign &callsign, int maxLastValues = MaxOffseTimes) const; qint64 averageOffsetTimeMs(const BlackMisc::Aviation::CCallsign &callsign, int maxLastValues = MaxOffseTimes) const;
//! Remove colon
static QString removeColon(const QString &candidate);
//! Deletion policy for QScopedPointer //! Deletion policy for QScopedPointer
struct VatFsdClientDeleter struct VatFsdClientDeleter
{ {