From 25532497d65a8d847eddba967b1850f29848df94 Mon Sep 17 00:00:00 2001 From: Klaus Basan Date: Sat, 17 Aug 2019 15:30:35 +0200 Subject: [PATCH] Fixed FS9/FSX message handling as reported here: https://discordapp.com/channels/539048679160676382/567139633964646411/612104936574156870 --- src/plugins/simulator/fs9/simulatorfs9.cpp | 2 +- .../simulator/fsxcommon/simulatorfsxcommon.cpp | 11 ++++++++++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/src/plugins/simulator/fs9/simulatorfs9.cpp b/src/plugins/simulator/fs9/simulatorfs9.cpp index 973d6cf50..dc9fbab46 100644 --- a/src/plugins/simulator/fs9/simulatorfs9.cpp +++ b/src/plugins/simulator/fs9/simulatorfs9.cpp @@ -286,7 +286,7 @@ namespace BlackSimPlugin void CSimulatorFs9::displayTextMessage(const CTextMessage &message) const { - this->displayStatusMessage(message.asStatusMessage(true, true)); + QMetaObject::invokeMethod(m_fs9Host.data(), "sendTextMessage", Q_ARG(QString, message.asString(true, true))); } CStatusMessageList CSimulatorFs9::getInterpolationMessages(const CCallsign &callsign) const diff --git a/src/plugins/simulator/fsxcommon/simulatorfsxcommon.cpp b/src/plugins/simulator/fsxcommon/simulatorfsxcommon.cpp index 274106679..fd5d4b3b9 100644 --- a/src/plugins/simulator/fsxcommon/simulatorfsxcommon.cpp +++ b/src/plugins/simulator/fsxcommon/simulatorfsxcommon.cpp @@ -263,7 +263,16 @@ namespace BlackSimPlugin void CSimulatorFsxCommon::displayTextMessage(const CTextMessage &message) const { - this->displayStatusMessage(message.asStatusMessage(true, true)); + QByteArray m = message.asString(true, true).toLatin1().constData(); + m.append('\0'); + + SIMCONNECT_TEXT_TYPE type = SIMCONNECT_TEXT_TYPE_PRINT_BLACK; + if (message.isSupervisorMessage()) { type = SIMCONNECT_TEXT_TYPE_PRINT_RED; } + else if (message.isPrivateMessage()) { type = SIMCONNECT_TEXT_TYPE_PRINT_YELLOW; } + else if (message.isRadioMessage()) { type = SIMCONNECT_TEXT_TYPE_PRINT_GREEN; } + + const HRESULT hr = SimConnect_Text(m_hSimConnect, type, 7.5, EventTextMessage, static_cast(m.size()), m.data()); + Q_UNUSED(hr); } bool CSimulatorFsxCommon::isPhysicallyRenderedAircraft(const CCallsign &callsign) const