Skip to content

Commit

Permalink
Added transponder code to user and AI aircraft. Now showing in toolti…
Browse files Browse the repository at this point in the history
…ps, information and map.

Fetching transponder code for all simulators now.
Increased data version to 11 to force incompatibility.
Added transponder code option to aircraft labels.
Aircraft label settings are now reset back to default.
#525
  • Loading branch information
albar965 committed May 11, 2021
1 parent 7b24067 commit d37f774
Show file tree
Hide file tree
Showing 11 changed files with 137 additions and 98 deletions.
3 changes: 2 additions & 1 deletion src/common/constants.h
Original file line number Diff line number Diff line change
Expand Up @@ -253,7 +253,8 @@ const QLatin1Literal OPTIONS_DIALOG_FLIGHTPLAN_PROCEDURE_COLOR("OptionsDialog/Fl
const QLatin1Literal OPTIONS_DIALOG_FLIGHTPLAN_ACTIVE_COLOR("OptionsDialog/FlightplanActiveColor");
const QLatin1Literal OPTIONS_DIALOG_FLIGHTPLAN_PASSED_COLOR("OptionsDialog/FlightplanPassedColor");
const QLatin1Literal OPTIONS_DIALOG_TRAIL_COLOR("OptionsDialog/TrailColor");
const QLatin1Literal OPTIONS_DIALOG_DISPLAY_OPTIONS("OptionsDialog/DisplayOptions");
const QLatin1Literal OPTIONS_DIALOG_DISPLAY_OPTIONS_USER_AIRCRAFT("OptionsDialog/DisplayOptionsuserAircraft");
const QLatin1Literal OPTIONS_DIALOG_DISPLAY_OPTIONS_AI_AIRCRAFT("OptionsDialog/DisplayOptionsAiAircraft");
const QLatin1Literal OPTIONS_DIALOG_DISPLAY_OPTIONS_AIRPORT("OptionsDialog/DisplayOptionsAirport");
const QLatin1Literal OPTIONS_DIALOG_DISPLAY_OPTIONS_COMPASS_ROSE("OptionsDialog/DisplayOptionsCompassRose");
const QLatin1Literal OPTIONS_DIALOG_DISPLAY_OPTIONS_MEASUREMENT("OptionsDialog/DisplayOptionsMeasurement");
Expand Down
19 changes: 7 additions & 12 deletions src/common/htmlinfobuilder.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -3041,21 +3041,18 @@ void HtmlInfoBuilder::aircraftText(const atools::fs::sc::SimConnectAircraft& air
else
html.row2(tr("Number:"), locale.toString(aircraft.getObjectId() + 1));

if(!aircraft.getAirplaneAirline().isEmpty())
html.row2(tr("Airline:"), aircraft.getAirplaneAirline());
html.row2If(tr("Airline:"), aircraft.getAirplaneAirline());

if(!aircraft.getAirplaneFlightnumber().isEmpty())
html.row2(tr("Flight Number:"), aircraft.getAirplaneFlightnumber());
html.row2If(tr("Flight Number:"), aircraft.getAirplaneFlightnumber());

if(!aircraft.getAirplaneModel().isEmpty())
html.row2(tr("Type:"), aircraft.getAirplaneModel()); // BE58
html.row2If(tr("Transponder Code:"), aircraft.getTransponderCodeStr());

html.row2If(tr("Type:"), aircraft.getAirplaneModel()); // BE58

if(!aircraft.getAirplaneRegistration().isEmpty())
html.row2(tr("Registration:"), aircraft.getAirplaneRegistration()); // ASXGS
html.row2If(tr("Registration:"), aircraft.getAirplaneRegistration()); // ASXGS

QString model = map::aircraftType(aircraft);
if(!model.isEmpty())
html.row2(tr("Model:"), model); // Beechcraft
html.row2If(tr("Model:"), model); // Beechcraft

if(aircraft.isAnyBoat())
{
Expand Down Expand Up @@ -3153,8 +3150,6 @@ void HtmlInfoBuilder::aircraftOnlineText(const atools::fs::sc::SimConnectAircraf
else
html.row2If(tr("Cruising Level:"), alt);

html.row2If(tr("Transponder Code:"), onlineRec.valueStr("transponder_code"));

float range = onlineRec.valueFloat("visual_range");
if(range > 0.f && range < map::INVALID_ALTITUDE_VALUE)
html.row2If(tr("Visual Range:"), Unit::distNm(range));
Expand Down
1 change: 1 addition & 0 deletions src/connect/connectclient.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -235,6 +235,7 @@ void ConnectClient::disconnectedFromSimulatorDirect()
/* Posts data received directly from simconnect or the socket and caches any metar reports */
void ConnectClient::postSimConnectData(atools::fs::sc::SimConnectData dataPacket)
{
// AI list does not include user aircraft
atools::fs::sc::SimConnectUserAircraft& userAircraft = dataPacket.getUserAircraft();

// Workaround for MSFS sending wrong positions around 0/0 while in menu
Expand Down
12 changes: 9 additions & 3 deletions src/mappainter/mappainter.h
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,8 @@ struct PaintContext
// Same for procedure preview
QSet<map::MapObjectRef> routeProcIdMap;

optsd::DisplayOptions dispOpts;
optsac::DisplayOptionsUserAircraft dispOptsUser;
optsac::DisplayOptionsAiAircraft dispOptsAi;
optsd::DisplayOptionsAirport dispOptsAirport;
optsd::DisplayOptionsRose dispOptsRose;
optsd::DisplayOptionsMeasurement dispOptsMeasurement;
Expand Down Expand Up @@ -153,9 +154,14 @@ struct PaintContext
return queryOverflow;
}

bool dOpt(optsd::DisplayOption opts) const
bool dOptUserAc(optsac::DisplayOptionUserAircraft opts) const
{
return dispOpts.testFlag(opts);
return dispOptsUser.testFlag(opts);
}

bool dOptAiAc(optsac::DisplayOptionAiAircraft opts) const
{
return dispOptsAi.testFlag(opts);
}

bool dOptAp(optsd::DisplayOptionAirport opts) const
Expand Down
2 changes: 1 addition & 1 deletion src/mappainter/mappainteraircraft.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -128,7 +128,7 @@ void MapPainterAircraft::render()
paintUserAircraft(userAircraft, x, y);
}

if(context->dOpt(optsd::ITEM_USER_AIRCRAFT_WIND_POINTER))
if(context->dOptUserAc(optsac::ITEM_USER_AIRCRAFT_WIND_POINTER))
paintWindPointer(userAircraft, context->painter->device()->width() / 2, 0);
}
}
Expand Down
68 changes: 38 additions & 30 deletions src/mappainter/mappaintervehicle.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -113,7 +113,7 @@ void MapPainterVehicle::paintUserAircraft(const SimConnectUserAircraft& userAirc
context->szFont(context->textSizeAircraftUser);
int offset = -(size / 2);

if(context->dOpt(optsd::ITEM_USER_AIRCRAFT_TRACK_LINE) &&
if(context->dOptUserAc(optsac::ITEM_USER_AIRCRAFT_TRACK_LINE) &&
userAircraft.getGroundSpeedKts() > 30 &&
userAircraft.getTrackDegTrue() < atools::fs::sc::SC_INVALID_FLOAT)
{
Expand Down Expand Up @@ -176,18 +176,19 @@ void MapPainterVehicle::paintTextLabelAi(float x, float y, int size,
(aircraft.isOnline() && context->mapLayer->isOnlineAircraftText()) || // All online
forceLabel) // Force label for nearby aircraft
{
appendAtcText(texts, aircraft, context->dOpt(optsd::ITEM_AI_AIRCRAFT_REGISTRATION),
context->dOpt(optsd::ITEM_AI_AIRCRAFT_TYPE),
context->dOpt(optsd::ITEM_AI_AIRCRAFT_AIRLINE),
context->dOpt(optsd::ITEM_AI_AIRCRAFT_FLIGHT_NUMBER));
appendAtcText(texts, aircraft, context->dOptAiAc(optsac::ITEM_AI_AIRCRAFT_REGISTRATION),
context->dOptAiAc(optsac::ITEM_AI_AIRCRAFT_TYPE),
context->dOptAiAc(optsac::ITEM_AI_AIRCRAFT_AIRLINE),
context->dOptAiAc(optsac::ITEM_AI_AIRCRAFT_FLIGHT_NUMBER),
context->dOptAiAc(optsac::ITEM_AI_AIRCRAFT_TRANSPONDER_CODE));

if(aircraft.getGroundSpeedKts() > 30)
appendSpeedText(texts, aircraft,
context->dOpt(optsd::ITEM_AI_AIRCRAFT_IAS),
context->dOpt(optsd::ITEM_AI_AIRCRAFT_GS),
context->dOpt(optsd::ITEM_AI_AIRCRAFT_TAS));
context->dOptAiAc(optsac::ITEM_AI_AIRCRAFT_IAS),
context->dOptAiAc(optsac::ITEM_AI_AIRCRAFT_GS),
context->dOptAiAc(optsac::ITEM_AI_AIRCRAFT_TAS));

if(context->dOpt(optsd::ITEM_AI_AIRCRAFT_DEP_DEST) &&
if(context->dOptAiAc(optsac::ITEM_AI_AIRCRAFT_DEP_DEST) &&
(!aircraft.getFromIdent().isEmpty() || !aircraft.getToIdent().isEmpty()))
{
texts.append(tr("%1 to %2").
Expand All @@ -197,7 +198,7 @@ void MapPainterVehicle::paintTextLabelAi(float x, float y, int size,

if(!aircraft.isOnGround())
{
if(context->dOpt(optsd::ITEM_AI_AIRCRAFT_HEADING))
if(context->dOptAiAc(optsac::ITEM_AI_AIRCRAFT_HEADING))
{
float heading = atools::fs::sc::SC_INVALID_FLOAT;
if(aircraft.getHeadingDegMag() < atools::fs::sc::SC_INVALID_FLOAT)
Expand All @@ -210,13 +211,13 @@ void MapPainterVehicle::paintTextLabelAi(float x, float y, int size,
texts.append(tr("HDG %3°M").arg(QString::number(heading, 'f', 0)));
}

if(context->dOpt(optsd::ITEM_AI_AIRCRAFT_CLIMB_SINK))
if(context->dOptAiAc(optsac::ITEM_AI_AIRCRAFT_CLIMB_SINK))
appendClimbSinkText(texts, aircraft);

if(context->dOpt(optsd::ITEM_AI_AIRCRAFT_ALTITUDE))
if(context->dOptAiAc(optsac::ITEM_AI_AIRCRAFT_ALTITUDE))
{
QString upDown;
if(!context->dOpt(optsd::ITEM_AI_AIRCRAFT_CLIMB_SINK))
if(!context->dOptAiAc(optsac::ITEM_AI_AIRCRAFT_CLIMB_SINK))
climbSinkPointer(upDown, aircraft);
texts.append(tr("ALT %1%2").arg(Unit::altFeet(aircraft.getPosition().getAltitude())).arg(upDown));
}
Expand All @@ -235,42 +236,45 @@ void MapPainterVehicle::paintTextLabelUser(float x, float y, int size,
{
QStringList texts;

appendAtcText(texts, aircraft, context->dOpt(optsd::ITEM_USER_AIRCRAFT_REGISTRATION),
context->dOpt(optsd::ITEM_USER_AIRCRAFT_TYPE),
context->dOpt(optsd::ITEM_USER_AIRCRAFT_AIRLINE),
context->dOpt(optsd::ITEM_USER_AIRCRAFT_FLIGHT_NUMBER));
appendAtcText(texts, aircraft, context->dOptUserAc(optsac::ITEM_USER_AIRCRAFT_REGISTRATION),
context->dOptUserAc(optsac::ITEM_USER_AIRCRAFT_TYPE),
context->dOptUserAc(optsac::ITEM_USER_AIRCRAFT_AIRLINE),
context->dOptUserAc(optsac::ITEM_USER_AIRCRAFT_FLIGHT_NUMBER),
context->dOptUserAc(optsac::ITEM_USER_AIRCRAFT_TRANSPONDER_CODE));

if(aircraft.getGroundSpeedKts() > 30)
{
appendSpeedText(texts, aircraft,
context->dOpt(optsd::ITEM_USER_AIRCRAFT_IAS),
context->dOpt(optsd::ITEM_USER_AIRCRAFT_GS),
context->dOpt(optsd::ITEM_USER_AIRCRAFT_TAS));
context->dOptUserAc(optsac::ITEM_USER_AIRCRAFT_IAS),
context->dOptUserAc(optsac::ITEM_USER_AIRCRAFT_GS),
context->dOptUserAc(optsac::ITEM_USER_AIRCRAFT_TAS));
}

if(context->dOpt(optsd::ITEM_USER_AIRCRAFT_HEADING) && aircraft.getHeadingDegMag() < atools::fs::sc::SC_INVALID_FLOAT)
if(context->dOptUserAc(optsac::ITEM_USER_AIRCRAFT_HEADING) &&
aircraft.getHeadingDegMag() < atools::fs::sc::SC_INVALID_FLOAT)
texts.append(tr("HDG %3°M").arg(QString::number(aircraft.getHeadingDegMag(), 'f', 0)));

if(!aircraft.isOnGround() && context->dOpt(optsd::ITEM_USER_AIRCRAFT_CLIMB_SINK))
if(!aircraft.isOnGround() && context->dOptUserAc(optsac::ITEM_USER_AIRCRAFT_CLIMB_SINK))
appendClimbSinkText(texts, aircraft);

if(!aircraft.isOnGround() && (context->dOpt(optsd::ITEM_USER_AIRCRAFT_ALTITUDE) ||
context->dOpt(optsd::ITEM_USER_AIRCRAFT_INDICATED_ALTITUDE)))
if(!aircraft.isOnGround() && (context->dOptUserAc(optsac::ITEM_USER_AIRCRAFT_ALTITUDE) ||
context->dOptUserAc(optsac::ITEM_USER_AIRCRAFT_INDICATED_ALTITUDE)))
{
QString upDown;
if(!context->dOpt(optsd::ITEM_USER_AIRCRAFT_CLIMB_SINK))
if(!context->dOptUserAc(optsac::ITEM_USER_AIRCRAFT_CLIMB_SINK))
climbSinkPointer(upDown, aircraft);

if(context->dOpt(optsd::ITEM_USER_AIRCRAFT_ALTITUDE) && context->dOpt(optsd::ITEM_USER_AIRCRAFT_INDICATED_ALTITUDE))
if(context->dOptUserAc(optsac::ITEM_USER_AIRCRAFT_ALTITUDE) &&
context->dOptUserAc(optsac::ITEM_USER_AIRCRAFT_INDICATED_ALTITUDE))
{
texts.append(tr("ALT %1, IND %2%3").
arg(Unit::altFeet(aircraft.getPosition().getAltitude())).
arg(Unit::altFeet(aircraft.getIndicatedAltitudeFt())).
arg(upDown));
}
else if(context->dOpt(optsd::ITEM_USER_AIRCRAFT_ALTITUDE))
else if(context->dOptUserAc(optsac::ITEM_USER_AIRCRAFT_ALTITUDE))
texts.append(tr("%1%2").arg(Unit::altFeet(aircraft.getPosition().getAltitude())).arg(upDown));
else if(context->dOpt(optsd::ITEM_USER_AIRCRAFT_INDICATED_ALTITUDE))
else if(context->dOptUserAc(optsac::ITEM_USER_AIRCRAFT_INDICATED_ALTITUDE))
texts.append(tr("%1%2").arg(Unit::altFeet(aircraft.getIndicatedAltitudeFt())).arg(upDown));
}

Expand Down Expand Up @@ -308,7 +312,8 @@ void MapPainterVehicle::appendClimbSinkText(QStringList& texts, const SimConnect
}

void MapPainterVehicle::appendAtcText(QStringList& texts, const SimConnectAircraft& aircraft,
bool registration, bool type, bool airline, bool flightnumber)
bool registration, bool type, bool airline, bool flightnumber,
bool transponderCode)
{
QStringList line;
if(registration)
Expand All @@ -334,6 +339,9 @@ void MapPainterVehicle::appendAtcText(QStringList& texts, const SimConnectAircra

if(!line.isEmpty())
texts.append(line.join(tr(" / ")));

if(transponderCode && aircraft.isTransponderCodeValid())
texts.append(tr("TCAS %1").arg(aircraft.getTransponderCodeStr()));
}

void MapPainterVehicle::appendSpeedText(QStringList& texts, const SimConnectAircraft& aircraft,
Expand Down Expand Up @@ -375,7 +383,7 @@ void MapPainterVehicle::paintTextLabelWind(int x, int y, int size,
textatt::TextAttributes atts = textatt::ROUTE_BG_COLOR;
if(aircraft.getWindSpeedKts() >= 1.f)
{
if(context->dOpt(optsd::ITEM_USER_AIRCRAFT_WIND))
if(context->dOptUserAc(optsac::ITEM_USER_AIRCRAFT_WIND))
{
texts.append(tr("%1 °M").arg(QString::number(atools::geo::normalizeCourse(
aircraft.getWindDirectionDegT() - aircraft.getMagVarDeg()),
Expand Down
2 changes: 1 addition & 1 deletion src/mappainter/mappaintervehicle.h
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ class MapPainterVehicle :
bool forceLabel);
void appendClimbSinkText(QStringList& texts, const atools::fs::sc::SimConnectAircraft& aircraft);
void appendAtcText(QStringList& texts, const atools::fs::sc::SimConnectAircraft& aircraft,
bool registration, bool type, bool airline, bool flightnumber);
bool registration, bool type, bool airline, bool flightnumber, bool transponderCode);
void appendSpeedText(QStringList& texts, const atools::fs::sc::SimConnectAircraft& aircraft, bool ias, bool gs,
bool tas);
void climbSinkPointer(QString& upDown, const atools::fs::sc::SimConnectAircraft& aircraft);
Expand Down
3 changes: 2 additions & 1 deletion src/mappainter/mappaintlayer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -567,7 +567,8 @@ bool MapPaintLayer::render(GeoPainter *painter, ViewportParams *viewport, const
context.thicknessCompassRose = od.getDisplayThicknessCompassRose() / 100.f;
context.thicknessAirway = od.getDisplayThicknessAirway() / 100.f;

context.dispOpts = od.getDisplayOptions();
context.dispOptsUser = od.getDisplayOptionsUserAircraft();
context.dispOptsAi = od.getDisplayOptionsAiAircraft();
context.dispOptsAirport = od.getDisplayOptionsAirport();
context.dispOptsRose = od.getDisplayOptionsRose();
context.dispOptsMeasurement = od.getDisplayOptionsMeasurement();
Expand Down
54 changes: 36 additions & 18 deletions src/options/optiondata.h
Original file line number Diff line number Diff line change
Expand Up @@ -401,16 +401,16 @@ Q_DECLARE_FLAGS(FlagsWeather, FlagWeather);
Q_DECLARE_OPERATORS_FOR_FLAGS(optsw::FlagsWeather);
} // namespace opts2

namespace optsd {
namespace optsac {
/* Changing these option values will also change the saved values thus invalidating user settings */
enum DisplayOption
enum DisplayOptionUserAircraft
{
ITEM_NONE = 0,

ITEM_USER_AIRCRAFT_NONE = 0,
ITEM_USER_AIRCRAFT_REGISTRATION = 1 << 8,
ITEM_USER_AIRCRAFT_TYPE = 1 << 9,
ITEM_USER_AIRCRAFT_AIRLINE = 1 << 10,
ITEM_USER_AIRCRAFT_FLIGHT_NUMBER = 1 << 11,
ITEM_USER_AIRCRAFT_TRANSPONDER_CODE = 1 << 21,
ITEM_USER_AIRCRAFT_IAS = 1 << 12,
ITEM_USER_AIRCRAFT_GS = 1 << 13,
ITEM_USER_AIRCRAFT_CLIMB_SINK = 1 << 14,
Expand All @@ -421,12 +421,20 @@ enum DisplayOption
ITEM_USER_AIRCRAFT_TRACK_LINE = 1 << 18,
ITEM_USER_AIRCRAFT_WIND_POINTER = 1 << 19,
ITEM_USER_AIRCRAFT_TAS = 1 << 20,
};

Q_DECLARE_FLAGS(DisplayOptionsUserAircraft, DisplayOptionUserAircraft);
Q_DECLARE_OPERATORS_FOR_FLAGS(optsac::DisplayOptionsUserAircraft);

enum DisplayOptionAiAircraft
{
ITEM_AI_AIRCRAFT_NONE = 0,
ITEM_AI_AIRCRAFT_DEP_DEST = 1 << 21,
ITEM_AI_AIRCRAFT_REGISTRATION = 1 << 22,
ITEM_AI_AIRCRAFT_TYPE = 1 << 23,
ITEM_AI_AIRCRAFT_AIRLINE = 1 << 24,
ITEM_AI_AIRCRAFT_FLIGHT_NUMBER = 1 << 25,
ITEM_AI_AIRCRAFT_TRANSPONDER_CODE = 1 << 20,
ITEM_AI_AIRCRAFT_IAS = 1 << 26,
ITEM_AI_AIRCRAFT_GS = 1 << 27,
ITEM_AI_AIRCRAFT_CLIMB_SINK = 1 << 28,
Expand All @@ -435,8 +443,11 @@ enum DisplayOption
ITEM_AI_AIRCRAFT_TAS = 1 << 31
};

Q_DECLARE_FLAGS(DisplayOptions, DisplayOption);
Q_DECLARE_OPERATORS_FOR_FLAGS(optsd::DisplayOptions);
Q_DECLARE_FLAGS(DisplayOptionsAiAircraft, DisplayOptionAiAircraft);
Q_DECLARE_OPERATORS_FOR_FLAGS(optsac::DisplayOptionsAiAircraft);
}

namespace optsd {

/* Changing these option values will also change the saved values thus invalidating user settings */
enum DisplayOptionAirport
Expand Down Expand Up @@ -873,11 +884,6 @@ class OptionData
return trailColor;
}

const optsd::DisplayOptions& getDisplayOptions() const
{
return displayOptions;
}

const optsd::DisplayOptionsAirport& getDisplayOptionsAirport() const
{
return displayOptionsAirport;
Expand Down Expand Up @@ -1126,6 +1132,16 @@ class OptionData
return onlineVatsimTransceiverReload;
}

const optsac::DisplayOptionsUserAircraft& getDisplayOptionsUserAircraft() const
{
return displayOptionsUserAircraft;
}

const optsac::DisplayOptionsAiAircraft& getDisplayOptionsAiAircraft() const
{
return displayOptionsAiAircraft;
}

private:
friend class OptionsDialog;

Expand Down Expand Up @@ -1369,13 +1385,15 @@ class OptionData
opts::DisplayTrailType displayTrailType = opts::DASHED;

/* Default values are set by widget states - these are needed for the reset button */
optsd::DisplayOptions displayOptions =
optsd::ITEM_USER_AIRCRAFT_GS | optsd::ITEM_USER_AIRCRAFT_ALTITUDE |
optsd::ITEM_USER_AIRCRAFT_WIND | optsd::ITEM_USER_AIRCRAFT_TRACK_LINE |
optsd::ITEM_USER_AIRCRAFT_WIND_POINTER |
optsd::ITEM_AI_AIRCRAFT_REGISTRATION | optsd::ITEM_AI_AIRCRAFT_TYPE |
optsd::ITEM_AI_AIRCRAFT_AIRLINE | optsd::ITEM_AI_AIRCRAFT_GS |
optsd::ITEM_AI_AIRCRAFT_ALTITUDE | optsd::ITEM_AI_AIRCRAFT_DEP_DEST;
optsac::DisplayOptionsUserAircraft displayOptionsUserAircraft =
optsac::ITEM_USER_AIRCRAFT_GS | optsac::ITEM_USER_AIRCRAFT_ALTITUDE |
optsac::ITEM_USER_AIRCRAFT_WIND | optsac::ITEM_USER_AIRCRAFT_TRACK_LINE |
optsac::ITEM_USER_AIRCRAFT_WIND_POINTER;

optsac::DisplayOptionsAiAircraft displayOptionsAiAircraft =
optsac::ITEM_AI_AIRCRAFT_REGISTRATION | optsac::ITEM_AI_AIRCRAFT_TYPE |
optsac::ITEM_AI_AIRCRAFT_AIRLINE | optsac::ITEM_AI_AIRCRAFT_GS |
optsac::ITEM_AI_AIRCRAFT_ALTITUDE | optsac::ITEM_AI_AIRCRAFT_DEP_DEST;

optsd::DisplayOptionsAirport displayOptionsAirport =
optsd::ITEM_AIRPORT_NAME | optsd::ITEM_AIRPORT_TOWER | optsd::ITEM_AIRPORT_ATIS |
Expand Down
Loading

0 comments on commit d37f774

Please sign in to comment.