diff --git a/src/blackmisc/aviation/aircraftparts.cpp b/src/blackmisc/aviation/aircraftparts.cpp index 85f4f021a..faa22826f 100644 --- a/src/blackmisc/aviation/aircraftparts.cpp +++ b/src/blackmisc/aviation/aircraftparts.cpp @@ -25,7 +25,8 @@ namespace BlackMisc QString CAircraftParts::convertToQString(bool i18n) const { return QStringLiteral("ts: ") % this->getFormattedTimestampAndOffset(true) % - QStringLiteral(" on ground: ") % BlackMisc::boolToYesNo(m_isOnGround) % + QStringLiteral(" details: ") % this->getPartsDetailsAsString() % + QStringLiteral(" | on ground: ") % BlackMisc::boolToYesNo(m_isOnGround) % QStringLiteral(" | lights: ") % m_lights.toQString(i18n) % QStringLiteral(" | gear down: ") % BlackMisc::boolToYesNo(m_gearDown) % QStringLiteral(" | flaps pct: ") % QString::number(m_flapsPercentage) % @@ -77,9 +78,26 @@ namespace BlackMisc } } parts.setEngines(engines); + parts.setPartsDetails(GuessedParts); return parts; } + const QString &CAircraftParts::partsDetailsToString(CAircraftParts::PartsDetails details) + { + static const QString guessed("guessed"); + static const QString notset("not set"); + static const QString fsd("FSD parts"); + + switch (details) + { + case GuessedParts: return guessed; + case FSDAircraftParts: return fsd; + case NotSet: break; + default: break; + } + return notset; + } + CVariant CAircraftParts::propertyByIndex(const BlackMisc::CPropertyIndex &index) const { if (index.isMyself()) { return CVariant::from(*this); } diff --git a/src/blackmisc/aviation/aircraftparts.h b/src/blackmisc/aviation/aircraftparts.h index add2876d0..fd438a5bc 100644 --- a/src/blackmisc/aviation/aircraftparts.h +++ b/src/blackmisc/aviation/aircraftparts.h @@ -48,6 +48,14 @@ namespace BlackMisc IndexOnGround }; + //! Parts Details + enum PartsDetails + { + NotSet, + FSDAircraftParts, + GuessedParts + }; + //! Default constructor CAircraftParts() {} @@ -130,6 +138,15 @@ namespace BlackMisc //! Set aircraft on ground void setOnGround(bool onGround) { m_isOnGround = onGround; } + //! Get parts details + PartsDetails getPartsDetails() const { return static_cast(m_partsDetails); } + + //! Parts details as string + const QString &getPartsDetailsAsString() const { return partsDetailsToString(this->getPartsDetails()); } + + //! Set parts details + void setPartsDetails(PartsDetails details) { m_partsDetails = static_cast(details); } + //! Guess the parts void guessParts(const CAircraftSituation &situation); @@ -142,9 +159,13 @@ namespace BlackMisc //! Guessed parts static CAircraftParts guessedParts(const CAircraftSituation &situation, bool vtol = false, int engineNumber = 4); + //! Convert to QString + static const QString &partsDetailsToString(PartsDetails details); + private: CAircraftLights m_lights; CAircraftEngineList m_engines; + int m_partsDetails = static_cast(NotSet); int m_flapsPercentage = 0; bool m_gearDown = false; bool m_spoilersOut = false; @@ -158,6 +179,7 @@ namespace BlackMisc BLACK_METAMEMBER_NAMED(spoilersOut, "spoilers_out"), BLACK_METAMEMBER_NAMED(engines, "engines"), BLACK_METAMEMBER_NAMED(isOnGround, "on_ground"), + BLACK_METAMEMBER(partsDetails, 0, DisabledForJson | DisabledForComparison), BLACK_METAMEMBER(timestampMSecsSinceEpoch, 0, DisabledForJson | DisabledForComparison), BLACK_METAMEMBER(timeOffsetMs, 0, DisabledForJson | DisabledForComparison) ); diff --git a/src/blackmisc/simulation/remoteaircraftprovider.cpp b/src/blackmisc/simulation/remoteaircraftprovider.cpp index f2d319644..2a67e73e7 100644 --- a/src/blackmisc/simulation/remoteaircraftprovider.cpp +++ b/src/blackmisc/simulation/remoteaircraftprovider.cpp @@ -257,9 +257,10 @@ namespace BlackMisc CLogMessage::preformatted(message); } - // make sure in any case right time + // make sure in any case right time and correct details parts.setCurrentUtcTime(); parts.setTimeOffsetMs(currentOffset); + parts.setPartsDetails(CAircraftParts::FSDAircraftParts); // store part history (parts always absolute) this->storeAircraftParts(callsign, parts, false);