Arma Reforger Explorer
1.7.0.54
Arma Reforger Code Explorer by Zeroy - Thanks to MisterOutofTime
Toggle main menu visibility
Loading...
Searching...
No Matches
SCR_ControllerPresetsSettingsSubMenu.c
Go to the documentation of this file.
1
class
SCR_ControllerPresetsSettingsSubmenu
:
SCR_SettingsSubMenuBase
2
{
3
4
ref array<ref SCR_ControllerPreset> m_aJoystickPresets = {};
5
6
//------------------------------------------------------------------------------------------------
7
override
void
OnTabHide
()
8
{
9
super.
OnTabHide
();
10
11
SCR_HeadTrackingSettings.SetHeadTrackingSettings();
12
}
13
14
//------------------------------------------------------------------------------------------------
15
override
void
OnTabCreate(
Widget
menuRoot,
ResourceName
buttonsLayout,
int
index
)
16
{
17
super.OnTabCreate(menuRoot, buttonsLayout,
index
);
18
19
PlatformKind
platformKind =
GetGame
().GetPlatformService().GetLocalPlatformKind();
20
if
(platformKind ==
PlatformKind
.XBOX || platformKind ==
PlatformKind
.PSN)
21
{
22
HideMenuItem
(
"Devices"
);
23
HideMenuItem
(
"JoystickPreset"
);
24
}
25
else
26
{
27
//joysticks are for now supported only non non-PS
28
HandleJoystickDevices
();
29
}
30
31
m_aSettingsBindings
.Clear();
32
33
// HEAD TRACKING
34
m_aSettingsBindings
.Insert(
new
SCR_SettingBindingGameplay
(
"SCR_HeadTrackingSettings"
,
"m_bHeadTrackingFreelook"
,
"HeadTrackingFreelook"
));
35
m_aSettingsBindings
.Insert(
new
SCR_SettingBindingGameplay
(
"SCR_HeadTrackingSettings"
,
"m_bHeadTrackingADS"
,
"HeadTrackingADS"
));
36
m_aSettingsBindings
.Insert(
new
SCR_SettingBindingGameplay
(
"SCR_HeadTrackingSettings"
,
"m_fHeadTrackingSensitivity"
,
"HeadTrackingSensitivity"
));
37
m_aSettingsBindings
.Insert(
new
SCR_SettingBindingGameplay
(
"SCR_HeadTrackingSettings"
,
"m_fHeadTrackingADSDeadzone"
,
"HeadTrackingADSDeadzone"
));
38
39
m_aSettingsBindings
.Insert(
new
SCR_SettingBindingGameplay
(
"SCR_HeadTrackingSettings"
,
"m_eHeadTrackingLean"
,
"HeadTrackingLean"
));
40
m_aSettingsBindings
.Insert(
new
SCR_SettingBindingGameplay
(
"SCR_HeadTrackingSettings"
,
"m_fHeadTrackingLeanSensitivity"
,
"HeadTrackingLeanSensitivity"
));
41
m_aSettingsBindings
.Insert(
new
SCR_SettingBindingGameplay
(
"SCR_HeadTrackingSettings"
,
"m_fHeadTrackingLeanDeadzone"
,
"HeadTrackingLeanDeadzone"
));
42
m_aSettingsBindings
.Insert(
new
SCR_SettingBindingGameplay
(
"SCR_HeadTrackingSettings"
,
"m_fHeadTrackingLeanYawLimit"
,
"HeadTrackingLeanYawLimit"
));
43
44
LoadSettings
();
45
46
// PRESETS
47
array<ref SCR_ControllerPreset> controllerPresets = {};
48
array<ref SCR_ControllerPreset> joystick0Presets = {};
49
50
SCR_SettingsManagerKeybindModule
keybindModule =
SCR_SettingsManagerKeybindModule
.Cast(
GetGame
().
GetSettingsManager
().GetModule(
ESettingManagerModuleType
.SETTINGS_MANAGER_KEYBINDING));
51
if
(keybindModule)
52
keybindModule.
GetControllerPresets
(controllerPresets);
53
54
SCR_ComboBoxComponent
combo;
55
combo = BindControllerPresets(
"Presets"
, controllerPresets);
56
if
(combo)
57
combo.m_OnChanged.Insert(SelectControllerPreset);
58
59
if
(
DiagMenu
.GetBool(
SCR_DebugMenuID
.DEBUGUI_UI_SHOW_ALL_SETTINGS,
false
))
60
return
;
61
62
// Show only if there is TrackIR connected
63
if
(!
GetGame
().
GetInputManager
().IsTrackIRConnected())
64
{
65
HideMenuItem
(
"TitleHeadTracking"
);
66
67
HideMenuItem
(
"HeadTrackingFreelook"
);
68
HideMenuItem
(
"HeadTrackingADS"
);
69
HideMenuItem
(
"HeadTrackingSensitivity"
);
70
HideMenuItem
(
"HeadTrackingADSDeadzone"
);
71
72
HideMenuItem
(
"HeadTrackingLean"
);
73
HideMenuItem
(
"HeadTrackingLeanSensitivity"
);
74
HideMenuItem
(
"HeadTrackingLeanDeadzone"
);
75
HideMenuItem
(
"HeadTrackingLeanYawLimit"
);
76
}
77
}
78
79
//------------------------------------------------------------------------------------------------
83
SCR_ComboBoxComponent
BindControllerPresets(
string
widgetName, notnull array<ref SCR_ControllerPreset> presets)
84
{
85
Widget
presetsWidget =
m_wRoot
.FindAnyWidget(widgetName);
86
if
(!presetsWidget)
87
return
null;
88
89
SCR_SettingsManagerKeybindModule
keybindModule =
SCR_SettingsManagerKeybindModule
.Cast(
GetGame
().
GetSettingsManager
().GetModule(
ESettingManagerModuleType
.SETTINGS_MANAGER_KEYBINDING));
90
if
(!keybindModule)
91
return
null;
92
93
SCR_ComboBoxComponent
comboComp =
SCR_ComboBoxComponent
.Cast(presetsWidget.FindHandler(
SCR_ComboBoxComponent
));
94
if
(!comboComp)
95
return
null;
96
97
foreach
(
SCR_ControllerPreset
preset : presets)
98
{
99
comboComp.
AddItem
(preset.GetDisplayName());
100
}
101
102
comboComp.
SetCurrentItem
(keybindModule.
GetActivePresetIndex
(presets));
103
return
comboComp;
104
}
105
106
//------------------------------------------------------------------------------------------------
109
void
SelectControllerPreset(
SCR_ComboBoxComponent
comp,
int
index
)
110
{
111
SCR_SettingsManagerKeybindModule
keybindModule =
SCR_SettingsManagerKeybindModule
.Cast(
GetGame
().
GetSettingsManager
().GetModule(
ESettingManagerModuleType
.SETTINGS_MANAGER_KEYBINDING));
112
if
(keybindModule)
113
keybindModule.
SelectControllerPresets
(presetIndex:
index
);
114
115
//SCR_AnalyticsApplication.GetInstance().ChangeSetting("Presets", "Controller Preset");
116
}
117
118
//------------------------------------------------------------------------------------------------
121
void
SelectJoystickPreset(
SCR_ComboBoxComponent
comp,
int
index
)
122
{
123
SCR_SettingsManagerKeybindModule
keybindModule =
SCR_SettingsManagerKeybindModule
.Cast(
GetGame
().
GetSettingsManager
().GetModule(
ESettingManagerModuleType
.SETTINGS_MANAGER_KEYBINDING));
124
if
(!keybindModule)
125
return
;
126
127
SCR_ControllerPreset
preset = m_aJoystickPresets.Get(
index
);
128
if
(!preset)
129
return
;
130
131
keybindModule.
SelectJoystickPresetPath
(preset.
GetResourceName
());
132
}
133
134
//------------------------------------------------------------------------------------------------
135
protected
void
HandleJoystickDevices
()
136
{
137
InputManager
input =
GetGame
().GetInputManager();
138
Widget
parent =
m_wRoot
.FindAnyWidget(
"Content"
);
139
string
deviceName;
140
Widget
joystickWidget;
141
Widget
joystickIDCombo;
142
SCR_ComboBoxComponent
component;
143
if
(!parent)
144
return
;
145
146
Widget
joystickPreset =
m_wRoot
.FindAnyWidget(
"JoystickPreset"
);
147
if
(!joystickPreset)
148
return
;
149
150
component =
SCR_ComboBoxComponent
.Cast(joystickPreset.FindHandler(
SCR_ComboBoxComponent
));
151
if
(!component)
152
return
;
153
154
SetupJoystickPresets
(component);
155
156
//for now we support up to 4 devices
157
for
(
int
i = 0; i <= 3 ; i++)
158
{
159
deviceName = input.GetJoystickProductName(i);
160
if
(deviceName.IsEmpty())
161
continue
;
162
163
//handle joystic combos in here
164
joystickWidget =
GetGame
().GetWorkspace().CreateWidgets(
"{D8E57BEFB1599946}UI/layouts/Menus/SettingsMenu/JoystickSettingEntry.layout"
, parent);
165
joystickIDCombo = joystickWidget.FindAnyWidget(
"JoystickIDCombo"
);
166
if
(!joystickIDCombo)
167
continue
;
168
169
component =
SCR_ComboBoxComponent
.Cast(joystickIDCombo.FindHandler(
SCR_ComboBoxComponent
));
170
if
(!component)
171
continue
;
172
173
component.SetLabel(deviceName);
174
component.
SetCurrentItem
(i);
175
component.m_OnChanged.Insert(
OnIndexChanged
);
176
177
}
178
}
179
180
//------------------------------------------------------------------------------------------------
181
protected
void
OnIndexChanged
(
SCR_ComboBoxComponent
component,
int
index
)
182
{
183
//this is safe to do because we do not translate device names, we use exact strings from the devices so we can rely on it
184
string
deviceName = component.GetLabel().GetText();
185
if
(deviceName.IsEmpty())
186
return
;
187
188
BaseContainer
inputDeviceSettings =
GetGame
().GetEngineUserSettings().GetModule(
"InputDeviceUserSettings"
);
189
BaseContainer
joystickSetting = inputDeviceSettings.GetObject(
"JoystickSettings"
);
190
if
(!joystickSetting)
191
return
;
192
193
BaseContainerList
rules = joystickSetting.SetObjectArray(
"DeviceOrderRules"
);
194
if
(!rules)
195
return
;
196
197
BaseContainer
container;
198
for
(
int
i; i < rules.Count(); i++)
199
{
200
BaseContainer
foundContainer = rules.Get(i);
201
string
name;
202
if
(foundContainer.Get(
"DeviceNameContains"
, name) && name == deviceName)
203
{
204
container = foundContainer;
205
break
;
206
}
207
}
208
209
if
(!container)
210
{
211
Resource
holder =
BaseContainerTools
.CreateContainer(
"JoystickOrderRule"
);
212
if
(holder)
213
container = holder.GetResource().ToBaseContainer();
214
215
rules.Insert(container);
216
}
217
218
container.Set(
"DeviceNameContains"
, deviceName);
219
container.Set(
"DeviceSlotNumber"
,
index
);
220
221
GetGame
().UserSettingsChanged();
222
GetGame
().SaveUserSettings();
223
}
224
225
//------------------------------------------------------------------------------------------------
227
protected
void
SetupJoystickPresets
(
SCR_ComboBoxComponent
component)
228
{
229
SCR_SettingsManagerKeybindModule
keybindModule =
SCR_SettingsManagerKeybindModule
.Cast(
GetGame
().
GetSettingsManager
().GetModule(
ESettingManagerModuleType
.SETTINGS_MANAGER_KEYBINDING));
230
if
(!keybindModule)
231
return
;
232
233
m_aJoystickPresets.Clear();
234
keybindModule.
GetJoystickPresets
(m_aJoystickPresets);
235
236
// load custom configs from profile folder
237
array<string> userConfigs = {};
238
FileIO
.FindFiles(userConfigs.Insert,
"$profile:.save/settings/customInputConfigs"
,
".conf"
);
239
foreach
(
string
config : userConfigs)
240
{
241
bool
found =
false
;
242
foreach
(
SCR_ControllerPreset
preset : m_aJoystickPresets)
243
{
244
if
(preset.GetResourceName() == config)
245
{
246
found =
true
;
247
break
;
248
}
249
}
250
251
if
(found)
252
continue
;
253
254
SCR_ControllerPreset
customPreset =
new
SCR_ControllerPreset
();
255
customPreset.
SetResourceName
(config);
256
customPreset.
SetDisplayName
(
FilePath
.StripPath(config));
257
m_aJoystickPresets.Insert(customPreset);
258
}
259
260
foreach
(
SCR_ControllerPreset
preset : m_aJoystickPresets)
261
{
262
component.
AddItem
(preset.GetDisplayName());
263
}
264
265
component.
SetCurrentItem
(keybindModule.
GetActivePresetIndex
(m_aJoystickPresets));
266
component.m_OnChanged.Insert(SelectJoystickPreset);
267
}
268
}
SCR_DebugMenuID
SCR_DebugMenuID
This enum contains all IDs for DiagMenu entries added in script.
Definition
DebugMenuID.c:4
GetSettingsManager
SCR_SettingsManager GetSettingsManager()
Definition
game.c:190
GetGame
ArmaReforgerScripted GetGame()
Definition
game.c:1398
PlatformKind
PlatformKind
Definition
PlatformKind.c:8
GetInputManager
InputManager GetInputManager()
Definition
SCR_BaseManualCameraComponent.c:205
index
SCR_DestructionSynchronizationComponentClass ScriptComponentClass int index
Definition
SCR_DestructionSynchronizationComponent.c:17
LoadSettings
void LoadSettings()
Definition
SCR_HintManagerComponent.c:455
ESettingManagerModuleType
ESettingManagerModuleType
Definition
SCR_SettingsManager.c:3
BaseContainer
Definition
BaseContainer.c:13
BaseContainerList
Definition
BaseContainerList.c:13
BaseContainerTools
Definition
BaseContainerTools.c:13
DiagMenu
Diagnostic and developer menu system.
Definition
DiagMenu.c:18
FileIO
Definition
FileIO.c:13
FilePath
Definition
FilePath.c:13
InputManager
Input management system for user interactions.
Definition
InputManager.c:20
Resource
Object holding reference to resource. In destructor release the resource.
Definition
Resource.c:25
ResourceName
Definition
ResourceName.c:13
SCR_ComboBoxComponent
Definition
SCR_ComboBoxComponent.c:2
SCR_ComboBoxComponent::SetCurrentItem
override bool SetCurrentItem(int i, bool playSound=false, bool animate=false)
Definition
SCR_ComboBoxComponent.c:242
SCR_ComboBoxComponent::AddItem
override int AddItem(string item, bool last=false, Managed data=null)
Definition
SCR_ComboBoxComponent.c:504
SCR_ControllerPreset
Controller preset config class.
Definition
SCR_ControllerPresetsConfig.c:18
SCR_ControllerPreset::SetResourceName
void SetResourceName(string preset)
Definition
SCR_ControllerPresetsConfig.c:38
SCR_ControllerPreset::SetDisplayName
void SetDisplayName(string name)
Definition
SCR_ControllerPresetsConfig.c:44
SCR_ControllerPreset::GetResourceName
ResourceName GetResourceName()
Definition
SCR_ControllerPresetsConfig.c:26
SCR_ControllerPresetsSettingsSubmenu
Definition
SCR_ControllerPresetsSettingsSubMenu.c:2
SCR_ControllerPresetsSettingsSubmenu::OnIndexChanged
void OnIndexChanged(SCR_ComboBoxComponent component, int index)
Definition
SCR_ControllerPresetsSettingsSubMenu.c:181
SCR_ControllerPresetsSettingsSubmenu::HandleJoystickDevices
void HandleJoystickDevices()
Definition
SCR_ControllerPresetsSettingsSubMenu.c:135
SCR_ControllerPresetsSettingsSubmenu::SetupJoystickPresets
void SetupJoystickPresets(SCR_ComboBoxComponent component)
Definition
SCR_ControllerPresetsSettingsSubMenu.c:227
SCR_ScriptedWidgetComponent::m_wRoot
Widget m_wRoot
Definition
SCR_ScriptedWidgetComponent.c:9
SCR_SettingBindingGameplay
Definition
SCR_SettingBindingGameplay.c:2
SCR_SettingsManagerKeybindModule
Definition
SCR_SettingsManagerKeybindModule.c:3
SCR_SettingsManagerKeybindModule::GetControllerPresets
void GetControllerPresets(notnull out array< ref SCR_ControllerPreset > controllerPresets)
Definition
SCR_SettingsManagerKeybindModule.c:319
SCR_SettingsManagerKeybindModule::GetActivePresetIndex
int GetActivePresetIndex(notnull array< ref SCR_ControllerPreset > presets)
Definition
SCR_SettingsManagerKeybindModule.c:426
SCR_SettingsManagerKeybindModule::SelectControllerPresets
void SelectControllerPresets(int presetIndex=-1)
Definition
SCR_SettingsManagerKeybindModule.c:339
SCR_SettingsManagerKeybindModule::GetJoystickPresets
void GetJoystickPresets(notnull out array< ref SCR_ControllerPreset > joystickPresets)
Get all preset lists defined for joysticks.
Definition
SCR_SettingsManagerKeybindModule.c:330
SCR_SettingsManagerKeybindModule::SelectJoystickPresetPath
void SelectJoystickPresetPath(string path)
Definition
SCR_SettingsManagerKeybindModule.c:406
SCR_SettingsSubMenuBase
Definition
SCR_SettingsSubMenuBase.c:2
SCR_SettingsSubMenuBase::m_aSettingsBindings
ref array< ref SCR_SettingsBindingBase > m_aSettingsBindings
Definition
SCR_SettingsSubMenuBase.c:3
SCR_SettingsSubMenuBase::OnTabHide
override void OnTabHide()
Definition
SCR_SettingsSubMenuBase.c:15
SCR_SettingsSubMenuBase::HideMenuItem
void HideMenuItem(string widgetName)
Definition
SCR_SettingsSubMenuBase.c:56
Widget
Definition
Widget.c:13
scripts
Game
UI
Menu
SettingsMenu
SCR_ControllerPresetsSettingsSubMenu.c
Generated by
1.17.0