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:
Klaus Basan
2018-09-14 00:18:53 +02:00
parent 0e1cf965e1
commit 42f6cd9d30
2 changed files with 38 additions and 7 deletions

View File

@@ -13,6 +13,7 @@
#include "blackcore/application.h"
#include "blackmisc/network/textmessage.h"
#include "blackmisc/simulation/fsx/simconnectutilities.h"
#include "blackmisc/simulation/fscommon/aircraftcfgparser.h"
#include "blackmisc/simulation/fscommon/bcdconversions.h"
#include "blackmisc/simulation/fscommon/fscommonutil.h"
#include "blackmisc/simulation/settings/simulatorsettings.h"
@@ -898,9 +899,28 @@ namespace BlackSimPlugin
const CSpecializedSimulatorSettings settings = this->getSimulatorSettings();
const QStringList modelDirectories = settings.getModelDirectoriesFromSimulatorDirectoryOrDefault();
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();
}
@@ -908,6 +928,7 @@ namespace BlackSimPlugin
{
CSimConnectObject &simObject = m_simConnectObjects[remoteAircraftIn.getCallsign()];
simObject.setConfirmedAdded(true);
CLogMessage(this).info("Probe: '%1' confirmed, %2") << simObject.getCallsignAsString() << simObject.toQString();
// trigger new adding from pending if any
if (!m_addPendingAircraft.isEmpty())
@@ -1011,11 +1032,11 @@ namespace BlackSimPlugin
CStatusMessage msg;
if (!simObject.getAircraftModelString().isEmpty() && simObject.getAddingDirectlyRemoved() < ThresholdAddedAndDirectlyRemoved)
{
const CInterpolationAndRenderingSetupPerCallsign setup = this->getInterpolationSetupPerCallsignOrDefault(callsign);
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
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'")
<< callsign.toQString() << simObject.getAircraftModelString()
<< objectID << simObject.getInterpolatorInfo(setup.getInterpolatorMode());
@@ -1293,6 +1314,7 @@ namespace BlackSimPlugin
{
CSimConnectObject &addPendingObj = m_addPendingAircraft[newRemoteAircraft.getCallsign()];
addPendingObj.setAircraft(newRemoteAircraft);
addPendingObj.resetTimestampToNow();
return false;
}
@@ -1349,7 +1371,8 @@ namespace BlackSimPlugin
// static const QString modelString("OrcaWhale");
// static const QString modelString("Water Drop");
// 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 CCountry ctry("SW", "SWIFT");
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_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);
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;
}
case SIMCONNECT_RECV_ID_EXCEPTION: break;

View File

@@ -539,7 +539,7 @@ namespace BlackSimPlugin
// objects
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_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
@@ -591,6 +591,7 @@ namespace BlackSimPlugin
QString m_simConnectVersion;
QString m_simulatorName;
QString m_simulatorDetails;
BlackMisc::CStatusMessage m_lastMessage; //!< last listener message
//! SimConnect Callback (simplified version for listener)
//! \sa CSimConnectObjects::SimConnectProc