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)
{
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 = ownAircraft.getLivery().getDescription();
m_ownAircraftIcaoCode = ownAircraft.getAircraftIcaoCode();
m_ownAirlineIcaoCode = ownAircraft.getAirlineIcaoCode();
m_ownLiveryDescription = removeColon(ownAircraft.getModel().getSwiftLiveryString());
updateOwnIcaoCodes(m_ownAircraftIcaoCode, m_ownAirlineIcaoCode);
}
@@ -740,9 +740,9 @@ namespace BlackCore
void CNetworkVatlib::sendAircraftInfo(const CCallsign &callsign) // private
{
const QByteArray acTypeICAObytes = toFSD(m_ownAircraftIcaoCode.getDesignator());
const QByteArray airlineICAObytes = toFSD(m_ownAirlineIcaoCode.getDesignator());
const QByteArray liverybytes = toFSD(m_ownLiveryDescription);
const QByteArray acTypeICAObytes = toFSDnoColon(m_ownAircraftIcaoCode.getDesignator());
const QByteArray airlineICAObytes = toFSDnoColon(m_ownAirlineIcaoCode.getDesignator());
const QByteArray liverybytes = toFSDnoColon(m_ownLiveryDescription);
VatAircraftInfo aircraftInfo {acTypeICAObytes, airlineICAObytes, liverybytes};
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");
const CSimulatedAircraft myAircraft(getOwnAircraft());
QString modelString = myAircraft.getModel().getModelString();
if (modelString.isEmpty()) { modelString = defaultModelString(); }
const QString modelString = myAircraft.hasModelString() ? myAircraft.getModelString() : noModelString();
const QStringList data { { "0" },
myAircraft.getAirlineIcaoCodeDesignator(),
myAircraft.getAircraftIcaoCodeDesignator(),
{ "" }, { "" }, { "" }, { "" },
myAircraft.getAircraftIcaoCombinedType(),
modelString
removeColon(modelString)
};
sendCustomPacket(callsign, "FSIPIR", data);
}
@@ -846,7 +844,7 @@ namespace BlackCore
data[1] = myAircraft.getAirlineIcaoCodeDesignator();
data[2] = myAircraft.getAircraftIcaoCodeDesignator();
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);
}
@@ -1326,6 +1324,12 @@ namespace BlackCore
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)
{
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);
void sendCustomPacket(const BlackMisc::Aviation::CCallsign &callsign, const QString &packetId, const QStringList &data);
//! Default model string
static const QString &defaultModelString()
{
static const QString dm("Cessna Skyhawk 172SP");
return dm;
}
//! Send if no model string is available
static const QString &noModelString()
{
static const QString noms("swift empty string");
return noms;
}
struct JsonPackets
{
static const QJsonObject &aircraftConfigRequest();
@@ -246,6 +254,9 @@ namespace BlackCore
//! Average offset time in ms
qint64 averageOffsetTimeMs(const BlackMisc::Aviation::CCallsign &callsign, int maxLastValues = MaxOffseTimes) const;
//! Remove colon
static QString removeColon(const QString &candidate);
//! Deletion policy for QScopedPointer
struct VatFsdClientDeleter
{