Skip to content

Commit

Permalink
Feat: New command "Hide aircraft ahead"
Browse files Browse the repository at this point in the history
  • Loading branch information
TwinFan committed Feb 16, 2024
1 parent 1e9d850 commit 3baca08
Show file tree
Hide file tree
Showing 5 changed files with 41 additions and 0 deletions.
1 change: 1 addition & 0 deletions Include/Constants.h
Expand Up @@ -228,6 +228,7 @@ constexpr const char* REMOTE_SIGNATURE = "TwinFan.plugin.XPMP2.Remote";
#define MENU_HAVE_TCAS "TCAS controlled"
#define MENU_HAVE_TCAS_REQUSTD "TCAS controlled (requested)"
#define MENU_TOGGLE_LABELS "Labels shown"
#define MENU_TOGGLE_AC_AHEAD "Hide Aircraft ahead"
#define MENU_SETTINGS_UI "Settings..."
#define MENU_HELP "Help"
#define MENU_HELP_DOCUMENTATION "Documentation"
Expand Down
1 change: 1 addition & 0 deletions Include/DataRefs.h
Expand Up @@ -449,6 +449,7 @@ enum cmdRefsLT {
CR_AC_DISPLAYED,
CR_AC_TCAS_CONTROLLED,
CR_LABELS_TOGGLE,
CR_TOGGLE_AC_AHEAD, ///< Toggle visibility of the a/c ahead
CR_SETTINGS_UI,
CNT_CMDREFS_LT // always last, number of elements
};
Expand Down
1 change: 1 addition & 0 deletions Src/DataRefs.cpp
Expand Up @@ -684,6 +684,7 @@ struct cmdRefDescrTy {
{"LiveTraffic/Aircrafts/Display", "Starts/Stops display of live aircraft"},
{"LiveTraffic/Aircrafts/TCAS_Control", "TCAS Control toggle: Tries to take control over AI aircraft, or release it"},
{"LiveTraffic/Aircrafts/Toggle_Labels", "Toggle display of labels in current view"},
{"LiveTraffic/Aircrafts/Toggle_Ahead", "Toggle visibility of aircraft ahead"},
{"LiveTraffic/Settings/Open", "Opens/Closes the Settings window"},
};

Expand Down
32 changes: 32 additions & 0 deletions Src/LiveTraffic.cpp
Expand Up @@ -46,6 +46,7 @@ enum menuItems {
MENU_ID_TOGGLE_AIRCRAFT,
MENU_ID_HAVE_TCAS,
MENU_ID_TOGGLE_LABELS,
MENU_ID_TOGGLE_AC_AHEAD,
MENU_ID_SETTINGS_UI,
MENU_ID_HELP,
MENU_ID_HELP_DOCUMENTATION,
Expand Down Expand Up @@ -104,6 +105,25 @@ void MenuHandler(void * /*mRef*/, void * iRef)
XPLMCheckMenuItem(menuID, aMenuItems[MENU_ID_TOGGLE_LABELS],
dataRefs.ToggleLabelDraw() ? xplm_Menu_Checked : xplm_Menu_Unchecked);
break;
case MENU_ID_TOGGLE_AC_AHEAD:
{
bool bMenuActive = false;
const LTFlightData* pfdFocus = LTFlightData::FindFocusAc(dataRefs.GetViewHeading());
if (pfdFocus && pfdFocus->hasAc()) {
LTAircraft* pAc = pfdFocus->GetAircraft();
if (pAc->IsVisible()) // if visible
pAc->SetVisible(false); // hide
else { // else
pAc->SetVisible(true); // show
pAc->SetAutoVisible(true); // and (re)activate auto-show
}
bMenuActive = !pAc->IsVisible();
}
XPLMCheckMenuItem(menuID, aMenuItems[MENU_ID_TOGGLE_AC_AHEAD],
bMenuActive ? xplm_Menu_Checked : xplm_Menu_Unchecked);
break;
}

case MENU_ID_SETTINGS_UI:
XPLMCheckMenuItem(menuID,aMenuItems[MENU_ID_SETTINGS_UI],
LTSettingsUI::ToggleDisplay() ? xplm_Menu_Checked : xplm_Menu_Unchecked);
Expand Down Expand Up @@ -192,6 +212,11 @@ void MenuUpdateAllItemStatus()
dataRefs.AwaitingAIControl() ? MENU_HAVE_TCAS_REQUSTD : MENU_HAVE_TCAS,
0);

// Is the aircraft ahead hidden or visible?
const LTFlightData* pfdFocus = LTFlightData::FindFocusAc(dataRefs.GetViewHeading());
XPLMCheckMenuItem(menuID, aMenuItems[MENU_ID_TOGGLE_AC_AHEAD],
pfdFocus && pfdFocus->hasAc() && !pfdFocus->GetAircraft()->IsVisible() ? xplm_Menu_Checked : xplm_Menu_Unchecked);

// Is Settings window open?
XPLMCheckMenuItem(menuID,aMenuItems[MENU_ID_SETTINGS_UI],
LTSettingsUI::IsDisplayed() ? xplm_Menu_Checked : xplm_Menu_Unchecked);
Expand Down Expand Up @@ -305,6 +330,12 @@ bool RegisterMenuItem ()
dataRefs.cmdLT[CR_LABELS_TOGGLE]);
XPLMCheckMenuItem(menuID,aMenuItems[MENU_ID_TOGGLE_LABELS],
dataRefs.ShallDrawLabels() ? xplm_Menu_Checked : xplm_Menu_Unchecked);

// Toggle visibility of aircraft ahead
aMenuItems[MENU_ID_TOGGLE_AC_AHEAD] =
AppendMenuItem(menuID, MENU_TOGGLE_AC_AHEAD, (void *)MENU_ID_TOGGLE_AC_AHEAD,
dataRefs.cmdLT[CR_TOGGLE_AC_AHEAD]);


// Separator
XPLMAppendMenuSeparator(menuID);
Expand Down Expand Up @@ -379,6 +410,7 @@ struct cmdMenuMap {
{ CR_AC_DISPLAYED, MENU_ID_TOGGLE_AIRCRAFT },
{ CR_AC_TCAS_CONTROLLED, MENU_ID_HAVE_TCAS },
{ CR_LABELS_TOGGLE, MENU_ID_TOGGLE_LABELS },
{ CR_TOGGLE_AC_AHEAD, MENU_ID_TOGGLE_AC_AHEAD },
{ CR_SETTINGS_UI, MENU_ID_SETTINGS_UI },
};

Expand Down
6 changes: 6 additions & 0 deletions docs/readme.html
Expand Up @@ -160,6 +160,12 @@ <h3>v3.5.1</h3>
historic timestamp when modifying timestamp again.</li>
</ul>
</li>
<li>
Added command to toggle visibility of aircraft ahead,
available as <a href="https://twinfan.gitbook.io/livetraffic/using-lt/menu-items/configuring-commands">joystick button or keyboard assignment</a>
"LiveTraffic/Aircrafts/Toggle_Ahead"
and as new <a href="https://twinfan.gitbook.io/livetraffic/using-lt/menu-items#hide-aicraft-ahead">menu item "Hide aircraft ahead"</a>.
</li>
<li>
OpenSky Master File: Removal of no longer used database files.
</li>
Expand Down

0 comments on commit 3baca08

Please sign in to comment.