refs #791, further improve reverse lookup

* utility function if web data are already available
* moved setOwnAircraftModel as reverseLookupAndUpdateOwnAircraftModel to CSimulatorCommon
* reverseLookupAndUpdateOwnAircraftModel also handles async lookup when data are not yet available
* removed context ps_allSwiftWebDataRead reverse lookup, done in CSimulatorCommon now
This commit is contained in:
Klaus Basan
2016-10-30 00:28:16 +02:00
parent 4478af119d
commit 4f447cd408
12 changed files with 81 additions and 37 deletions

View File

@@ -320,7 +320,7 @@ namespace BlackSimPlugin
{
MPChangePlayerPlane mpChangePlayerPlane;
MultiPlayerPacketParser::readMessage(message, mpChangePlayerPlane);
setOwnAircraftModel(mpChangePlayerPlane.aircraft_name);
reverseLookupAndUpdateOwnAircraftModel(mpChangePlayerPlane.aircraft_name);
break;
}
case CFs9Sdk::MULTIPLAYER_PACKET_ID_POSITION_VELOCITY:

View File

@@ -67,27 +67,6 @@ namespace BlackSimPlugin
return m_airportsInRange;
}
void CSimulatorFsCommon::setOwnAircraftModel(const QString &modelName)
{
CAircraftModel model = getOwnAircraftModel();
model.setModelString(modelName);
this->setOwnAircraftModel(model);
}
void CSimulatorFsCommon::setOwnAircraftModel(const BlackMisc::Simulation::CAircraftModel &model)
{
if (!model.hasModelString()) { return; }
if (this->getOwnAircraftModel() != model)
{
const CAircraftModel newModel = reverseLookupModel(model);
const bool updated = this->updateOwnModel(newModel); // update in provider (normally the context)
if (updated)
{
emit this->ownAircraftModelChanged(this->getOwnAircraftModel());
}
}
}
bool CSimulatorFsCommon::changeRemoteAircraftModel(const CSimulatedAircraft &aircraft)
{
// remove upfront, and then enable / disable again

View File

@@ -66,12 +66,6 @@ namespace BlackSimPlugin
BlackMisc::Aviation::CComSystem m_simCom1; //!< cockpit COM1 state in simulator
BlackMisc::Aviation::CComSystem m_simCom2; //!< cockpit COM2 state in simulator
BlackMisc::Aviation::CTransponder m_simTransponder; //!< cockpit xpdr state in simulator
//! Set own model
void setOwnAircraftModel(const BlackMisc::Simulation::CAircraftModel &model);
//! Set own model
void setOwnAircraftModel(const QString &modelName);
};
} // namespace
} // namespace

View File

@@ -172,7 +172,7 @@ namespace BlackSimPlugin
CAircraftModel model;
model.setModelString(dataDefinitionModel->title);
model.setModelType(CAircraftModel::TypeOwnSimulatorModel);
simulatorFsx->setOwnAircraftModel(model);
simulatorFsx->reverseLookupAndUpdateOwnAircraftModel(model);
break;
}
case CSimConnectDefinitions::RequestSimEnvironment:

View File

@@ -310,9 +310,7 @@ namespace BlackSimPlugin
model.setFileName(path + "/" + filename);
model.setLivery(CLivery("XPLANE." + livery, airlineIcaoCode, "XP livery", "", "", false));
// updated model.
// Hint: will update in own model context by using reverse lookup
emit ownAircraftModelChanged(model);
this->reverseLookupAndUpdateOwnAircraftModel(model);
}
void CSimulatorXPlane::displayStatusMessage(const BlackMisc::CStatusMessage &message) const