mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-04-18 03:15:34 +08:00
Ref T348, FSX common improvements
- listener only logs changed messages - changed name of terrain probe object to "water drop" (other object is not available on P3D x86) - reset timestamp when adding pended Related: Ref T317 Ref T247 Ref T335
This commit is contained in:
@@ -13,6 +13,7 @@
|
|||||||
#include "blackcore/application.h"
|
#include "blackcore/application.h"
|
||||||
#include "blackmisc/network/textmessage.h"
|
#include "blackmisc/network/textmessage.h"
|
||||||
#include "blackmisc/simulation/fsx/simconnectutilities.h"
|
#include "blackmisc/simulation/fsx/simconnectutilities.h"
|
||||||
|
#include "blackmisc/simulation/fscommon/aircraftcfgparser.h"
|
||||||
#include "blackmisc/simulation/fscommon/bcdconversions.h"
|
#include "blackmisc/simulation/fscommon/bcdconversions.h"
|
||||||
#include "blackmisc/simulation/fscommon/fscommonutil.h"
|
#include "blackmisc/simulation/fscommon/fscommonutil.h"
|
||||||
#include "blackmisc/simulation/settings/simulatorsettings.h"
|
#include "blackmisc/simulation/settings/simulatorsettings.h"
|
||||||
@@ -898,9 +899,28 @@ namespace BlackSimPlugin
|
|||||||
const CSpecializedSimulatorSettings settings = this->getSimulatorSettings();
|
const CSpecializedSimulatorSettings settings = this->getSimulatorSettings();
|
||||||
const QStringList modelDirectories = settings.getModelDirectoriesFromSimulatorDirectoryOrDefault();
|
const QStringList modelDirectories = settings.getModelDirectoriesFromSimulatorDirectoryOrDefault();
|
||||||
const bool exists = CFsCommonUtil::adjustFileDirectory(model, settings.getModelDirectoriesOrDefault());
|
const bool exists = CFsCommonUtil::adjustFileDirectory(model, settings.getModelDirectoriesOrDefault());
|
||||||
Q_UNUSED(exists);
|
|
||||||
|
|
||||||
const CStatusMessageList messages = model.verifyModelData();
|
CStatusMessageList messages;
|
||||||
|
if (exists)
|
||||||
|
{
|
||||||
|
// we can access the aircraft.cfg file
|
||||||
|
bool parsed = false;
|
||||||
|
const CAircraftCfgEntriesList entries = CAircraftCfgParser::performParsingOfSingleFile(model.getFileName(), parsed, messages);
|
||||||
|
if (parsed && !entries.containsTitle(model.getModelString()))
|
||||||
|
{
|
||||||
|
messages.push_back(CStatusMessage(this).warning("Model '%1' no longer in file '%2'. Models are: %3") << model.getModelString());
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
messages.push_back(CStatusMessage(this).warning("Cannot parse file: '%1'") << model.getFileName());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
messages = model.verifyModelData();
|
||||||
|
}
|
||||||
|
|
||||||
|
// as single message
|
||||||
return messages.toSingleMessage();
|
return messages.toSingleMessage();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -908,6 +928,7 @@ namespace BlackSimPlugin
|
|||||||
{
|
{
|
||||||
CSimConnectObject &simObject = m_simConnectObjects[remoteAircraftIn.getCallsign()];
|
CSimConnectObject &simObject = m_simConnectObjects[remoteAircraftIn.getCallsign()];
|
||||||
simObject.setConfirmedAdded(true);
|
simObject.setConfirmedAdded(true);
|
||||||
|
CLogMessage(this).info("Probe: '%1' confirmed, %2") << simObject.getCallsignAsString() << simObject.toQString();
|
||||||
|
|
||||||
// trigger new adding from pending if any
|
// trigger new adding from pending if any
|
||||||
if (!m_addPendingAircraft.isEmpty())
|
if (!m_addPendingAircraft.isEmpty())
|
||||||
@@ -1011,11 +1032,11 @@ namespace BlackSimPlugin
|
|||||||
CStatusMessage msg;
|
CStatusMessage msg;
|
||||||
if (!simObject.getAircraftModelString().isEmpty() && simObject.getAddingDirectlyRemoved() < ThresholdAddedAndDirectlyRemoved)
|
if (!simObject.getAircraftModelString().isEmpty() && simObject.getAddingDirectlyRemoved() < ThresholdAddedAndDirectlyRemoved)
|
||||||
{
|
{
|
||||||
const CInterpolationAndRenderingSetupPerCallsign setup = this->getInterpolationSetupPerCallsignOrDefault(callsign);
|
|
||||||
simObject.increaseAddingDirectlyRemoved();
|
simObject.increaseAddingDirectlyRemoved();
|
||||||
m_addPendingAircraft.insert(simObject, true); // insert and update ts
|
m_addPendingAircraft.insert(simObject, true); // insert removed objects and update ts
|
||||||
m_simConnectObjects.removeByOtherSimObject(simObject); // we have it in pending now, no need to keep it in this list
|
m_simConnectObjects.removeByOtherSimObject(simObject); // we have it in pending now, no need to keep it in this list
|
||||||
|
|
||||||
|
const CInterpolationAndRenderingSetupPerCallsign setup = this->getInterpolationSetupPerCallsignOrDefault(callsign);
|
||||||
msg = CLogMessage(this).warning("Aircraft removed, '%1' '%2' object id '%3' out of reality bubble or other reason. Interpolator: '%4'")
|
msg = CLogMessage(this).warning("Aircraft removed, '%1' '%2' object id '%3' out of reality bubble or other reason. Interpolator: '%4'")
|
||||||
<< callsign.toQString() << simObject.getAircraftModelString()
|
<< callsign.toQString() << simObject.getAircraftModelString()
|
||||||
<< objectID << simObject.getInterpolatorInfo(setup.getInterpolatorMode());
|
<< objectID << simObject.getInterpolatorInfo(setup.getInterpolatorMode());
|
||||||
@@ -1293,6 +1314,7 @@ namespace BlackSimPlugin
|
|||||||
{
|
{
|
||||||
CSimConnectObject &addPendingObj = m_addPendingAircraft[newRemoteAircraft.getCallsign()];
|
CSimConnectObject &addPendingObj = m_addPendingAircraft[newRemoteAircraft.getCallsign()];
|
||||||
addPendingObj.setAircraft(newRemoteAircraft);
|
addPendingObj.setAircraft(newRemoteAircraft);
|
||||||
|
addPendingObj.resetTimestampToNow();
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1349,7 +1371,8 @@ namespace BlackSimPlugin
|
|||||||
// static const QString modelString("OrcaWhale");
|
// static const QString modelString("OrcaWhale");
|
||||||
// static const QString modelString("Water Drop");
|
// static const QString modelString("Water Drop");
|
||||||
// static const QString modelString("A321ACA");
|
// static const QString modelString("A321ACA");
|
||||||
static const QString modelString("AI_Tracker_Object_0");
|
// static const QString modelString("AI_Tracker_Object_0");
|
||||||
|
static const QString modelString("Water Drop");
|
||||||
static const QString pseudoCallsign("PROBE%1"); // max 12 chars
|
static const QString pseudoCallsign("PROBE%1"); // max 12 chars
|
||||||
static const CCountry ctry("SW", "SWIFT");
|
static const CCountry ctry("SW", "SWIFT");
|
||||||
static const CAirlineIcaoCode swiftAirline("SWI", "swift probe", ctry, "SWIFT", false, false);
|
static const CAirlineIcaoCode swiftAirline("SWI", "swift probe", ctry, "SWIFT", false, false);
|
||||||
@@ -2342,7 +2365,14 @@ namespace BlackSimPlugin
|
|||||||
simListener->m_simConnectVersion = QString("%1.%2.%3.%4").arg(event->dwSimConnectVersionMajor).arg(event->dwSimConnectVersionMinor).arg(event->dwSimConnectBuildMajor).arg(event->dwSimConnectBuildMinor);
|
simListener->m_simConnectVersion = QString("%1.%2.%3.%4").arg(event->dwSimConnectVersionMajor).arg(event->dwSimConnectVersionMinor).arg(event->dwSimConnectBuildMajor).arg(event->dwSimConnectBuildMinor);
|
||||||
simListener->m_simulatorName = CSimulatorFsxCommon::fsxCharToQString(event->szApplicationName);
|
simListener->m_simulatorName = CSimulatorFsxCommon::fsxCharToQString(event->szApplicationName);
|
||||||
simListener->m_simulatorDetails = QString("Name: '%1' Version: %2 SimConnect: %3").arg(simListener->m_simulatorName, simListener->m_simulatorVersion, simListener->m_simConnectVersion);
|
simListener->m_simulatorDetails = QString("Name: '%1' Version: %2 SimConnect: %3").arg(simListener->m_simulatorName, simListener->m_simulatorVersion, simListener->m_simConnectVersion);
|
||||||
CLogMessage(static_cast<CSimulatorFsxCommonListener *>(nullptr)).info("Connect to %1: '%2'") << simListener->getPluginInfo().getIdentifier() << simListener->backendInfo();
|
const CStatusMessage msg = CStatusMessage(simListener).info("Connect to %1: '%2'") << simListener->getPluginInfo().getIdentifier() << simListener->backendInfo();
|
||||||
|
|
||||||
|
// avoid the same message over and over again
|
||||||
|
if (msg.getMessage() != simListener->m_lastMessage.getMessage())
|
||||||
|
{
|
||||||
|
CLogMessage::preformatted(msg);
|
||||||
|
simListener->m_lastMessage = msg;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case SIMCONNECT_RECV_ID_EXCEPTION: break;
|
case SIMCONNECT_RECV_ID_EXCEPTION: break;
|
||||||
|
|||||||
@@ -539,7 +539,7 @@ namespace BlackSimPlugin
|
|||||||
|
|
||||||
// objects
|
// objects
|
||||||
CSimConnectObjects m_simConnectObjectsPositionAndPartsTraces; //!< position/parts received, but object not yet added, excluded, disabled etc.
|
CSimConnectObjects m_simConnectObjectsPositionAndPartsTraces; //!< position/parts received, but object not yet added, excluded, disabled etc.
|
||||||
CSimConnectObjects m_addPendingAircraft; //!< aircraft awaiting to be added;
|
CSimConnectObjects m_addPendingAircraft; //!< aircraft/probes awaiting to be added;
|
||||||
SIMCONNECT_DATA_REQUEST_ID m_requestIdSimObjAircraft = static_cast<SIMCONNECT_DATA_REQUEST_ID>(RequestSimObjAircraftStart); //!< request id, use obtainRequestIdForSimObjAircraft to get id
|
SIMCONNECT_DATA_REQUEST_ID m_requestIdSimObjAircraft = static_cast<SIMCONNECT_DATA_REQUEST_ID>(RequestSimObjAircraftStart); //!< request id, use obtainRequestIdForSimObjAircraft to get id
|
||||||
SIMCONNECT_DATA_REQUEST_ID m_requestIdSimObjTerrainProbe = static_cast<SIMCONNECT_DATA_REQUEST_ID>(RequestSimObjTerrainProbeStart); //!< request id, use obtainRequestIdForSimObjTerrainProbe to get id
|
SIMCONNECT_DATA_REQUEST_ID m_requestIdSimObjTerrainProbe = static_cast<SIMCONNECT_DATA_REQUEST_ID>(RequestSimObjTerrainProbeStart); //!< request id, use obtainRequestIdForSimObjTerrainProbe to get id
|
||||||
QTimer m_addPendingSimObjTimer; //!< updating of SimObjects awaiting to be added
|
QTimer m_addPendingSimObjTimer; //!< updating of SimObjects awaiting to be added
|
||||||
@@ -591,6 +591,7 @@ namespace BlackSimPlugin
|
|||||||
QString m_simConnectVersion;
|
QString m_simConnectVersion;
|
||||||
QString m_simulatorName;
|
QString m_simulatorName;
|
||||||
QString m_simulatorDetails;
|
QString m_simulatorDetails;
|
||||||
|
BlackMisc::CStatusMessage m_lastMessage; //!< last listener message
|
||||||
|
|
||||||
//! SimConnect Callback (simplified version for listener)
|
//! SimConnect Callback (simplified version for listener)
|
||||||
//! \sa CSimConnectObjects::SimConnectProc
|
//! \sa CSimConnectObjects::SimConnectProc
|
||||||
|
|||||||
Reference in New Issue
Block a user