diff --git a/src/blackcore/aircraftmatcher.cpp b/src/blackcore/aircraftmatcher.cpp index 9fd8bc021..40bdc30d6 100644 --- a/src/blackcore/aircraftmatcher.cpp +++ b/src/blackcore/aircraftmatcher.cpp @@ -665,6 +665,21 @@ namespace BlackCore m_statistics.addAircraftAirlineCombination(type, sessionId, m_modelSetInfo, description, aircraftIcao, airlineIcao); } + void CAircraftMatcher::addingRemoteModelFailed(const CSimulatedAircraft &remoteAircraft) + { + if (!m_setup.removeFromSetIfFailed()) { return; } + if (remoteAircraft.hasCallsign() && remoteAircraft.hasModelString()) + { + const QString modelString = remoteAircraft.getModelString(); + const int r = m_modelSet.removeModelWithString(modelString, Qt::CaseInsensitive); + if (r > 0) + { + CLogMessage(this).warning("Removed model '%1' from matching model set") << modelString; + m_removedModels.insert(modelString); + } + } + } + CAircraftModelList CAircraftMatcher::getClosestMatchStepwiseReduceImplementation(const CAircraftModelList &modelSet, const CAircraftMatcherSetup &setup, const CSimulatedAircraft &remoteAircraft, CStatusMessageList *log) { CAircraftModelList matchedModels(modelSet); diff --git a/src/blackcore/aircraftmatcher.h b/src/blackcore/aircraftmatcher.h index 3c75bf871..5f7725442 100644 --- a/src/blackcore/aircraftmatcher.h +++ b/src/blackcore/aircraftmatcher.h @@ -24,6 +24,7 @@ #include #include #include +#include namespace BlackMisc { @@ -175,6 +176,9 @@ namespace BlackCore //! Evaluate if a statistics entry makes sense and add it void evaluateStatisticsEntry(const QString &sessionId, const BlackMisc::Aviation::CCallsign &callsign, const QString &aircraftIcao, const QString &airlineIcao, const QString &livery); + //! Adding a model failed + void addingRemoteModelFailed(const BlackMisc::Simulation::CSimulatedAircraft &remoteAircraft); + signals: //! Setup changed void setupChanged(); @@ -261,6 +265,7 @@ namespace BlackCore BlackMisc::Simulation::CSimulatorInfo m_simulator; //!< simulator (optional) BlackMisc::Simulation::CMatchingStatistics m_statistics; //!< matching statistics QString m_modelSetInfo; //!< info string + QSet m_removedModels; //!< models have been removed }; } // namespace diff --git a/src/blackcore/context/contextsimulatorimpl.cpp b/src/blackcore/context/contextsimulatorimpl.cpp index d2f508e78..955e19345 100644 --- a/src/blackcore/context/contextsimulatorimpl.cpp +++ b/src/blackcore/context/contextsimulatorimpl.cpp @@ -663,6 +663,7 @@ namespace BlackCore void CContextSimulator::onAddingRemoteAircraftFailed(const CSimulatedAircraft &remoteAircraft, bool disabled, const CStatusMessage &message) { if (!this->isSimulatorAvailable()) { return; } + if (disabled) { m_aircraftMatcher.addingRemoteModelFailed(remoteAircraft); } emit this->addingRemoteModelFailed(remoteAircraft, disabled, message); }