Arma Reforger Explorer  1.1.0.42
Arma Reforger Code Explorer by Zeroy - Thanks to MisterOutofTime
SCR_KeybindSettingsSubMenu.c
Go to the documentation of this file.
2 {
3  protected ref SCR_KeyBindingMenuConfig m_KeybindConfig;
4 
5  // Resources
6  protected static const string ACTION_ROW_LAYOUT_PATH = "{75B1F7B766CA8C91}UI/layouts/Menus/SettingsMenu/BindingMenu/KeybindRow.layout";
7  protected static const string SEPARATOR_LAYOUT_PATH = "{01D9FD7791700ADA}UI/layouts/Menus/SettingsMenu/BindingMenu/KeybindSeparator.layout";
8  protected static const string DESCRIPTION_ACTION_ROW_LAYOUT_PATH = "{929E92CB72FBE8DD}UI/layouts/Menus/SettingsMenu/BindingMenu/KeybindsSettingsDescriptionActionRow.layout";
9  protected static const string KEY_BINDING_CONFIG = "{4EE7794C9A3F11EF}Configs/System/keyBindingMenu.conf";
10 
11  // Separator
12  protected const float FIRST_SEPARATOR_PADDING = 20;
13 
14  // Widgets
15  protected VerticalLayoutWidget m_wActionsLayout;
16  protected ScrollLayoutWidget m_wActionsScrollLayout;
17 
18  // Bindings
19  protected ref InputBinding m_Binding;
20  protected static const string PRIMARY_PRESET_PREFIX = "";
21 
22  // Rows
23  protected SCR_KeybindRowComponent m_SelectedRowComponent;
24  protected int m_iLastSelectedRowIndex;
25  protected float m_fLastSliderY;
26 
27  protected SCR_InputButtonComponent m_ResetSingleButton;
28  protected SCR_InputButtonComponent m_UnbindSingleActionButton;
29  protected SCR_InputButtonComponent m_SimpleBindingButton;
30  protected SCR_InputButtonComponent m_AdvancedBindingButton;
31  protected SCR_SettingsManagerKeybindModule m_SettingsKeybindModule;
32 
33  protected ref array<Widget> m_aRowWidgets = {};
34  protected ref array<SCR_InputButtonComponent> m_aRowFooterButtons = {};
35 
36  // Description
37  protected TextWidget m_wDescriptionHeader;
38  protected RichTextWidget m_wDescription;
39  protected Widget m_wDescriptionActionRowsContainer;
40  protected ScrollLayoutWidget m_wDescriptionScroll;
41 
42  protected ref array<Widget> m_aDescriptionActionRows = {};
43 
44  // Footer
45  protected SCR_InputButtonComponent m_ResetAllButton;
46 
47  protected SCR_SpinBoxComponent m_CategoriesSpinBox;
48 
49  // Actions
50  SCR_MenuActionsComponent m_ActionsComponent;
51 
52  protected const string DESCRIPTION = "#AR-Settings_Keybind_DetailsPanel_Description";
53  protected const string DESCRIPTION_ADVANCED_BINDINGS = "#AR-Settings_Keybind_DetailsPanel_Description_AdvancedBindings";
54 
55  protected static const string ACTION_RESET_SINGLE = "MenuResetKeybind";
56  protected static const string ACTION_RESET_ALL = "MenuResetAllKeybind";
57  protected static const string ACTION_UNBIND = "MenuUnbindKeybind";
58  protected static const string ACTION_ADVANCED_KEYBIND = "MenuAdvancedKeybind";
59 
60  //------------------------------------------------------------------------------------------------
61  override void OnTabCreate(Widget menuRoot, ResourceName buttonsLayout, int index)
62  {
63  super.OnTabCreate(menuRoot, buttonsLayout, index);
64 
65  m_wActionsLayout = VerticalLayoutWidget.Cast(GetRootWidget().FindAnyWidget("ActionRowsContent"));
66  if (!m_wActionsLayout)
67  return;
68 
69  m_wActionsScrollLayout = ScrollLayoutWidget.Cast(GetRootWidget().FindAnyWidget("ActionRowScroll"));
70  if (!m_wActionsScrollLayout)
71  return;
72 
75  return;
76 
77  m_Binding = m_SettingsKeybindModule.GetInputBindings();
78 
79  // Description
80  m_wDescriptionHeader = TextWidget.Cast(GetRootWidget().FindAnyWidget("DescriptionHeader"));
81  m_wDescription = RichTextWidget.Cast(GetRootWidget().FindAnyWidget("Description"));
82  m_wDescriptionActionRowsContainer = GetRootWidget().FindAnyWidget("DescriptionActionRows");
83  m_wDescriptionScroll = ScrollLayoutWidget.Cast(GetRootWidget().FindAnyWidget("DescriptionScroll"));
84 
85  if (m_wDescription)
86  {
87  m_wDescription.SetVisible(false);
88 
89  string action = string.Format(
90  "<action name='%1', scale='%2', state = '%3'/>",
91  ACTION_ADVANCED_KEYBIND,
92  UIConstants.ACTION_DISPLAY_ICON_SCALE_BIG,
93  UIConstants.GetActionDisplayStateAttribute(SCR_EActionDisplayState.NON_INTERACTABLE_HINT)
94  );
95 
96  m_wDescription.SetText(DESCRIPTION + "\n" + WidgetManager.Translate(DESCRIPTION_ADVANCED_BINDINGS, action));
97  }
98 
99  // Footer Buttons
100  CreateResetAllKeybindsButton();
101  CreateSimpleBindingButton();
102  CreateUnbindSingleButton();
103  CreateSingleKeybindResetButton();
104  CreateAdvancedBindingButton();
105 
106  // Actions
107  m_ActionsComponent = SCR_MenuActionsComponent.FindComponent(GetRootWidget());
108  if (m_ActionsComponent)
109  m_ActionsComponent.GetOnAction().Insert(OnActionTriggered);
110 
111  // Read the categories and actions from KEY_BINDING_CONFIG
112  Resource holder = BaseContainerTools.LoadContainer(KEY_BINDING_CONFIG);
113  BaseContainer container = holder.GetResource().ToBaseContainer();
114  m_KeybindConfig = SCR_KeyBindingMenuConfig.Cast(BaseContainerTools.CreateInstanceFromContainer(container));
115  InsertCategoriesToComboBox();
116 
117  GetGame().OnInputDeviceUserChangedInvoker().Insert(OnInputDeviceChange);
118  }
119 
120  //------------------------------------------------------------------------------------------------
121  override void OnMenuUpdate(float tDelta)
122  {
123  super.OnMenuUpdate(tDelta);
124 
125  //TODO: change this to use events insetad of tick
126  UpdateButtons();
127  }
128 
129  //------------------------------------------------------------------------------------------------
130  override void OnTabShow()
131  {
132  super.OnTabShow();
133 
134  ListActionsFromCurrentCategory();
135 
136  m_SelectedRowComponent = null;
137 
138  if (m_ActionsComponent)
139  m_ActionsComponent.ActivateActions();
140 
141  UpdateDescription();
142  }
143 
144  //------------------------------------------------------------------------------------------------
145  override void OnTabHide()
146  {
147  super.OnTabHide();
148 
149  if (m_CategoriesSpinBox)
150  {
151  m_CategoriesSpinBox.SetKeepActionListeners(false);
152  m_CategoriesSpinBox.RemoveActionListeners();
153  }
154 
155  if (m_ActionsComponent)
156  m_ActionsComponent.DeactivateActions();
157  }
158 
159  //------------------------------------------------------------------------------------------------
160  override void OnMenuFocusGained()
161  {
162  super.OnMenuFocusGained();
163 
164  if (m_CategoriesSpinBox)
165  {
166  m_CategoriesSpinBox.SetKeepActionListeners(true);
167  m_CategoriesSpinBox.AddActionListeners();
168  }
169  }
170 
171  //------------------------------------------------------------------------------------------------
172  override void OnMenuFocusLost()
173  {
174  super.OnMenuFocusLost();
175 
176  if (m_CategoriesSpinBox)
177  {
178  m_CategoriesSpinBox.SetKeepActionListeners(false);
179  m_CategoriesSpinBox.RemoveActionListeners();
180  }
181  }
182 
183  //------------------------------------------------------------------------------------------------
184  override void OnMenuShow()
185  {
186  super.OnMenuShow();
187 
188  if (m_bShown && m_ActionsComponent)
189  m_ActionsComponent.ActivateActions();
190  }
191 
192  // --- Protected ---
193  //------------------------------------------------------------------------------------------------
194  // Setup rows
195  protected void ListActionsFromCurrentCategory()
196  {
197  Widget spinBox = GetRootWidget().FindAnyWidget("CategoriesBox");
198  bool firstSeparator = true;
199  if (!spinBox)
200  return;
201 
202  m_CategoriesSpinBox = SCR_SpinBoxComponent.Cast(spinBox.GetHandler(0));
203  if (!m_CategoriesSpinBox)
204  return;
205 
206  // Allow category switching with gamepad from anywere in this menu.
207  // Otherwise the player will need to scroll all the way back to the spin box
208  m_CategoriesSpinBox.SetKeepActionListeners(true);
209  m_CategoriesSpinBox.AddActionListeners();
210 
211  SCR_KeyBindingCategory category = m_KeybindConfig.m_KeyBindingCategories.Get(m_CategoriesSpinBox.GetCurrentIndex());
212  if (!category)
213  return;
214 
215  // Delete rows
216  foreach (Widget row : m_aRowWidgets)
217  {
218  row.RemoveFromHierarchy();
219  }
220 
221  m_aRowWidgets.Clear();
222 
223  // Fill the menu
224  Widget rowWidget;
225  SCR_KeybindRowComponent component;
226  SCR_LabelComponent separatorText;
227  Widget keybindTitle;
228  Widget gamepadTitle;
229 
230  foreach (SCR_KeyBindingEntry entry : category.m_KeyBindingEntries)
231  {
232  // Action row
233  if (entry.m_sActionName != "separator")
234  {
235  rowWidget = GetGame().GetWorkspace().CreateWidgets(ACTION_ROW_LAYOUT_PATH ,m_wActionsLayout);
236  if (!rowWidget)
237  continue;
238 
239  m_aRowWidgets.Insert(rowWidget);
240 
241  component = SCR_KeybindRowComponent.FindComponent(rowWidget);
242  if (!component)
243  continue;
244 
245  component.Init(m_Binding, entry);
246  component.GetOnFocus().Insert(OnRowFocus);
247  component.GetOnFocusLost().Insert(OnRowFocusLost);
248  component.GetOnKeyCaptured().Insert(OnKeyCaptured);
249  component.GetOnInlineButton().Insert(OnRowInlineButton);
250 
251  continue;
252  }
253 
254  // Separator
255  rowWidget = GetGame().GetWorkspace().CreateWidgets(SEPARATOR_LAYOUT_PATH ,m_wActionsLayout);
256  if (!rowWidget)
257  continue;
258 
259  m_aRowWidgets.Insert(rowWidget);
260 
261  separatorText = SCR_LabelComponent.GetComponent("SettingsTitle", rowWidget);
262  if (!separatorText)
263  continue;
264 
265  separatorText.SetVisible(!entry.m_sDisplayName.IsEmpty());
266  separatorText.SetText(entry.m_sDisplayName);
267 
268  if (!firstSeparator)
269  {
270  separatorText.ResetTopPadding();
271  continue;
272  }
273 
274  // First separator
275  keybindTitle = rowWidget.FindAnyWidget("Keybind");
276  if (keybindTitle)
277  keybindTitle.SetVisible(!GetGame().IsPlatformGameConsole() || GetGame().GetHasKeyboard());
278 
279  gamepadTitle = rowWidget.FindAnyWidget("Gamepad");
280  if (gamepadTitle)
281  gamepadTitle.SetVisible(true);
282 
283  separatorText.SetTopPadding(FIRST_SEPARATOR_PADDING);
284 
285  firstSeparator = false;
286  }
287 
288  // Delayed position display update, to give enough time for all entries to be initialized
289  if (m_iLastSelectedRowIndex > 0)
290  GetGame().GetCallqueue().CallLater(UpdateListSelectionDisplay, 100, false, m_iLastSelectedRowIndex);
291  else
292  UpdateListSelectionDisplay(0);
293  }
294 
295  //------------------------------------------------------------------------------------------------
296  protected void UpdateListSelectionDisplay(int index)
297  {
298  GetGame().GetCallqueue().Remove(UpdateListSelectionDisplay);
299 
300  if (!m_wActionsScrollLayout)
301  return;
302 
303  float sliderTarget;
304  if (index > 0)
305  sliderTarget = m_fLastSliderY;
306 
307  Widget focusTarget;
308  if (!m_aRowWidgets.IsEmpty() && m_aRowWidgets.IsIndexValid(index))
309  focusTarget = m_aRowWidgets[index];
310 
311  m_wActionsScrollLayout.SetSliderPos(0, sliderTarget);
312 
313  if (GetGame().GetInputManager().GetLastUsedInputDevice() != EInputDeviceType.MOUSE || !focusTarget)
314  UpdateFocusedWidget(focusTarget);
315  }
316 
317  //------------------------------------------------------------------------------------------------
318  protected void UpdateFocusedWidget(Widget w)
319  {
320  if (!GetShown())
321  return;
322 
323  if (w)
324  GetGame().GetWorkspace().SetFocusedWidget(w);
325  else if (m_CategoriesSpinBox)
326  GetGame().GetWorkspace().SetFocusedWidget(m_CategoriesSpinBox.GetRootWidget());
327  }
328 
329  //------------------------------------------------------------------------------------------------
330  protected void InsertCategoriesToComboBox()
331  {
332  Widget spinBox = GetRootWidget().FindAnyWidget("CategoriesBox");
333  if (!spinBox)
334  return;
335 
336  SCR_SpinBoxComponent spinBoxComponent = SCR_SpinBoxComponent.Cast(spinBox.GetHandler(0));
337  if (!spinBoxComponent)
338  return;
339 
340  spinBoxComponent.ClearAll();
341 
342  int total = m_KeybindConfig.m_KeyBindingCategories.Count();
343  foreach (int i, SCR_KeyBindingCategory category : m_KeybindConfig.m_KeyBindingCategories)
344  spinBoxComponent.AddItem(category.m_sDisplayName, i == total - 1);
345 
346  spinBoxComponent.SetCurrentItem(0);
347 
348  spinBoxComponent.m_OnChanged.Insert(OnComboBoxChange);
349  }
350 
351  //------------------------------------------------------------------------------------------------
352  protected void ResetKeybindsToDefault()
353  {
354  SCR_ConfigurableDialogUi dialog = SCR_KeybindDialogs.CreateKeybindsResetDialog();
355  dialog.m_OnConfirm.Insert(ResetKeybindsToDefaultConfirm);
356  }
357 
358  //------------------------------------------------------------------------------------------------
359  protected void ResetSingleKeybindToDefault()
360  {
361  if (!m_SelectedRowComponent)
362  return;
363 
364  m_SelectedRowComponent.ResetAction();
365  }
366 
367  //------------------------------------------------------------------------------------------------
368  protected void ResetKeybindsToDefaultConfirm()
369  {
370  EInputDeviceType device = GetGame().GetInputManager().GetLastUsedInputDevice();
371 
372  m_SettingsKeybindModule.ResetAllActions(device);
373  ListActionsFromCurrentCategory();
374  }
375 
376  // --- Footer buttons ---
377  // -- Global --
378  //------------------------------------------------------------------------------------------------
379  protected void CreateResetAllKeybindsButton()
380  {
381  m_ResetAllButton = CreateNavigationButton(ACTION_RESET_ALL, "#AR-Settings_Keybind_ResetEveryKeybind", true);
382  m_ResetAllButton.m_OnActivated.Insert(ResetKeybindsToDefault);
383  }
384 
385  // -- Row --
386  //------------------------------------------------------------------------------------------------
387  protected void CreateSingleKeybindResetButton()
388  {
389  m_ResetSingleButton = CreateNavigationButton(ACTION_RESET_SINGLE, "#AR-Settings_Keybind_ResetAllKeybinds", true);
390  m_ResetSingleButton.m_OnActivated.Insert(ResetSingleKeybindToDefault);
391 
392  m_aRowFooterButtons.Insert(m_ResetSingleButton);
393  }
394 
395  //------------------------------------------------------------------------------------------------
396  protected void CreateUnbindSingleButton()
397  {
398  m_UnbindSingleActionButton = CreateNavigationButton(ACTION_UNBIND, "#AR-Settings_Keybind_UnbindOne", true);
399  m_UnbindSingleActionButton.m_OnActivated.Insert(UnbindSingleAction);
400  m_aRowFooterButtons.Insert(m_UnbindSingleActionButton);
401  }
402 
403  //------------------------------------------------------------------------------------------------
404  // Visual only Enter button. Interaction is handled by the row buttons themselves
405  protected void CreateSimpleBindingButton()
406  {
407  m_SimpleBindingButton = CreateNavigationButton(UIConstants.MENU_ACTION_SELECT, "#AR-Settings_Keybind_Assign", true);
408  m_aRowFooterButtons.Insert(m_SimpleBindingButton);
409  }
410 
411  //------------------------------------------------------------------------------------------------
412  protected void CreateAdvancedBindingButton()
413  {
414  m_AdvancedBindingButton = CreateNavigationButton(ACTION_ADVANCED_KEYBIND, "#AR_Settings_KeybindAdvanced_Title", true);
415  m_AdvancedBindingButton.m_OnActivated.Insert(AdvancedKeybindButtonClick);
416  m_aRowFooterButtons.Insert(m_AdvancedBindingButton);
417  }
418 
419  //------------------------------------------------------------------------------------------------
420  protected void UnbindSingleAction()
421  {
422  if (!m_SelectedRowComponent)
423  return;
424 
425  m_SelectedRowComponent.Unbind();
426  }
427 
428  //------------------------------------------------------------------------------------------------
429  protected void AdvancedKeybindButtonClick()
430  {
431  if (!m_SelectedRowComponent)
432  return;
433 
434  SCR_AdvancedKeybindDialogUI keybindDialog = SCR_KeybindDialogs.CreateAdvancedKeybindDialog(
435  m_SelectedRowComponent.GetEntry(),
436  m_SelectedRowComponent.GetDisplayName(),
437  m_SelectedRowComponent.GetActionName(),
438  PRIMARY_PRESET_PREFIX + m_SelectedRowComponent.GetActionPreset(),
439  m_SelectedRowComponent.GetActionPrefixType()
440  );
441 
442  if (keybindDialog)
443  keybindDialog.m_OnCancel.Insert(ListActionsFromCurrentCategory);
444  }
445 
446  //------------------------------------------------------------------------------------------------
447  protected void UpdateButtons()
448  {
449  bool consoleController = GetGame().IsPlatformGameConsole() && !GetGame().GetHasKeyboard();
450  bool usingMouse = GetGame().GetInputManager().GetLastUsedInputDevice() == EInputDeviceType.MOUSE;
451  bool usingKeyboard = GetGame().GetInputManager().GetLastUsedInputDevice() == EInputDeviceType.KEYBOARD;
452  bool show = !usingMouse && m_SelectedRowComponent;
453 
454  if (m_ResetSingleButton)
455  m_ResetSingleButton.SetVisible(m_bShown && show, false);
456 
457  if (m_UnbindSingleActionButton)
458  m_UnbindSingleActionButton.SetVisible(m_bShown && show, false);
459 
460  if (m_SimpleBindingButton)
461  m_SimpleBindingButton.SetVisible(m_bShown && show && !m_SelectedRowComponent.GetActionPreset().IsEmpty(), false);
462 
463  if (m_AdvancedBindingButton)
464  m_AdvancedBindingButton.SetVisible(m_bShown && show && !consoleController && usingKeyboard, false);
465  }
466 
467  //------------------------------------------------------------------------------------------------
468  protected void UpdateDescription()
469  {
470  if (m_wDescriptionScroll)
471  m_wDescriptionScroll.SetSliderPos(0, 0, true);
472 
473  // --- Update Visibility ---
474  string actionName;
475  string actionPreset;
476 
477  if (m_SelectedRowComponent)
478  {
479  actionName = m_SelectedRowComponent.GetActionName();
480  actionPreset = m_SelectedRowComponent.GetActionPreset();
481  }
482 
483  EInputDeviceType device = GetGame().GetInputManager().GetLastUsedInputDevice();
484  if (device != EInputDeviceType.GAMEPAD)
485  device = EInputDeviceType.KEYBOARD;
486 
487  int bindCount = m_SettingsKeybindModule.GetActionBindCount(actionName, actionPreset, device);
488 
489  if (m_wDescriptionHeader)
490  m_wDescriptionHeader.SetVisible(bindCount > 1);
491 
492  if (m_wDescription)
493  m_wDescription.SetVisible(bindCount > 1);
494 
495  foreach (int i, Widget widget : m_aDescriptionActionRows)
496  {
497  m_aDescriptionActionRows[i].SetVisible(bindCount > 1 && i <= bindCount - 1 && m_SelectedRowComponent != null);
498  }
499 
500  // --- Update contents ---
501  if (!m_SelectedRowComponent || bindCount <= 1)
502  return;
503 
504  if (m_wDescriptionHeader)
505  m_wDescriptionHeader.SetText(m_SelectedRowComponent.GetDisplayName());
506 
507  // Create or update necessary rows (we don't want to keep destroying and recreating them, so we add new ones only if necessary)
508  if (!m_wDescriptionActionRowsContainer)
509  return;
510 
511  for (int i = 0; i < bindCount; i++)
512  {
513  Widget row;
514 
515  if (!m_aDescriptionActionRows.IsIndexValid(i))
516  {
517  row = GetGame().GetWorkspace().CreateWidgets(DESCRIPTION_ACTION_ROW_LAYOUT_PATH, m_wDescriptionActionRowsContainer);
518  if (row)
519  m_aDescriptionActionRows.Insert(row);
520  }
521  else
522  row = m_aDescriptionActionRows[i];
523 
524  if (!row)
525  continue;
526 
527  SCR_AdvancedActionRowComponent comp = SCR_AdvancedActionRowComponent.FindComponentInHierarchy(row);
528  if (comp)
529  comp.Init(actionName, actionPreset, i, m_SettingsKeybindModule, device);
530  }
531  }
532 
533  //------------------------------------------------------------------------------------------------
534  protected void OnRowFocus(SCR_ScriptedWidgetComponent component)
535  {
536  SCR_KeybindRowComponent row = SCR_KeybindRowComponent.Cast(component);
537  if (!row)
538  return;
539 
540  m_SelectedRowComponent = row;
541 
542  Widget root = row.GetRootWidget();
543  if (root && !m_aRowWidgets.IsEmpty())
544  m_iLastSelectedRowIndex = m_aRowWidgets.Find(root);
545 
546  if (m_wActionsScrollLayout)
547  {
548  float sliderX;
549  m_wActionsScrollLayout.GetSliderPos(sliderX, m_fLastSliderY);
550  }
551 
552  UpdateDescription();
553  }
554 
555  //------------------------------------------------------------------------------------------------
556  protected void OnRowFocusLost(SCR_ScriptedWidgetComponent component)
557  {
558  m_SelectedRowComponent = null;
559 
560  UpdateDescription();
561  }
562 
563  //------------------------------------------------------------------------------------------------
564  protected void OnRowInlineButton(string name)
565  {
566  switch (name)
567  {
568  case SCR_KeybindRowComponent.BUTTON_ADVANCED_KEYBIND: AdvancedKeybindButtonClick(); break;
569  case SCR_KeybindRowComponent.BUTTON_RESET: ResetSingleKeybindToDefault(); break;
570  case SCR_KeybindRowComponent.BUTTON_UNBIND: UnbindSingleAction(); break;
571  }
572  }
573 
574  //------------------------------------------------------------------------------------------------
575  protected void OnActionTriggered(string name, float multiplier)
576  {
577  switch (name)
578  {
579  case ACTION_ADVANCED_KEYBIND: AdvancedKeybindButtonClick(); break;
580  case ACTION_RESET_SINGLE: ResetSingleKeybindToDefault(); break;
581  case ACTION_UNBIND: UnbindSingleAction(); break;
582  }
583  }
584 
585  //------------------------------------------------------------------------------------------------
586  protected void OnKeyCaptured()
587  {
588  ListActionsFromCurrentCategory();
589  }
590 
591  //------------------------------------------------------------------------------------------------
592  protected void OnComboBoxChange()
593  {
594  // Bring focus and slider back to top
595  m_iLastSelectedRowIndex = 0;
596  ListActionsFromCurrentCategory();
597  }
598 
599  //------------------------------------------------------------------------------------------------
600  protected void OnInputDeviceChange(EInputDeviceType oldDevice, EInputDeviceType newDevice)
601  {
602  UpdateDescription();
603  }
604 }
m_bShown
protected bool m_bShown
Definition: SCR_InfoDisplay.c:61
m_SettingsKeybindModule
protected SCR_SettingsManagerKeybindModule m_SettingsKeybindModule
Definition: SCR_KeybindDialogs.c:43
UIConstants
Definition: Constants.c:130
SCR_KeybindSetting
Definition: SCR_KeybindSettingsSubMenu.c:1
GetGame
ArmaReforgerScripted GetGame()
Definition: game.c:1424
SCR_SettingsManagerKeybindModule
Definition: SCR_SettingsManagerKeybindModule.c:2
GetHasKeyboard
bool GetHasKeyboard()
Definition: game.c:218
SCR_LabelComponent
Definition: SCR_LabelComponent.c:1
SCR_KeybindDialogs
Definition: SCR_KeybindDialogs.c:1
IsPlatformGameConsole
bool IsPlatformGameConsole()
Definition: game.c:1393
GetRootWidget
Widget GetRootWidget()
Definition: SCR_UITaskManagerComponent.c:160
SCR_KeybindRowComponent
Definition: SCR_KeybindRowComponent.c:2
SCR_SpinBoxComponent
Definition: SCR_SpinBoxComponent.c:1
SCR_AdvancedActionRowComponent
Definition: SCR_AdvancedActionRowComponent.c:1
index
SCR_DestructionSynchronizationComponentClass ScriptComponentClass int index
Definition: SCR_DestructionSynchronizationComponent.c:17
GetInputManager
protected InputManager GetInputManager()
Definition: SCR_BaseManualCameraComponent.c:65
SCR_AdvancedKeybindDialogUI
Definition: SCR_AdvancedKeybindDialogUI.c:2
SCR_ConfigurableDialogUi
Definition: SCR_ConfigurableDialogUI.c:13
SCR_KeyBindingCategory
Definition: SCR_KeyBindingMenuConfig.c:82
SCR_MenuActionsComponent
Definition: SCR_MenuActionsComponent.c:9
SCR_ScriptedWidgetComponent
Definition: SCR_ScriptedWidgetComponent.c:7
SCR_SettingsSubMenuBase
Definition: SCR_SettingsSubMenuBase.c:1
GetSettingsManager
SCR_SettingsManager GetSettingsManager()
Definition: game.c:191
SCR_KeyBindingMenuConfig
Definition: SCR_KeyBindingMenuConfig.c:9
SCR_InputButtonComponent
Definition: SCR_InputButtonComponent.c:1
category
params category
Definition: SCR_VehicleDamageManagerComponent.c:180
ESettingManagerModuleType
ESettingManagerModuleType
Definition: SCR_SettingsManager.c:2