mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-04-17 02:45:33 +08:00
Ref T129, use map of CFlightPlanRemark instead of 2 individual maps
This commit is contained in:
committed by
Mathew Sutcliffe
parent
3c24d5c7f9
commit
3de7d66e65
@@ -122,26 +122,16 @@ namespace BlackCore
|
|||||||
{
|
{
|
||||||
if (callsign.isEmpty()) { return CVoiceCapabilities(); }
|
if (callsign.isEmpty()) { return CVoiceCapabilities(); }
|
||||||
QReadLocker rl(&m_lock);
|
QReadLocker rl(&m_lock);
|
||||||
return m_voiceCapabilities.contains(callsign) ?
|
return m_flightPlanRemarks.value(callsign).getVoiceCapabilities();
|
||||||
m_voiceCapabilities[callsign] :
|
|
||||||
CVoiceCapabilities::fromVoiceCapabilities(CVoiceCapabilities::Unknown);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
QString CVatsimDataFileReader::getFlightPlanRemarksForCallsign(const CCallsign &callsign) const
|
CFlightPlanRemarks CVatsimDataFileReader::getFlightPlanRemarksForCallsign(const CCallsign &callsign) const
|
||||||
{
|
{
|
||||||
if (callsign.isEmpty()) { return QString(); }
|
if (callsign.isEmpty()) { return QString(); }
|
||||||
QReadLocker rl(&m_lock);
|
QReadLocker rl(&m_lock);
|
||||||
return m_flightPlanRemarks.value(callsign);
|
return m_flightPlanRemarks.value(callsign);
|
||||||
}
|
}
|
||||||
|
|
||||||
CFlightPlanRemarks CVatsimDataFileReader::getParsedFlightPlanRemarksForCallsign(const CCallsign &callsign) const
|
|
||||||
{
|
|
||||||
if (callsign.isEmpty()) { return CFlightPlanRemarks(); }
|
|
||||||
const QString remarks = this->getFlightPlanRemarksForCallsign(callsign);
|
|
||||||
const CVoiceCapabilities vc = this->getVoiceCapabilityForCallsign(callsign);
|
|
||||||
return CFlightPlanRemarks(remarks, vc);
|
|
||||||
}
|
|
||||||
|
|
||||||
void CVatsimDataFileReader::updateWithVatsimDataFileData(CSimulatedAircraft &aircraftToBeUdpated) const
|
void CVatsimDataFileReader::updateWithVatsimDataFileData(CSimulatedAircraft &aircraftToBeUdpated) const
|
||||||
{
|
{
|
||||||
this->getAircraft().updateWithVatsimDataFileData(aircraftToBeUdpated);
|
this->getAircraft().updateWithVatsimDataFileData(aircraftToBeUdpated);
|
||||||
@@ -239,8 +229,7 @@ namespace BlackCore
|
|||||||
CServerList fsdServers;
|
CServerList fsdServers;
|
||||||
CAtcStationList atcStations;
|
CAtcStationList atcStations;
|
||||||
CSimulatedAircraftList aircraft;
|
CSimulatedAircraftList aircraft;
|
||||||
QMap<CCallsign, CVoiceCapabilities> voiceCapabilitiesMap;
|
QMap<CCallsign, CFlightPlanRemarks> flightPlanRemarksMap;
|
||||||
QMap<CCallsign, QString> flightPlanRemarksMap;
|
|
||||||
QDateTime updateTimestampFromFile;
|
QDateTime updateTimestampFromFile;
|
||||||
|
|
||||||
QStringList clientSectionAttributes;
|
QStringList clientSectionAttributes;
|
||||||
@@ -263,7 +252,7 @@ namespace BlackCore
|
|||||||
if (clientSectionAttributes.isEmpty() && currentLine.contains("!CLIENTS SECTION", Qt::CaseInsensitive))
|
if (clientSectionAttributes.isEmpty() && currentLine.contains("!CLIENTS SECTION", Qt::CaseInsensitive))
|
||||||
{
|
{
|
||||||
// ; !CLIENTS section
|
// ; !CLIENTS section
|
||||||
int i = currentLine.lastIndexOf(' ');
|
const int i = currentLine.lastIndexOf(' ');
|
||||||
const QVector<QStringRef> attributes = currentLine.midRef(i).trimmed().split(':', QString::SkipEmptyParts);
|
const QVector<QStringRef> attributes = currentLine.midRef(i).trimmed().split(':', QString::SkipEmptyParts);
|
||||||
for (const QStringRef &attr : attributes) { clientSectionAttributes.push_back(attr.toString().trimmed().toLower()); }
|
for (const QStringRef &attr : attributes) { clientSectionAttributes.push_back(attr.toString().trimmed().toLower()); }
|
||||||
section = SectionNone; // reset
|
section = SectionNone; // reset
|
||||||
@@ -297,21 +286,17 @@ namespace BlackCore
|
|||||||
// Voice capabilities
|
// Voice capabilities
|
||||||
if (!flightPlanRemarks.isEmpty())
|
if (!flightPlanRemarks.isEmpty())
|
||||||
{
|
{
|
||||||
flightPlanRemarksMap[callsign] = flightPlanRemarks;
|
// CFlightPlanRemarks contains voice capabilities and other parsed values
|
||||||
const CVoiceCapabilities vc(flightPlanRemarks);
|
flightPlanRemarksMap[callsign] = CFlightPlanRemarks(flightPlanRemarks);
|
||||||
if (!vc.isUnknown())
|
|
||||||
{
|
|
||||||
voiceCapabilitiesMap.insert(callsign, vc);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// set as per ATC/pilot
|
// set as per ATC/pilot
|
||||||
if (clientType.startsWith('p'))
|
if (clientType.startsWith('p'))
|
||||||
{
|
{
|
||||||
// Pilot section
|
// Pilot section
|
||||||
const double groundspeedKts = clientPartsMap["groundspeed"].toDouble();
|
const double groundSpeedKts = clientPartsMap["groundspeed"].toDouble();
|
||||||
CAircraftSituation situation(position);
|
CAircraftSituation situation(position);
|
||||||
situation.setGroundSpeed(CSpeed(groundspeedKts, CSpeedUnit::kts()));
|
situation.setGroundSpeed(CSpeed(groundSpeedKts, CSpeedUnit::kts()));
|
||||||
CSimulatedAircraft currentAircraft(user.getCallsign().getStringAsSet(), user, situation);
|
CSimulatedAircraft currentAircraft(user.getCallsign().getStringAsSet(), user, situation);
|
||||||
|
|
||||||
const QString equipmentCodeAndAircraft = clientPartsMap["planned_aircraft"].trimmed();
|
const QString equipmentCodeAndAircraft = clientPartsMap["planned_aircraft"].trimmed();
|
||||||
@@ -327,7 +312,6 @@ namespace BlackCore
|
|||||||
illegalEquipmentCodes.append(equipmentCodeAndAircraft);
|
illegalEquipmentCodes.append(equipmentCodeAndAircraft);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
aircraft.push_back(currentAircraft);
|
aircraft.push_back(currentAircraft);
|
||||||
}
|
}
|
||||||
else if (clientType.startsWith('a'))
|
else if (clientType.startsWith('a'))
|
||||||
@@ -403,7 +387,6 @@ namespace BlackCore
|
|||||||
this->setUpdateTimestamp(updateTimestampFromFile);
|
this->setUpdateTimestamp(updateTimestampFromFile);
|
||||||
m_aircraft = aircraft;
|
m_aircraft = aircraft;
|
||||||
m_atcStations = atcStations;
|
m_atcStations = atcStations;
|
||||||
m_voiceCapabilities = voiceCapabilitiesMap;
|
|
||||||
m_flightPlanRemarks = flightPlanRemarksMap;
|
m_flightPlanRemarks = flightPlanRemarksMap;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -111,11 +111,7 @@ namespace BlackCore
|
|||||||
|
|
||||||
//! Flight plan remarks for callsign
|
//! Flight plan remarks for callsign
|
||||||
//! \threadsafe
|
//! \threadsafe
|
||||||
QString getFlightPlanRemarksForCallsign(const BlackMisc::Aviation::CCallsign &callsign) const;
|
BlackMisc::Aviation::CFlightPlanRemarks getFlightPlanRemarksForCallsign(const BlackMisc::Aviation::CCallsign &callsign) const;
|
||||||
|
|
||||||
//! Parsed flight plan remarks for callsign
|
|
||||||
//! \threadsafe
|
|
||||||
BlackMisc::Aviation::CFlightPlanRemarks getParsedFlightPlanRemarksForCallsign(const BlackMisc::Aviation::CCallsign &callsign) const;
|
|
||||||
|
|
||||||
//! Update aircraft with VATSIM aircraft data from data file
|
//! Update aircraft with VATSIM aircraft data from data file
|
||||||
//! \threadsafe
|
//! \threadsafe
|
||||||
@@ -159,8 +155,7 @@ namespace BlackCore
|
|||||||
BlackMisc::Simulation::CSimulatedAircraftList m_aircraft;
|
BlackMisc::Simulation::CSimulatedAircraftList m_aircraft;
|
||||||
BlackMisc::CData<BlackCore::Data::TVatsimSetup> m_lastGoodSetup { this };
|
BlackMisc::CData<BlackCore::Data::TVatsimSetup> m_lastGoodSetup { this };
|
||||||
BlackMisc::CSettingReadOnly<BlackCore::Vatsim::TVatsimDataFile> m_settings { this, &CVatsimDataFileReader::reloadSettings };
|
BlackMisc::CSettingReadOnly<BlackCore::Vatsim::TVatsimDataFile> m_settings { this, &CVatsimDataFileReader::reloadSettings };
|
||||||
QMap<BlackMisc::Aviation::CCallsign, BlackMisc::Network::CVoiceCapabilities> m_voiceCapabilities; //!< voice capabilities
|
QMap<BlackMisc::Aviation::CCallsign, BlackMisc::Aviation::CFlightPlanRemarks> m_flightPlanRemarks; //!< cache for flight plan remarks
|
||||||
QMap<BlackMisc::Aviation::CCallsign, QString> m_flightPlanRemarks; //!< cache for flight plan remarks
|
|
||||||
|
|
||||||
//! Reload the reader settings
|
//! Reload the reader settings
|
||||||
void reloadSettings();
|
void reloadSettings();
|
||||||
|
|||||||
Reference in New Issue
Block a user