mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-03-24 07:55:35 +08:00
* make sure manually set model is not subject of model matching * added convenience member functions to detect manually set models
This commit is contained in:
@@ -143,7 +143,7 @@ namespace BlackCore
|
||||
if (c > 0)
|
||||
{
|
||||
// really changed something
|
||||
emit this->remoteAircraftChanged(changedAircraft);
|
||||
emit this->remoteAircraftChanged(this->getRemoteAircraft().findFirstByCallsign(changedAircraft.getCallsign()));
|
||||
}
|
||||
return c;
|
||||
}
|
||||
|
||||
@@ -87,7 +87,7 @@ namespace BlackCore
|
||||
virtual int removeRemoteAircraft(const BlackMisc::Aviation::CCallsign &callsign) = 0;
|
||||
|
||||
//! Change remote aircraft per property
|
||||
virtual int changeRemoteAircraft(const BlackMisc::Simulation::CSimulatedAircraft &changedAircraft, const BlackMisc::CPropertyIndexVariantMap &changeValues) = 0;
|
||||
virtual int changeRemoteAircraft(const BlackMisc::Simulation::CSimulatedAircraft &toChangeAircraft, const BlackMisc::CPropertyIndexVariantMap &changeValues) = 0;
|
||||
|
||||
//! Update own aircraft cockpit (usually from context)
|
||||
virtual bool updateOwnSimulatorCockpit(const BlackMisc::Aviation::CAircraft &aircraft) = 0;
|
||||
|
||||
@@ -104,6 +104,16 @@ namespace BlackMisc
|
||||
this->m_icao.updateMissingParts(model.getIcao());
|
||||
}
|
||||
|
||||
bool CAircraftModel::hasQueriedModelString() const
|
||||
{
|
||||
return this->m_modelType == TypeQueriedFromNetwork && this->hasModelString();
|
||||
}
|
||||
|
||||
bool CAircraftModel::hasManuallySetString() const
|
||||
{
|
||||
return this->m_modelType == TypeManuallySet && this->hasModelString();
|
||||
}
|
||||
|
||||
bool CAircraftModel::matchesModelString(const QString &modelString, Qt::CaseSensitivity sensitivity) const
|
||||
{
|
||||
if (sensitivity == Qt::CaseSensitive)
|
||||
|
||||
@@ -120,7 +120,10 @@ namespace BlackMisc
|
||||
void updateMissingParts(const CAircraftModel &model);
|
||||
|
||||
//! Queried model string?
|
||||
bool hasQueriedModelString() const { return this->m_modelType == TypeQueriedFromNetwork && this->hasModelString(); }
|
||||
bool hasQueriedModelString() const;
|
||||
|
||||
//! Model string which was manually set
|
||||
bool hasManuallySetString() const;
|
||||
|
||||
//! Non empty model string
|
||||
bool hasModelString() const { return !m_modelString.isEmpty(); }
|
||||
|
||||
@@ -79,10 +79,10 @@ namespace BlackMisc
|
||||
return this->contains(&CSimulatedAircraft::getCallsign, callsign);
|
||||
}
|
||||
|
||||
int CSimulatedAircraftList::incrementalUpdateOrAdd(const CSimulatedAircraft &changedAircraft, const CPropertyIndexVariantMap &changedValues)
|
||||
int CSimulatedAircraftList::incrementalUpdateOrAdd(const CSimulatedAircraft &toChangeAircraft, const CPropertyIndexVariantMap &changedValues)
|
||||
{
|
||||
int c;
|
||||
const CCallsign cs = changedAircraft.getCallsign();
|
||||
const CCallsign cs = toChangeAircraft.getCallsign();
|
||||
if (this->containsCallsign(cs))
|
||||
{
|
||||
if (changedValues.isEmpty()) { return 0; }
|
||||
@@ -91,7 +91,16 @@ namespace BlackMisc
|
||||
else
|
||||
{
|
||||
c = 1;
|
||||
this->push_back(changedAircraft);
|
||||
if (changedValues.isEmpty())
|
||||
{
|
||||
this->push_back(toChangeAircraft);
|
||||
}
|
||||
else
|
||||
{
|
||||
CSimulatedAircraft addAircraft(toChangeAircraft);
|
||||
addAircraft.apply(changedValues);
|
||||
this->push_back(addAircraft);
|
||||
}
|
||||
}
|
||||
return c;
|
||||
}
|
||||
|
||||
@@ -48,7 +48,7 @@ namespace BlackMisc
|
||||
bool containsCallsign(const BlackMisc::Aviation::CCallsign &callsign) const;
|
||||
|
||||
//! Incremental update or add aircraft
|
||||
int incrementalUpdateOrAdd(const BlackMisc::Simulation::CSimulatedAircraft &changedAircraft, const BlackMisc::CPropertyIndexVariantMap &changedValues);
|
||||
int incrementalUpdateOrAdd(const BlackMisc::Simulation::CSimulatedAircraft &toChangeAircraft, const BlackMisc::CPropertyIndexVariantMap &changedValues);
|
||||
|
||||
//! All pilots (with valid data)
|
||||
BlackMisc::Network::CUserList getPilots() const;
|
||||
|
||||
@@ -202,15 +202,15 @@ namespace BlackSimPlugin
|
||||
return m_remoteAircraft.removeIf(&CSimulatedAircraft::getCallsign, callsign);
|
||||
}
|
||||
|
||||
int CSimulatorFsx::changeRemoteAircraft(const CSimulatedAircraft &changedAircraft, const CPropertyIndexVariantMap &changedValues)
|
||||
int CSimulatorFsx::changeRemoteAircraft(const CSimulatedAircraft &toChangeAircraft, const CPropertyIndexVariantMap &changedValues)
|
||||
{
|
||||
// EXPERIMENTAL VERSION
|
||||
|
||||
const CCallsign callsign = changedAircraft.getCallsign();
|
||||
int c = m_remoteAircraft.incrementalUpdateOrAdd(changedAircraft, changedValues);
|
||||
const CCallsign callsign = toChangeAircraft.getCallsign();
|
||||
int c = m_remoteAircraft.incrementalUpdateOrAdd(toChangeAircraft, changedValues);
|
||||
if (c == 0) { return 0; } // nothing was changed
|
||||
const CSimulatedAircraft aircraftAfterChanges = m_remoteAircraft.findFirstByCallsign(callsign);
|
||||
const QString modelBefore = changedAircraft.getModel().getModelString();
|
||||
const QString modelBefore = toChangeAircraft.getModel().getModelString();
|
||||
const QString modelAfter = aircraftAfterChanges.getModel().getModelString();
|
||||
if (modelBefore != modelAfter)
|
||||
{
|
||||
@@ -218,7 +218,7 @@ namespace BlackSimPlugin
|
||||
removeRemoteAircraft(m_simConnectObjects.value(callsign));
|
||||
}
|
||||
|
||||
if (changedAircraft.isEnabled() && !m_simConnectObjects.contains(callsign))
|
||||
if (toChangeAircraft.isEnabled() && !m_simConnectObjects.contains(callsign))
|
||||
{
|
||||
addRemoteAircraft(aircraftAfterChanges);
|
||||
}
|
||||
@@ -760,6 +760,15 @@ namespace BlackSimPlugin
|
||||
|
||||
CAircraftModel CSimulatorFsx::modelMatching(const CSimulatedAircraft &remoteAircraft)
|
||||
{
|
||||
|
||||
// Manually set string?
|
||||
if (remoteAircraft.getModel().hasManuallySetString())
|
||||
{
|
||||
// manual set model
|
||||
return remoteAircraft.getModel();
|
||||
}
|
||||
|
||||
// default model
|
||||
CAircraftModel aircraftModel(remoteAircraft); // set defaults
|
||||
|
||||
// mapper ready?
|
||||
|
||||
@@ -117,7 +117,7 @@ namespace BlackSimPlugin
|
||||
virtual int removeRemoteAircraft(const BlackMisc::Aviation::CCallsign &callsign) override;
|
||||
|
||||
//! \copydoc ISimulator::changeRemoteAircraft
|
||||
virtual int changeRemoteAircraft(const BlackMisc::Simulation::CSimulatedAircraft &changedAircraft, const BlackMisc::CPropertyIndexVariantMap &changeValues) override;
|
||||
virtual int changeRemoteAircraft(const BlackMisc::Simulation::CSimulatedAircraft &toChangeAircraft, const BlackMisc::CPropertyIndexVariantMap &changeValues) override;
|
||||
|
||||
//! \copydoc ISimulator::getSimulatorInfo()
|
||||
virtual BlackSim::CSimulatorInfo getSimulatorInfo() const override;
|
||||
|
||||
Reference in New Issue
Block a user