mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-04-18 03:15:34 +08:00
feat: Add ICAOEQ capability to FSD client
This commit is contained in:
@@ -168,7 +168,10 @@ namespace BlackCore::Fsd
|
||||
Stealth = (1 << 8),
|
||||
|
||||
/*! Aircraft Config */
|
||||
AircraftConfig = (1 << 9)
|
||||
AircraftConfig = (1 << 9),
|
||||
|
||||
/*! Process aircraft ICAO in flightplan as ICAO equipment code (e.g. B737/M-SDE2E3FGHIRWXY/LB1) */
|
||||
IcaoEquipment = (1 << 10)
|
||||
};
|
||||
|
||||
//! @{
|
||||
|
||||
@@ -33,7 +33,7 @@ namespace BlackCore::Fsd
|
||||
//! @{
|
||||
//! Properties
|
||||
FlightType m_flightType {};
|
||||
QString m_aircraftIcaoType;
|
||||
QString m_aircraftIcaoType; //!< Contains the full equipment string in FAA or ICAO format, depending on the server
|
||||
int m_trueCruisingSpeed = 0;
|
||||
QString m_depAirport;
|
||||
int m_estimatedDepTime = 0;
|
||||
|
||||
@@ -706,11 +706,21 @@ namespace BlackCore::Fsd
|
||||
const QString alt = flightPlan.getCruiseAltitude().asFpVatsimAltitudeString();
|
||||
// const QString alt = flightPlan.getCruiseAltitude().asFpAltitudeString();
|
||||
|
||||
QString act = flightPlan.getCombinedPrefixIcaoSuffix();
|
||||
if (act.isEmpty()) { act = flightPlan.getAircraftIcao().getDesignator(); } // fallback
|
||||
|
||||
FlightType flightType = getFlightType(flightPlan.getFlightRules());
|
||||
|
||||
QString act;
|
||||
|
||||
if (m_server.getFsdSetup().shouldSendFlightPlanEquipmentInIcaoFormat())
|
||||
{
|
||||
act = flightPlan.getAircraftInfo().asIcaoString();
|
||||
}
|
||||
else
|
||||
{
|
||||
act = flightPlan.getAircraftInfo().asFaaString();
|
||||
}
|
||||
|
||||
Q_ASSERT_X(!act.isEmpty(), Q_FUNC_INFO, "Aircraft type must not be empty");
|
||||
|
||||
const QList<int> timePartsEnroute = flightPlan.getEnrouteTime().getHrsMinSecParts();
|
||||
const QList<int> timePartsFuel = flightPlan.getFuelTime().getHrsMinSecParts();
|
||||
const FlightPlan fp(getOwnCallsignAsString(), "SERVER", flightType, act,
|
||||
@@ -909,6 +919,7 @@ namespace BlackCore::Fsd
|
||||
if (m_capabilities & Capabilities::VisPos) responseData.push_back(toQString(Capabilities::VisPos) % "=1");
|
||||
if (m_capabilities & Capabilities::Stealth) responseData.push_back(toQString(Capabilities::Stealth) % "=1");
|
||||
if (m_capabilities & Capabilities::AircraftConfig) responseData.push_back(toQString(Capabilities::AircraftConfig) % "=1");
|
||||
if (m_capabilities & Capabilities::IcaoEquipment) responseData.push_back(toQString(Capabilities::IcaoEquipment) % "=1");
|
||||
const ClientResponse clientResponse(ownCallsign, receiver, ClientQueryType::Capabilities, responseData);
|
||||
sendQueudedMessage(clientResponse);
|
||||
}
|
||||
@@ -1382,7 +1393,7 @@ namespace BlackCore::Fsd
|
||||
const CCallsign callsign(fp.sender(), CCallsign::Aircraft);
|
||||
const CFlightPlan flightPlan(
|
||||
callsign,
|
||||
fp.m_aircraftIcaoType,
|
||||
CFlightPlanAircraftInfo(fp.m_aircraftIcaoType),
|
||||
fp.m_depAirport,
|
||||
fp.m_destAirport,
|
||||
fp.m_altAirport,
|
||||
|
||||
@@ -453,6 +453,7 @@ namespace BlackCore::Fsd
|
||||
case Capabilities::FastPos: return "FASTPOS";
|
||||
case Capabilities::Stealth: return "STEALTH";
|
||||
case Capabilities::AircraftConfig: return "ACCONFIG";
|
||||
case Capabilities::IcaoEquipment: return "ICAOEQ";
|
||||
}
|
||||
|
||||
return {};
|
||||
@@ -479,6 +480,8 @@ namespace BlackCore::Fsd
|
||||
return Capabilities::Stealth;
|
||||
else if (str == "ACCONFIG")
|
||||
return Capabilities::AircraftConfig;
|
||||
else if (str == "ICAOEQ")
|
||||
return Capabilities::IcaoEquipment;
|
||||
|
||||
return Capabilities::None;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user