diff --git a/src/plugins/simulator/fsx/simconnectdatadefinition.cpp b/src/plugins/simulator/fsx/simconnectdatadefinition.cpp index 29a48542f..72728db95 100644 --- a/src/plugins/simulator/fsx/simconnectdatadefinition.cpp +++ b/src/plugins/simulator/fsx/simconnectdatadefinition.cpp @@ -12,6 +12,7 @@ #include using namespace BlackMisc; +using namespace BlackMisc::Aviation; namespace BlackSimPlugin { @@ -81,14 +82,6 @@ namespace BlackSimPlugin // Hint: "Bool" and "Percent .." are units name // default data type is SIMCONNECT_DATATYPE_FLOAT64 -> double - // Lights - hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataRemoteAircraftParts, "LIGHT STROBE", "Bool"); - hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataRemoteAircraftParts, "LIGHT LANDING", "Bool"); - // hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataRemoteAircraftParts, "LIGHT TAXI", "Bool"); - hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataRemoteAircraftParts, "LIGHT BEACON", "Bool"); - hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataRemoteAircraftParts, "LIGHT NAV", "Bool"); - hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataRemoteAircraftParts, "LIGHT LOGO", "Bool"); - // Flaps hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataRemoteAircraftParts, "LEADING EDGE FLAPS LEFT PERCENT", "Percent Over 100"); hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataRemoteAircraftParts, "LEADING EDGE FLAPS RIGHT PERCENT", "Percent Over 100"); @@ -105,6 +98,14 @@ namespace BlackSimPlugin hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataRemoteAircraftParts, "GENERAL ENG COMBUSTION:3", "Bool"); hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataRemoteAircraftParts, "GENERAL ENG COMBUSTION:4", "Bool"); + // Lights (other definition) + hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataRemoteAircraftLights, "LIGHT STROBE", "Bool"); + hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataRemoteAircraftLights, "LIGHT LANDING", "Bool"); + hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataRemoteAircraftLights, "LIGHT TAXI", "Bool"); + 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"); + if (hr != S_OK) { CLogMessage(static_cast(nullptr)).error("SimConnect error: initRemoteAircraftSituation %1") << hr; @@ -182,14 +183,17 @@ namespace BlackSimPlugin bool DataDefinitionRemoteAircraftParts::operator==(const DataDefinitionRemoteAircraftParts &rhs) const { - return std::tie(lightBeacon, lightLanding, lightLogo, lightNav, lightStrobe, - flapsLeadingEdgeLeftPercent, flapsLeadingEdgeRightPercent, flapsTrailingEdgeLeftPercent, flapsTrailingEdgeRightPercent, + return std::tie(flapsLeadingEdgeLeftPercent, flapsLeadingEdgeRightPercent, flapsTrailingEdgeLeftPercent, flapsTrailingEdgeRightPercent, gearHandlePosition, spoilersHandlePosition, engine1Combustion, engine2Combustion, engine3Combustion, engine4Combustion) == - std::tie(rhs.lightBeacon, rhs.lightLanding, rhs.lightLogo, rhs.lightNav, rhs.lightStrobe, - rhs.flapsLeadingEdgeLeftPercent, rhs.flapsLeadingEdgeRightPercent, rhs.flapsTrailingEdgeLeftPercent, rhs.flapsTrailingEdgeRightPercent, + std::tie(rhs.flapsLeadingEdgeLeftPercent, rhs.flapsLeadingEdgeRightPercent, rhs.flapsTrailingEdgeLeftPercent, rhs.flapsTrailingEdgeRightPercent, rhs.gearHandlePosition, rhs.spoilersHandlePosition, rhs.engine1Combustion, rhs.engine2Combustion, rhs.engine3Combustion, rhs.engine4Combustion); } + + CAircraftLights DataDefinitionRemoteAircraftLights::toLights() const + { + return CAircraftLights(lightStrobe, lightLanding, lightTaxi, lightBeacon, lightNav, lightLogo); + } } // namespace } // namespace diff --git a/src/plugins/simulator/fsx/simconnectdatadefinition.h b/src/plugins/simulator/fsx/simconnectdatadefinition.h index 218b780dd..64b80182b 100644 --- a/src/plugins/simulator/fsx/simconnectdatadefinition.h +++ b/src/plugins/simulator/fsx/simconnectdatadefinition.h @@ -17,6 +17,7 @@ #ifndef NOMINMAX #define NOMINMAX #endif +#include "blackmisc/aviation/aircraftlights.h" #include #include #include @@ -76,12 +77,6 @@ namespace BlackSimPlugin //! Data struct of remote aircraft parts struct DataDefinitionRemoteAircraftParts { - 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 flapsLeadingEdgeLeftPercent; //!< Leading edge left in percent double flapsLeadingEdgeRightPercent; //!< Leading edge right in percent double flapsTrailingEdgeLeftPercent; //!< Trailing edge left in percent @@ -97,6 +92,20 @@ namespace BlackSimPlugin bool operator==(const DataDefinitionRemoteAircraftParts &rhs) const; }; + //! 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? + + //! Convert to lights + BlackMisc::Aviation::CAircraftLights toLights() const; + }; + //! Data for AI object sent back from simulator struct DataDefinitionRemoteAircraftSimData { @@ -158,6 +167,7 @@ namespace BlackSimPlugin { DataOwnAircraft, DataOwnAircraftTitle, + DataRemoteAircraftLights, DataRemoteAircraftParts, DataRemoteAircraftPosition, DataRemoteAircraftSimData,