Ref T773, allow to update CG per model string

* needed if CG is overridden by "dot command"
* update all existing aircraft (in range) if changing CG per modelstring
* made "overriddenCGorDefault" public so it can be checked if overridden
* use overridden value in CContextSimulator::xCtxAddedRemoteAircraftReadyForModelMatching
* allow to clear overridden values
This commit is contained in:
Klaus Basan
2020-03-05 00:19:33 +01:00
committed by Mat Sutcliffe
parent 93652ccd43
commit 2999aebf37
10 changed files with 252 additions and 43 deletions

View File

@@ -611,6 +611,23 @@ namespace BlackMisc
return true;
}
CCallsignSet CRemoteAircraftProvider::updateCGForModel(const QString &modelString, const CLength &cg)
{
CCallsignSet callsigns;
if (modelString.isEmpty()) { return callsigns; }
QWriteLocker l(&m_lockAircraft);
for (CSimulatedAircraft &aircraft : m_aircraftInRange)
{
if (caseInsensitiveStringCompare(aircraft.getModelString(), modelString))
{
aircraft.setCG(cg);
callsigns.push_back(aircraft.getCallsign());
}
}
return callsigns;
}
CLength CRemoteAircraftProvider::getCGFromDB(const CCallsign &callsign) const
{
QReadLocker l(&m_lockAircraft);
@@ -996,6 +1013,12 @@ namespace BlackMisc
return this->provider()->updateCG(callsign, cg);
}
CCallsignSet CRemoteAircraftAware::updateCGForModel(const QString &modelString, const CLength &cg)
{
Q_ASSERT_X(this->provider(), Q_FUNC_INFO, "No object available");
return this->provider()->updateCGForModel(modelString, cg);
}
bool CRemoteAircraftAware::updateCGAndModelString(const CCallsign &callsign, const CLength &cg, const QString &modelString)
{
Q_ASSERT_X(this->provider(), Q_FUNC_INFO, "No object available");