Ref T261, added toFullJson in parts

* needed, since the "is full" attribute needs to be added
* fixed usage in network vatlib
This commit is contained in:
Klaus Basan
2018-05-04 22:16:06 +02:00
committed by Roland Winklmeier
parent 5bf21c2937
commit ab0c34b16a
4 changed files with 32 additions and 11 deletions

View File

@@ -679,7 +679,7 @@ namespace BlackCore
void CNetworkVatlib::replyToConfigQuery(const CCallsign &callsign)
{
QJsonObject config = this->getOwnAircraftParts().toJson();
config.insert("is_full_data", true);
config.insert(CAircraftParts::attributeNameIsFullJson(), true);
QString data = QJsonDocument(QJsonObject { { "config", config } }).toJson(QJsonDocument::Compact);
data = convertToUnicodeEscaped(data);
Vat_SendAircraftConfig(m_net.data(), toFSD(callsign), toFSD(data));

View File

@@ -50,8 +50,16 @@ namespace BlackMisc
QJsonObject CAircraftParts::toIncrementalJson() const
{
QJsonObject json = this->toJson();
json.remove("is_full_data");
json.insert("is_full_data", QJsonValue(false));
json.remove(attributeNameIsFullJson());
json.insert(attributeNameIsFullJson(), QJsonValue(false));
return json;
}
QJsonObject CAircraftParts::toFullJson() const
{
QJsonObject json = this->toJson();
json.remove(attributeNameIsFullJson());
json.insert(attributeNameIsFullJson(), QJsonValue(true));
return json;
}
@@ -75,10 +83,9 @@ namespace BlackMisc
QString *details = CBuildConfig::isLocalDeveloperDebugBuild() ? &parts.m_guessingDetails : nullptr;
const bool vtol = model.isVtol();
CSpeed guessedLiftOffGs = CSpeed::null();
CSpeed guessedVRotate = CSpeed::null();
CLength guessedCG = model.getCG();
model.getAircraftIcaoCode().guessModelParameters(guessedCG, guessedLiftOffGs);
// const QChar engineType = model.getAircraftIcaoCode().getEngineTypeChar();
model.getAircraftIcaoCode().guessModelParameters(guessedCG, guessedVRotate);
// set some reasonable values
const bool isOnGround = situation.isOnGround();
@@ -101,7 +108,7 @@ namespace BlackMisc
}
}
const CSpeed slowSpeed = guessedLiftOffGs * 0.30;
const CSpeed slowSpeed = guessedVRotate * 0.30;
if (situation.getGroundSpeed() < slowSpeed)
{
if (details) { *details += QStringLiteral("slow speed <") % slowSpeed.valueRoundedWithUnit(1) % QStringLiteral(" on ground"); }
@@ -142,7 +149,7 @@ namespace BlackMisc
else if (aGroundFt < nearGround2Ft)
{
if (details) { details->prepend(QStringLiteral("2nd layer: ")); }
const bool gearDown = !isLikelyTakeOffOrClimbing && (situation.getGroundSpeed() < guessedLiftOffGs || isLikelyLanding);
const bool gearDown = !isLikelyTakeOffOrClimbing && (situation.getGroundSpeed() < guessedVRotate || isLikelyLanding);
parts.setGearDown(gearDown);
parts.setFlapsPercent(10);
}
@@ -167,9 +174,9 @@ namespace BlackMisc
{
if (!vtol)
{
const bool gearDown = situation.getGroundSpeed() < guessedLiftOffGs;
const bool gearDown = situation.getGroundSpeed() < guessedVRotate;
parts.setGearDown(gearDown);
if (details) { *details = QStringLiteral("not on ground elv., gs < ") + guessedLiftOffGs.valueRoundedWithUnit(1); }
if (details) { *details = QStringLiteral("not on ground elv., gs < ") + guessedVRotate.valueRoundedWithUnit(1); }
}
}
}
@@ -194,6 +201,12 @@ namespace BlackMisc
return notset;
}
const QString &CAircraftParts::attributeNameIsFullJson()
{
static const QString a("is_full_data");
return a;
}
CVariant CAircraftParts::propertyByIndex(const BlackMisc::CPropertyIndex &index) const
{
if (index.isMyself()) { return CVariant::from(*this); }

View File

@@ -158,8 +158,13 @@ namespace BlackMisc
QString convertToQString(bool i18n = false) const;
//! Incremental JSON object
//! \remark same as toJson, but sets \c is_full_data to \c false
QJsonObject toIncrementalJson() const;
//! Full JSON Object
//! \remark same as toJson, but sets \c is_full_data to \c true
QJsonObject toFullJson() const;
//! NULL parts object?
bool isNull() const;
@@ -172,6 +177,9 @@ namespace BlackMisc
//! Convert to QString
static const QString &partsDetailsToString(PartsDetails details);
//! Attribute name
static const QString &attributeNameIsFullJson();
private:
CAircraftLights m_lights;
CAircraftEngineList m_engines;

View File

@@ -271,7 +271,7 @@ namespace BlackMisc
void CRemoteAircraftProvider::storeAircraftParts(const CCallsign &callsign, const QJsonObject &jsonObject, int currentOffset)
{
const CSimulatedAircraft remoteAircraft(this->getAircraftInRangeForCallsign(callsign));
const bool isFull = jsonObject.value("is_full_data").toBool();
const bool isFull = jsonObject.value(CAircraftParts::attributeNameIsFullJson()).toBool();
// If we are not yet synchronized, we throw away any incremental packet
if (!remoteAircraft.hasValidCallsign()) { return; }