mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-04-04 08:36:52 +08:00
refactor: Remove airport view
This commit is contained in:
@@ -103,10 +103,6 @@ namespace swift::simplugin::flightgear
|
||||
const QString &icao, const QString &modelString, const QString &name,
|
||||
const QString &description);
|
||||
|
||||
//! Airports in range are updated
|
||||
void airportsInRangeUpdated(const QStringList &icaoCodes, const QStringList &names, const QList<double> &lats,
|
||||
const QList<double> &lons, const QList<double> &alts);
|
||||
|
||||
public slots:
|
||||
//! Get Flightgear version number
|
||||
int getVersionNumber();
|
||||
|
||||
@@ -356,8 +356,6 @@ namespace swift::simplugin::flightgear
|
||||
setSimulatorDetails("Flightgear", {}, "");
|
||||
connect(m_serviceProxy, &CFGSwiftBusServiceProxy::aircraftModelChanged, this,
|
||||
&CSimulatorFlightgear::emitOwnAircraftModelChanged);
|
||||
connect(m_serviceProxy, &CFGSwiftBusServiceProxy::airportsInRangeUpdated, this,
|
||||
&CSimulatorFlightgear::setAirportsInRange);
|
||||
connect(m_trafficProxy, &CFGSwiftBusTrafficProxy::simFrame, this, &CSimulatorFlightgear::updateRemoteAircraft);
|
||||
connect(m_trafficProxy, &CFGSwiftBusTrafficProxy::remoteAircraftAdded, this,
|
||||
&CSimulatorFlightgear::onRemoteAircraftAdded);
|
||||
@@ -432,36 +430,6 @@ namespace swift::simplugin::flightgear
|
||||
m_serviceProxy->addTextMessage(message.getSenderCallsign().toQString() + ": " + message.getMessage());
|
||||
}
|
||||
|
||||
void CSimulatorFlightgear::setAirportsInRange(const QStringList &icaos, const QStringList &names,
|
||||
const CSequence<double> &lats, const CSequence<double> &lons,
|
||||
const CSequence<double> &alts)
|
||||
{
|
||||
//! \todo restrict to maxAirportsInRange()
|
||||
m_airportsInRange.clear();
|
||||
auto icaoIt = icaos.begin();
|
||||
auto nameIt = names.begin();
|
||||
auto latIt = lats.begin();
|
||||
auto lonIt = lons.begin();
|
||||
auto altIt = alts.begin();
|
||||
for (; icaoIt != icaos.end() && nameIt != names.end() && latIt != lats.end() && lonIt != lons.end() &&
|
||||
altIt != alts.end();
|
||||
++icaoIt, ++nameIt, ++latIt, ++lonIt, ++altIt)
|
||||
{
|
||||
m_airportsInRange.push_back({ *icaoIt,
|
||||
{ CLatitude(*latIt, CAngleUnit::deg()), CLongitude(*lonIt, CAngleUnit::deg()),
|
||||
CAltitude(*altIt, CLengthUnit::m()) },
|
||||
*nameIt });
|
||||
}
|
||||
}
|
||||
|
||||
CAirportList CSimulatorFlightgear::getAirportsInRange(bool recalculateDistance) const
|
||||
{
|
||||
if (!recalculateDistance) { return m_airportsInRange; }
|
||||
CAirportList airports(m_airportsInRange);
|
||||
airports.calculcateAndUpdateRelativeDistanceAndBearing(this->getOwnAircraftPosition());
|
||||
return airports;
|
||||
}
|
||||
|
||||
bool CSimulatorFlightgear::isPhysicallyRenderedAircraft(const CCallsign &callsign) const
|
||||
{
|
||||
return m_flightgearAircraftObjects.contains(callsign);
|
||||
|
||||
@@ -131,7 +131,6 @@ namespace swift::simplugin::flightgear
|
||||
const swift::misc::CIdentifier &originator) override;
|
||||
virtual void displayStatusMessage(const swift::misc::CStatusMessage &message) const override;
|
||||
virtual void displayTextMessage(const swift::misc::network::CTextMessage &message) const override;
|
||||
virtual swift::misc::aviation::CAirportList getAirportsInRange(bool recalculateDistance) const override;
|
||||
virtual bool isPhysicallyRenderedAircraft(const swift::misc::aviation::CCallsign &callsign) const override;
|
||||
virtual swift::misc::aviation::CCallsignSet physicallyRenderedAircraft() const override;
|
||||
virtual void unload() override;
|
||||
@@ -171,9 +170,6 @@ namespace swift::simplugin::flightgear
|
||||
|
||||
using QDoubleList = QList<double>;
|
||||
|
||||
void setAirportsInRange(const QStringList &icaoCodes, const QStringList &names,
|
||||
const swift::misc::CSequence<double> &lats, const swift::misc::CSequence<double> &lons,
|
||||
const swift::misc::CSequence<double> &alts);
|
||||
void emitOwnAircraftModelChanged(const QString &path, const QString &filename, const QString &livery,
|
||||
const QString &icao, const QString &modelString, const QString &name,
|
||||
const QString &description);
|
||||
@@ -234,7 +230,6 @@ namespace swift::simplugin::flightgear
|
||||
QTimer m_slowTimer;
|
||||
QTimer m_airportUpdater;
|
||||
QTimer m_pendingAddedTimer;
|
||||
swift::misc::aviation::CAirportList m_airportsInRange; //!< aiports in range of own aircraft
|
||||
swift::misc::CData<swift::misc::simulation::data::TModelSetCacheFG> m_modelSet {
|
||||
this
|
||||
}; //!< Flightgear model set
|
||||
|
||||
@@ -58,25 +58,4 @@ namespace swift::simplugin::fscommon
|
||||
this->emitSimulatorCombinedStatus();
|
||||
return r;
|
||||
}
|
||||
|
||||
CAirportList CSimulatorFsCommon::getAirportsInRange(bool recalculateDistance) const
|
||||
{
|
||||
if (!m_airportsInRangeFromSimulator.isEmpty())
|
||||
{
|
||||
CAirportList airports = m_airportsInRangeFromSimulator;
|
||||
if (recalculateDistance)
|
||||
{
|
||||
airports.calculcateAndUpdateRelativeDistanceAndBearing(this->getOwnAircraftPosition());
|
||||
}
|
||||
return airports;
|
||||
}
|
||||
return ISimulator::getAirportsInRange(recalculateDistance);
|
||||
}
|
||||
|
||||
void CSimulatorFsCommon::onSwiftDbAirportsRead()
|
||||
{
|
||||
const CAirportList webServiceAirports = this->getWebServiceAirports();
|
||||
if (!webServiceAirports.isEmpty()) { m_airportsInRangeFromSimulator.updateMissingParts(webServiceAirports); }
|
||||
ISimulator::onSwiftDbAirportsRead();
|
||||
}
|
||||
} // namespace swift::simplugin::fscommon
|
||||
|
||||
@@ -32,7 +32,6 @@ namespace swift::simplugin::fscommon
|
||||
// ---------------------- ISimulator ------------------
|
||||
virtual bool disconnectFrom() override;
|
||||
virtual bool isPaused() const override { return m_simPaused; }
|
||||
virtual swift::misc::aviation::CAirportList getAirportsInRange(bool recalculateDistance) const override;
|
||||
// ---------------------- ISimulator ------------------
|
||||
|
||||
protected:
|
||||
@@ -45,9 +44,6 @@ namespace swift::simplugin::fscommon
|
||||
//! Init the internal objects
|
||||
virtual void initSimulatorInternals() override;
|
||||
|
||||
//! When swift DB data are read
|
||||
virtual void onSwiftDbAirportsRead() override;
|
||||
|
||||
//! \copydoc swift::core::ISimulator::reset
|
||||
virtual void reset() override;
|
||||
|
||||
@@ -58,7 +54,6 @@ namespace swift::simplugin::fscommon
|
||||
0; //!< own aircraft updates, even with 50 updates/sec long enough even for 32bit
|
||||
int m_skipCockpitUpdateCycles = 0; //!< skip some update cycles to allow changes in simulator cockpit to be set
|
||||
bool m_simPaused = false; //!< simulator paused?
|
||||
swift::misc::aviation::CAirportList m_airportsInRangeFromSimulator; //!< airports in range of own aircraft
|
||||
|
||||
// cockpit as set in SIM
|
||||
swift::misc::aviation::CComSystem m_simCom1; //!< cockpit COM1 state in simulator
|
||||
|
||||
@@ -2211,39 +2211,6 @@ namespace swift::simplugin::fsxcommon
|
||||
return ok;
|
||||
}
|
||||
|
||||
void CSimulatorFsxCommon::triggerUpdateAirports(const CAirportList &airports)
|
||||
{
|
||||
if (this->isShuttingDownOrDisconnected()) { return; }
|
||||
if (airports.isEmpty()) { return; }
|
||||
QPointer<CSimulatorFsxCommon> myself(this);
|
||||
QTimer::singleShot(0, this, [=] {
|
||||
if (!myself) { return; }
|
||||
this->updateAirports(airports);
|
||||
});
|
||||
}
|
||||
|
||||
void CSimulatorFsxCommon::updateAirports(const CAirportList &airports)
|
||||
{
|
||||
if (airports.isEmpty()) { return; }
|
||||
|
||||
static const CLength maxDistance(200.0, CLengthUnit::NM());
|
||||
const CCoordinateGeodetic posAircraft(this->getOwnAircraftPosition());
|
||||
|
||||
for (const CAirport &airport : airports)
|
||||
{
|
||||
CAirport consolidatedAirport(airport);
|
||||
const CLength d = consolidatedAirport.calculcateAndUpdateRelativeDistanceAndBearing(posAircraft);
|
||||
if (d > maxDistance) { continue; }
|
||||
consolidatedAirport.updateMissingParts(this->getWebServiceAirport(airport.getIcao()));
|
||||
m_airportsInRangeFromSimulator.replaceOrAddByIcao(consolidatedAirport);
|
||||
if (m_airportsInRangeFromSimulator.size() > this->maxAirportsInRange())
|
||||
{
|
||||
m_airportsInRangeFromSimulator.sortByDistanceToReferencePosition();
|
||||
m_airportsInRangeFromSimulator.truncate(this->maxAirportsInRange());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
bool CSimulatorFsxCommon::sendRemoteAircraftPartsToSimulator(const CSimConnectObject &simObject,
|
||||
const CAircraftParts &parts)
|
||||
{
|
||||
|
||||
@@ -461,12 +461,6 @@ namespace swift::simplugin::fsxcommon
|
||||
bool updateRemoteAircraftParts(const CSimConnectObject &simObject,
|
||||
const swift::misc::simulation::CInterpolationResult &result, bool forcedUpdate);
|
||||
|
||||
//! Calling CSimulatorFsxCommon::updateAirports
|
||||
void triggerUpdateAirports(const swift::misc::aviation::CAirportList &airports);
|
||||
|
||||
//! Update airports from simulator
|
||||
void updateAirports(const swift::misc::aviation::CAirportList &airports);
|
||||
|
||||
//! Send parts to simulator
|
||||
//! \remark does not send if there is no change
|
||||
bool sendRemoteAircraftPartsToSimulator(const CSimConnectObject &simObject,
|
||||
|
||||
@@ -368,32 +368,6 @@ namespace swift::simplugin::fsxcommon
|
||||
}
|
||||
break; // SIMCONNECT_RECV_ID_SIMOBJECT_DATA
|
||||
}
|
||||
case SIMCONNECT_RECV_ID_AIRPORT_LIST:
|
||||
{
|
||||
const SIMCONNECT_RECV_AIRPORT_LIST *pAirportList = static_cast<SIMCONNECT_RECV_AIRPORT_LIST *>(pData);
|
||||
CAirportList simAirports;
|
||||
for (unsigned i = 0; i < pAirportList->dwArraySize; ++i)
|
||||
{
|
||||
const SIMCONNECT_DATA_FACILITY_AIRPORT *pFacilityAirport = pAirportList->rgData + i;
|
||||
if (!pFacilityAirport) { break; }
|
||||
const QString icao(pFacilityAirport->Icao);
|
||||
if (icao.isEmpty()) { continue; } // airfield without ICAO code
|
||||
if (!CAirportIcaoCode::isValidIcaoDesignator(icao, true))
|
||||
{
|
||||
continue;
|
||||
} // tiny airfields/strips in simulator
|
||||
if (CAirportIcaoCode::containsNumbers(icao)) { continue; } // tiny airfields/strips in simulator
|
||||
const CCoordinateGeodetic pos(pFacilityAirport->Latitude, pFacilityAirport->Longitude,
|
||||
pFacilityAirport->Altitude);
|
||||
const CAirport airport(CAirportIcaoCode(icao), pos);
|
||||
simAirports.push_back(airport);
|
||||
}
|
||||
if (!simAirports.isEmpty())
|
||||
{
|
||||
simulatorFsxP3D->triggerUpdateAirports(simAirports); // real "work" outside SimConnectProc
|
||||
}
|
||||
break; // SIMCONNECT_RECV_ID_AIRPORT_LIST
|
||||
}
|
||||
case SIMCONNECT_RECV_ID_CLIENT_DATA:
|
||||
{
|
||||
if (!simulatorFsxP3D->m_useSbOffsets) { break; }
|
||||
|
||||
@@ -498,8 +498,6 @@ namespace swift::simplugin::xplane
|
||||
setSimulatorDetails("X-Plane", {}, xplaneVersion);
|
||||
connect(m_serviceProxy, &CXSwiftBusServiceProxy::aircraftModelChanged, this,
|
||||
&CSimulatorXPlane::emitOwnAircraftModelChanged);
|
||||
connect(m_serviceProxy, &CXSwiftBusServiceProxy::airportsInRangeUpdated, this,
|
||||
&CSimulatorXPlane::setAirportsInRange);
|
||||
m_serviceProxy->updateAirportsInRange();
|
||||
connect(m_trafficProxy, &CXSwiftBusTrafficProxy::simFrame, this, &CSimulatorXPlane::updateRemoteAircraft);
|
||||
connect(m_trafficProxy, &CXSwiftBusTrafficProxy::remoteAircraftAdded, this,
|
||||
@@ -606,36 +604,6 @@ namespace swift::simplugin::xplane
|
||||
color.redF(), color.greenF(), color.blueF());
|
||||
}
|
||||
|
||||
void CSimulatorXPlane::setAirportsInRange(const QStringList &icaos, const QStringList &names,
|
||||
const CSequence<double> &lats, const CSequence<double> &lons,
|
||||
const CSequence<double> &alts)
|
||||
{
|
||||
//! \todo restrict to maxAirportsInRange()
|
||||
m_airportsInRange.clear();
|
||||
auto icaoIt = icaos.begin();
|
||||
auto nameIt = names.begin();
|
||||
auto latIt = lats.begin();
|
||||
auto lonIt = lons.begin();
|
||||
auto altIt = alts.begin();
|
||||
for (; icaoIt != icaos.end() && nameIt != names.end() && latIt != lats.end() && lonIt != lons.end() &&
|
||||
altIt != alts.end();
|
||||
++icaoIt, ++nameIt, ++latIt, ++lonIt, ++altIt)
|
||||
{
|
||||
m_airportsInRange.push_back({ *icaoIt,
|
||||
{ CLatitude(*latIt, CAngleUnit::deg()), CLongitude(*lonIt, CAngleUnit::deg()),
|
||||
CAltitude(*altIt, CLengthUnit::m()) },
|
||||
*nameIt });
|
||||
}
|
||||
}
|
||||
|
||||
CAirportList CSimulatorXPlane::getAirportsInRange(bool recalculateDistance) const
|
||||
{
|
||||
if (!recalculateDistance) { return m_airportsInRange; }
|
||||
CAirportList airports(m_airportsInRange);
|
||||
airports.calculcateAndUpdateRelativeDistanceAndBearing(this->getOwnAircraftPosition());
|
||||
return airports;
|
||||
}
|
||||
|
||||
bool CSimulatorXPlane::isPhysicallyRenderedAircraft(const CCallsign &callsign) const
|
||||
{
|
||||
return m_xplaneAircraftObjects.contains(callsign);
|
||||
|
||||
@@ -135,7 +135,6 @@ namespace swift::simplugin::xplane
|
||||
const swift::misc::CIdentifier &originator) override;
|
||||
virtual void displayStatusMessage(const swift::misc::CStatusMessage &message) const override;
|
||||
virtual void displayTextMessage(const swift::misc::network::CTextMessage &message) const override;
|
||||
virtual swift::misc::aviation::CAirportList getAirportsInRange(bool recalculateDistance) const override;
|
||||
virtual bool isPhysicallyRenderedAircraft(const swift::misc::aviation::CCallsign &callsign) const override;
|
||||
virtual swift::misc::aviation::CCallsignSet physicallyRenderedAircraft() const override;
|
||||
virtual bool followAircraft(const swift::misc::aviation::CCallsign &callsign) override;
|
||||
@@ -188,9 +187,6 @@ namespace swift::simplugin::xplane
|
||||
using QDoubleList = QList<double>;
|
||||
using QBoolList = QList<bool>;
|
||||
|
||||
void setAirportsInRange(const QStringList &icaoCodes, const QStringList &names,
|
||||
const swift::misc::CSequence<double> &lats, const swift::misc::CSequence<double> &lons,
|
||||
const swift::misc::CSequence<double> &alts);
|
||||
void emitOwnAircraftModelChanged(const QString &path, const QString &filename, const QString &livery,
|
||||
const QString &icao, const QString &modelString, const QString &name,
|
||||
const QString &description);
|
||||
@@ -284,7 +280,6 @@ namespace swift::simplugin::xplane
|
||||
unsigned int m_fastTimerCalls = 0; //!< how often called
|
||||
unsigned int m_slowTimerCalls = 0; //!< how often called
|
||||
|
||||
swift::misc::aviation::CAirportList m_airportsInRange; //!< aiports in range of own aircraft
|
||||
CXPlaneMPAircraftObjects m_xplaneAircraftObjects; //!< XPlane multiplayer aircraft
|
||||
|
||||
swift::misc::simulation::CSimulatedAircraftList m_pendingToBeAddedAircraft; //!< aircraft to be added
|
||||
|
||||
@@ -86,10 +86,6 @@ namespace swift::simplugin::xplane
|
||||
const QString &icao, const QString &modelString, const QString &name,
|
||||
const QString &description);
|
||||
|
||||
//! Airports in range are updated
|
||||
void airportsInRangeUpdated(const QStringList &icaoCodes, const QStringList &names, const QList<double> &lats,
|
||||
const QList<double> &lons, const QList<double> &alts);
|
||||
|
||||
//! Scenery was loaded
|
||||
void sceneryLoaded();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user