mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-03-22 23:05:36 +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 "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;
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user