From b6ac5cbb45c10a916efd52f178bbb01470359ff2 Mon Sep 17 00:00:00 2001 From: Klaus Basan Date: Wed, 1 Feb 2017 23:57:56 +0100 Subject: [PATCH] refs #873, added cabin and recognition light plus anyEngineOn --- src/blackmisc/aviation/aircraftenginelist.cpp | 7 ++++- src/blackmisc/aviation/aircraftenginelist.h | 5 ++-- src/blackmisc/aviation/aircraftlights.cpp | 29 ++++++++++++++++--- src/blackmisc/aviation/aircraftlights.h | 25 ++++++++++++++-- src/blackmisc/aviation/aircraftparts.cpp | 5 ++++ src/blackmisc/aviation/aircraftparts.h | 3 ++ .../fsx/simconnectdatadefinition.cpp | 7 +++-- .../simulator/fsx/simconnectdatadefinition.h | 14 +++++---- 8 files changed, 78 insertions(+), 17 deletions(-) diff --git a/src/blackmisc/aviation/aircraftenginelist.cpp b/src/blackmisc/aviation/aircraftenginelist.cpp index fa6e2c48c..d75622ed7 100644 --- a/src/blackmisc/aviation/aircraftenginelist.cpp +++ b/src/blackmisc/aviation/aircraftenginelist.cpp @@ -41,7 +41,12 @@ namespace BlackMisc bool CAircraftEngineList::isEngineOn(int engineNumber) const { - return getEngine(engineNumber).isOn(); + return this->getEngine(engineNumber).isOn(); + } + + bool CAircraftEngineList::isAnyEngineOn() const + { + return this->contains(&CAircraftEngine::isOn, true); } QJsonObject CAircraftEngineList::toJson() const diff --git a/src/blackmisc/aviation/aircraftenginelist.h b/src/blackmisc/aviation/aircraftenginelist.h index 559c88c53..19c6d0b05 100644 --- a/src/blackmisc/aviation/aircraftenginelist.h +++ b/src/blackmisc/aviation/aircraftenginelist.h @@ -53,14 +53,15 @@ namespace BlackMisc //! Engine number 1..x on? bool isEngineOn(int engineNumber) const; + //! Is any engine on? + bool isAnyEngineOn() const; + //! \copydoc BlackMisc::Mixin::JsonByMetaClass::toJson QJsonObject toJson() const; //! \copydoc BlackMisc::Mixin::JsonByMetaClass::convertFromJson void convertFromJson(const QJsonObject &json); - }; - } //namespace } // namespace diff --git a/src/blackmisc/aviation/aircraftlights.cpp b/src/blackmisc/aviation/aircraftlights.cpp index 65397050a..ebc4532df 100644 --- a/src/blackmisc/aviation/aircraftlights.cpp +++ b/src/blackmisc/aviation/aircraftlights.cpp @@ -22,24 +22,31 @@ namespace BlackMisc : m_strobeOn(strobeOn), m_landingOn(landingOn), m_taxiOn(taxiOn), m_beaconOn(beaconOn), m_navOn(navOn), m_logoOn(logoOn) { } + CAircraftLights::CAircraftLights(bool strobeOn, bool landingOn, bool taxiOn, bool beaconOn, bool navOn, bool logoOn, bool recognition, bool cabin) + : m_strobeOn(strobeOn), m_landingOn(landingOn), m_taxiOn(taxiOn), m_beaconOn(beaconOn), m_navOn(navOn), m_logoOn(logoOn), m_recognition(recognition), m_cabin(cabin) + { } + CAircraftLights CAircraftLights::allLightsOn() { - return CAircraftLights {true, true, true, true, true, true}; + return CAircraftLights {true, true, true, true, true, true, true, true}; } CAircraftLights CAircraftLights::allLightsOff() { - return CAircraftLights {false, false, false, false, false, false}; + return CAircraftLights {false, false, false, false, false, false, false, false}; } - QString CAircraftLights::convertToQString(bool /** i18n */) const + QString CAircraftLights::convertToQString(bool i18n) const { + Q_UNUSED(i18n); const QString s = QLatin1Literal("strobe: ") % boolToYesNo(m_strobeOn) % QLatin1Literal(" landing: ") % boolToYesNo(m_landingOn) % QLatin1Literal(" taxi: ") % boolToYesNo(m_taxiOn) % QLatin1Literal(" beacon: ") % boolToYesNo(m_beaconOn) % QLatin1Literal(" nav: ") % boolToYesNo(m_navOn) % - QLatin1Literal(" logo: ") % boolToYesNo(m_logoOn); + QLatin1Literal(" logo: ") % boolToYesNo(m_logoOn) % + QLatin1Literal(" recognition: ") % boolToYesNo(m_recognition) % + QLatin1Literal(" cabin: ") % boolToYesNo(m_cabin); return s; } @@ -63,6 +70,10 @@ namespace BlackMisc return CVariant::from(m_strobeOn); case IndexTaxi: return CVariant::from(m_taxiOn); + case IndexRecognition: + return CVariant::from(m_recognition); + case IndexCabin: + return CVariant::from(m_cabin); default: return CValueObject::propertyByIndex(index); } @@ -94,6 +105,12 @@ namespace BlackMisc case IndexTaxi: this->m_taxiOn = variant.toBool(); break; + case IndexCabin: + this->m_cabin = variant.toBool(); + break; + case IndexRecognition: + this->m_recognition = variant.toBool(); + break; default: CValueObject::setPropertyByIndex(index, variant); break; @@ -108,6 +125,8 @@ namespace BlackMisc m_navOn = true; m_strobeOn = true; m_taxiOn = true; + m_cabin = true; + m_recognition = true; } void CAircraftLights::setAllOff() @@ -118,6 +137,8 @@ namespace BlackMisc m_navOn = false; m_strobeOn = false; m_taxiOn = false; + m_recognition = false; + m_cabin = false; } } // namespace } // namespace diff --git a/src/blackmisc/aviation/aircraftlights.h b/src/blackmisc/aviation/aircraftlights.h index 30fab636e..5e8ca87e3 100644 --- a/src/blackmisc/aviation/aircraftlights.h +++ b/src/blackmisc/aviation/aircraftlights.h @@ -40,7 +40,9 @@ namespace BlackMisc IndexTaxi, IndexBeacon, IndexNav, - IndexLogo + IndexLogo, + IndexRecognition, + IndexCabin }; //! Default constructor @@ -52,6 +54,9 @@ namespace BlackMisc //! Constructor CAircraftLights(bool strobeOn, bool landingOn, bool taxiOn, bool beaconOn, bool navOn, bool logoOn); + //! Constructor + CAircraftLights(bool strobeOn, bool landingOn, bool taxiOn, bool beaconOn, bool navOn, bool logoOn, bool recognition, bool cabin); + //! Strobes lights on? bool isStrobeOn() const { return m_strobeOn; } @@ -88,6 +93,18 @@ namespace BlackMisc //! Set logo lights void setLogoOn(bool on) { m_logoOn = on; } + //! Recognition lights on? + bool isRecognitionOn() const { return m_recognition; } + + //! Set recognition lights + void setRecognitionOn(bool on) { m_recognition = on; } + + //! Cabin lights on? + bool isCabinOn() const { return m_cabin; } + + //! Set cabin lights + void setCabinOn(bool on) { m_cabin = on; } + //! All on void setAllOn(); @@ -116,6 +133,8 @@ namespace BlackMisc bool m_beaconOn = false; bool m_navOn = false; bool m_logoOn = false; + bool m_recognition = false; //!< not supported by aircraft config (VATSIM) + bool m_cabin = false; //!< not supported by aircraft config (VATSIM) BLACK_METACLASS( CAircraftLights, @@ -125,7 +144,9 @@ namespace BlackMisc BLACK_METAMEMBER_NAMED(taxiOn, "taxi_on"), BLACK_METAMEMBER_NAMED(beaconOn, "beacon_on"), BLACK_METAMEMBER_NAMED(navOn, "nav_on"), - BLACK_METAMEMBER_NAMED(logoOn, "logo_on") + BLACK_METAMEMBER_NAMED(logoOn, "logo_on"), + BLACK_METAMEMBER(recognition, 0, DisabledForJson), // disable since JSON is used for network + BLACK_METAMEMBER(cabin, 0, DisabledForJson) // disable since JSON is used for network ); }; } // namespace diff --git a/src/blackmisc/aviation/aircraftparts.cpp b/src/blackmisc/aviation/aircraftparts.cpp index 77dd0e21d..b2c0fc6be 100644 --- a/src/blackmisc/aviation/aircraftparts.cpp +++ b/src/blackmisc/aviation/aircraftparts.cpp @@ -134,6 +134,11 @@ namespace BlackMisc return this->m_engines.isEngineOn(number); } + bool CAircraftParts::isAnyEngineOn() const + { + return this->m_engines.isAnyEngineOn(); + } + double CAircraftParts::isOnGroundInterpolated() const { if (this->m_isOnGroundInterpolated < 0) diff --git a/src/blackmisc/aviation/aircraftparts.h b/src/blackmisc/aviation/aircraftparts.h index d3376a924..73cd2fd40 100644 --- a/src/blackmisc/aviation/aircraftparts.h +++ b/src/blackmisc/aviation/aircraftparts.h @@ -107,6 +107,9 @@ namespace BlackMisc //! Is engine with number 1..n on? bool isEngineOn(int number) const; + //! Any engine on? + bool isAnyEngineOn() const; + //! Set engines void setEngines(const CAircraftEngineList &engines) { m_engines = engines; } diff --git a/src/plugins/simulator/fsx/simconnectdatadefinition.cpp b/src/plugins/simulator/fsx/simconnectdatadefinition.cpp index fdc42cb6d..52a928279 100644 --- a/src/plugins/simulator/fsx/simconnectdatadefinition.cpp +++ b/src/plugins/simulator/fsx/simconnectdatadefinition.cpp @@ -18,7 +18,7 @@ namespace BlackSimPlugin { namespace Fsx { - CSimConnectDefinitions::CSimConnectDefinitions() { } + CSimConnectDefinitions::CSimConnectDefinitions() { } HRESULT CSimConnectDefinitions::initDataDefinitionsWhenConnected(const HANDLE hSimConnect) { @@ -105,6 +105,9 @@ namespace BlackSimPlugin hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataRemoteAircraftLights, "LIGHT BEACON", "Bool"); hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataRemoteAircraftLights, "LIGHT NAV", "Bool"); hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataRemoteAircraftLights, "LIGHT LOGO", "Bool"); + hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataRemoteAircraftLights, "LIGHT NAV", "Bool"); + hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataRemoteAircraftLights, "LIGHT RECOGNITION", "Bool"); + hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataRemoteAircraftLights, "LIGHT CABIN", "Bool"); if (hr != S_OK) { @@ -214,7 +217,7 @@ namespace BlackSimPlugin CAircraftLights DataDefinitionRemoteAircraftLights::toLights() const { - return CAircraftLights(lightStrobe, lightLanding, lightTaxi, lightBeacon, lightNav, lightLogo); + return CAircraftLights(lightStrobe, lightLanding, lightTaxi, lightBeacon, lightNav, lightLogo, lightRecognition, lightCabin); } } // namespace } // namespace diff --git a/src/plugins/simulator/fsx/simconnectdatadefinition.h b/src/plugins/simulator/fsx/simconnectdatadefinition.h index 0ce60ffe6..75b0be457 100644 --- a/src/plugins/simulator/fsx/simconnectdatadefinition.h +++ b/src/plugins/simulator/fsx/simconnectdatadefinition.h @@ -104,12 +104,14 @@ namespace BlackSimPlugin //! Data for aircraft lighs struct DataDefinitionRemoteAircraftLights { - double lightStrobe; //!< Is strobe light on? - double lightLanding; //!< Is landing light on? - double lightTaxi; //!< Is taxi light on? - double lightBeacon; //!< Is beacon light on? - double lightNav; //!< Is nav light on? - double lightLogo; //!< Is logo light on? + double lightStrobe; //!< Is strobe light on? + double lightLanding; //!< Is landing light on? + double lightTaxi; //!< Is taxi light on? + double lightBeacon; //!< Is beacon light on? + double lightNav; //!< Is nav light on? + double lightLogo; //!< Is logo light on? + double lightRecognition; //!< Is recognition light on + double lightCabin; //!< Is cabin light on //! Convert to lights BlackMisc::Aviation::CAircraftLights toLights() const;