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_SettingsBindingBase.c
Go to the documentation of this file.
1
class
SCR_SettingsBindingBase
2
{
3
protected
string
m_sModule
;
4
protected
string
m_sSubModule
;
5
protected
string
m_sName
;
6
protected
string
m_sWidgetName
;
7
protected
BaseContainer
m_Setting
;
8
protected
int
m_iItem
;
9
protected
bool
m_bUseGameUserSettings
;
10
11
protected
ref
ScriptInvoker
m_OnEntryChanged
;
12
13
// Values to be filled
14
protected
float
m_fMin
,
m_fMax
,
m_fStep
,
m_fCurrent
;
15
protected
ref array<string>
m_aNames
=
new
array<string>();
16
protected
ref array<int>
m_aVals
=
new
array<int>();
17
protected
bool
m_bHasLimits
=
false
;
18
19
//------------------------------------------------------------------------------------------------
20
void
SCR_SettingsBindingBase
(
string
module,
string
name,
string
widgetName,
string
subModule =
string
.Empty)
21
{
22
m_sModule
=
module
;
23
m_sName
= name;
24
m_sWidgetName
= widgetName;
25
m_sSubModule
= subModule;
26
}
27
28
//------------------------------------------------------------------------------------------------
29
SCR_WLibComponentBase
GetComponent
(
string
name,
Widget
parent)
30
{
31
if
(!parent)
32
return
null;
33
34
Widget
w = parent.FindAnyWidget(name);
35
if
(!w)
36
return
null;
37
38
return
SCR_WLibComponentBase
.Cast(w.FindHandler(
SCR_WLibComponentBase
));
39
}
40
41
//------------------------------------------------------------------------------------------------
42
ScriptInvoker
GetEntryChangedInvoker
()
43
{
44
if
(!
m_OnEntryChanged
)
45
m_OnEntryChanged
=
new
ScriptInvoker
();
46
47
return
m_OnEntryChanged
;
48
}
49
50
//------------------------------------------------------------------------------------------------
51
string
GetWidgetName
()
52
{
53
return
m_sWidgetName
;
54
}
55
56
//------------------------------------------------------------------------------------------------
57
void
LoadEntry
(
Widget
parent,
bool
forceLoadSettings =
false
,
bool
addEntryChangedEventHandler =
true
)
58
{
59
if
((forceLoadSettings || !
m_Setting
) && !
SetBaseContainer
())
60
return
;
61
62
if
(!
m_Setting
||
m_iItem
< 0)
63
{
64
Print
(
"Settings item not found: "
+
m_sName
,
LogLevel
.WARNING);
65
return
;
66
}
67
68
SCR_WLibComponentBase
comp =
GetComponent
(
m_sWidgetName
, parent);
69
if
(!comp)
70
comp =
GetComponent
(
m_sWidgetName
, parent.GetParent());
// VideoSettings Quality Preset "shortcut"
71
72
if
(!comp)
73
{
74
Print
(
"Settings widget not found: "
+
m_sWidgetName
,
LogLevel
.WARNING);
75
return
;
76
}
77
78
if
(
InitSpinBox
(comp, addEntryChangedEventHandler))
79
return
;
80
81
if
(
InitSlider
(comp, addEntryChangedEventHandler))
82
return
;
83
84
if
(
InitCheckBox
(comp, addEntryChangedEventHandler))
85
return
;
86
87
if
(
InitComboBox
(comp, addEntryChangedEventHandler))
88
return
;
89
}
90
91
//------------------------------------------------------------------------------------------------
92
protected
SCR_SpinBoxComponent
InitSpinBox
(
SCR_WLibComponentBase
comp,
bool
addEntryChangedEventHandler)
93
{
94
SCR_SpinBoxComponent
spin =
SCR_SpinBoxComponent
.Cast(comp);
95
if
(!spin)
96
return
null;
97
98
int
current;
99
m_Setting
.Get(
m_sName
, current);
100
spin.
SetCurrentItem
(current);
101
m_Setting
.GetEnumValues(
m_iItem
,
m_aNames
,
m_aVals
);
102
if
(
m_Setting
.GetLimits(
m_iItem
,
m_fMin
,
m_fMax
,
m_fStep
) == 3)
103
{
104
m_bHasLimits
=
true
;
105
106
int
intendedSize =
Math
.Max(
m_aNames
.Count(),
m_fMax
+ 1);
107
if
(intendedSize != spin.GetNumItems())
108
Print
(
string
.Format(
"Settings: %1 has wrong number of items: %2/%3"
,
m_sName
, spin.GetNumItems(), intendedSize),
LogLevel
.WARNING);
109
}
110
111
if
(addEntryChangedEventHandler)
112
spin.m_OnChanged.Insert(
OnSelectableChanged
);
113
114
return
spin;
115
}
116
117
//------------------------------------------------------------------------------------------------
118
protected
SCR_SliderComponent
InitSlider
(
SCR_WLibComponentBase
comp,
bool
addEntryChangedEventHandler)
119
{
120
SCR_SliderComponent
slider =
SCR_SliderComponent
.Cast(comp);
121
if
(!slider)
122
return
null;
123
124
float
val;
125
if
(
m_Setting
.GetLimits(
m_iItem
,
m_fMin
,
m_fMax
,
m_fStep
) == 3)
126
m_bHasLimits
=
true
;
127
m_Setting
.Get(
m_sName
, val);
128
slider.
SetMin
(
m_fMin
);
129
slider.
SetMax
(
m_fMax
);
130
slider.
SetStep
(
m_fStep
);
131
slider.
SetValue
(val);
132
133
if
(addEntryChangedEventHandler)
134
slider.
GetOnChangedFinal
().Insert(
OnSliderChanged
);
135
136
return
slider;
137
}
138
139
//------------------------------------------------------------------------------------------------
140
protected
SCR_CheckboxComponent
InitCheckBox
(
SCR_WLibComponentBase
comp,
bool
addEntryChangedEventHandler)
141
{
142
SCR_CheckboxComponent
check =
SCR_CheckboxComponent
.Cast(comp);
143
if
(!check)
144
return
null;
145
146
bool
checked;
147
m_Setting
.Get(
m_sName
, checked);
148
check.SetChecked(checked);
149
if
(addEntryChangedEventHandler)
150
check.m_OnChanged.Insert(
OnCheckboxChanged
);
151
152
return
check;
153
}
154
155
//------------------------------------------------------------------------------------------------
156
protected
SCR_ComboBoxComponent
InitComboBox
(
SCR_WLibComponentBase
comp,
bool
addEntryChangedEventHandler)
157
{
158
SCR_ComboBoxComponent
combo =
SCR_ComboBoxComponent
.Cast(comp);
159
if
(!combo)
160
return
null;
161
162
int
current;
163
m_Setting
.Get(
m_sName
, current);
164
combo.
SetCurrentItem
(current);
165
166
// Check for array size
167
m_Setting
.GetEnumValues(
m_iItem
,
m_aNames
,
m_aVals
);
168
if
(
m_Setting
.GetLimits(
m_iItem
,
m_fMin
,
m_fMax
,
m_fStep
) == 3)
169
{
170
m_bHasLimits
=
true
;
171
172
int
intendedSize =
Math
.Max(
m_aNames
.Count(),
m_fMax
);
173
if
(intendedSize != combo.GetNumItems())
174
Print
(
string
.Format(
"Settings: %1 has wrong number of items: %2/%3"
,
m_sName
, combo.GetNumItems(), intendedSize),
LogLevel
.WARNING);
175
}
176
177
if
(addEntryChangedEventHandler)
178
combo.m_OnChanged.Insert(
OnSelectableChanged
);
179
180
return
combo;
181
}
182
183
//------------------------------------------------------------------------------------------------
184
protected
BaseContainer
SetBaseContainer
()
185
{
186
UserSettings
userSettings;
187
if
(
m_bUseGameUserSettings
)
188
userSettings =
GetGame
().GetGameUserSettings();
189
else
190
userSettings =
GetGame
().GetEngineUserSettings();
191
192
if
(!userSettings)
193
return
null;
194
195
if
(
m_sSubModule
.IsEmpty())
196
m_Setting
= userSettings.GetModule(
m_sModule
);
197
else
198
{
199
BaseContainer
setting =
GetGame
().GetEngineUserSettings().GetModule(
m_sModule
);
200
if
(setting)
201
m_Setting
= setting.GetObject(
m_sSubModule
);
202
}
203
204
return
m_Setting
;
205
}
206
207
//------------------------------------------------------------------------------------------------
208
protected
void
OnSelectableChanged
(
SCR_WLibComponentBase
comp,
int
i)
209
{
210
if
(!
m_Setting
&& !
SetBaseContainer
())
211
return
;
212
213
if
(i >= 0 && i <
m_aVals
.Count())
214
{
215
m_Setting
.Set(
m_sName
,
m_aVals
[i]);
216
}
217
else
if
(
m_bHasLimits
)
218
{
219
int
value =
m_fMin
+
m_fStep
* i;
220
m_Setting
.Set(
m_sName
, value);
221
}
222
else
223
{
224
m_Setting
.Set(
m_sName
, i);
225
}
226
227
if
(
m_OnEntryChanged
)
228
m_OnEntryChanged
.Invoke(
this
);
229
230
//SCR_AnalyticsApplication.GetInstance().ChangeSetting(m_sModule, m_sName);
231
}
232
233
//------------------------------------------------------------------------------------------------
234
protected
void
OnSliderChanged
(
SCR_WLibComponentBase
comp,
float
value)
235
{
236
if
(!
m_Setting
&& !
SetBaseContainer
())
237
return
;
238
239
m_Setting
.Set(
m_sName
, value);
240
if
(
m_OnEntryChanged
)
241
m_OnEntryChanged
.Invoke(
this
);
242
243
//SCR_AnalyticsApplication.GetInstance().ChangeSetting(m_sModule, m_sName);
244
}
245
246
//------------------------------------------------------------------------------------------------
247
protected
void
OnCheckboxChanged
(
SCR_WLibComponentBase
comp,
bool
checked)
248
{
249
if
(!
m_Setting
&& !
SetBaseContainer
())
250
return
;
251
252
m_Setting
.Set(
m_sName
, checked);
253
if
(
m_OnEntryChanged
)
254
m_OnEntryChanged
.Invoke(
this
);
255
256
//SCR_AnalyticsApplication.GetInstance().ChangeSetting(m_sModule, m_sName);
257
}
258
};
GetGame
ArmaReforgerScripted GetGame()
Definition
game.c:1398
BaseContainer
Definition
BaseContainer.c:13
Math
Definition
Math.c:13
SCR_CheckboxComponent
This is refactored checkbox preserving its own class and API for compatability purposes.
Definition
SCR_CheckboxComponent.c:4
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_SettingsBindingBase::m_OnEntryChanged
ref ScriptInvoker m_OnEntryChanged
Definition
SCR_SettingsBindingBase.c:11
SCR_SettingsBindingBase::m_sName
string m_sName
Definition
SCR_SettingsBindingBase.c:5
SCR_SettingsBindingBase::InitSpinBox
SCR_SpinBoxComponent InitSpinBox(SCR_WLibComponentBase comp, bool addEntryChangedEventHandler)
Definition
SCR_SettingsBindingBase.c:92
SCR_SettingsBindingBase::m_sModule
string m_sModule
Definition
SCR_SettingsBindingBase.c:3
SCR_SettingsBindingBase::InitComboBox
SCR_ComboBoxComponent InitComboBox(SCR_WLibComponentBase comp, bool addEntryChangedEventHandler)
Definition
SCR_SettingsBindingBase.c:156
SCR_SettingsBindingBase::InitCheckBox
SCR_CheckboxComponent InitCheckBox(SCR_WLibComponentBase comp, bool addEntryChangedEventHandler)
Definition
SCR_SettingsBindingBase.c:140
SCR_SettingsBindingBase::LoadEntry
void LoadEntry(Widget parent, bool forceLoadSettings=false, bool addEntryChangedEventHandler=true)
Definition
SCR_SettingsBindingBase.c:57
SCR_SettingsBindingBase::m_bHasLimits
bool m_bHasLimits
Definition
SCR_SettingsBindingBase.c:17
SCR_SettingsBindingBase::InitSlider
SCR_SliderComponent InitSlider(SCR_WLibComponentBase comp, bool addEntryChangedEventHandler)
Definition
SCR_SettingsBindingBase.c:118
SCR_SettingsBindingBase::m_sWidgetName
string m_sWidgetName
Definition
SCR_SettingsBindingBase.c:6
SCR_SettingsBindingBase::m_aNames
ref array< string > m_aNames
Definition
SCR_SettingsBindingBase.c:15
SCR_SettingsBindingBase::m_sSubModule
string m_sSubModule
Definition
SCR_SettingsBindingBase.c:4
SCR_SettingsBindingBase::m_Setting
BaseContainer m_Setting
Definition
SCR_SettingsBindingBase.c:7
SCR_SettingsBindingBase::SetBaseContainer
BaseContainer SetBaseContainer()
Definition
SCR_SettingsBindingBase.c:184
SCR_SettingsBindingBase::GetComponent
SCR_WLibComponentBase GetComponent(string name, Widget parent)
Definition
SCR_SettingsBindingBase.c:29
SCR_SettingsBindingBase::m_fStep
float m_fStep
Definition
SCR_SettingsBindingBase.c:14
SCR_SettingsBindingBase::m_bUseGameUserSettings
bool m_bUseGameUserSettings
Definition
SCR_SettingsBindingBase.c:9
SCR_SettingsBindingBase::GetWidgetName
string GetWidgetName()
Definition
SCR_SettingsBindingBase.c:51
SCR_SettingsBindingBase::OnSliderChanged
void OnSliderChanged(SCR_WLibComponentBase comp, float value)
Definition
SCR_SettingsBindingBase.c:234
SCR_SettingsBindingBase::GetEntryChangedInvoker
ScriptInvoker GetEntryChangedInvoker()
Definition
SCR_SettingsBindingBase.c:42
SCR_SettingsBindingBase::m_aVals
ref array< int > m_aVals
Definition
SCR_SettingsBindingBase.c:16
SCR_SettingsBindingBase::m_iItem
int m_iItem
Definition
SCR_SettingsBindingBase.c:8
SCR_SettingsBindingBase::OnSelectableChanged
void OnSelectableChanged(SCR_WLibComponentBase comp, int i)
Definition
SCR_SettingsBindingBase.c:208
SCR_SettingsBindingBase::m_fCurrent
float m_fCurrent
Definition
SCR_SettingsBindingBase.c:14
SCR_SettingsBindingBase::SCR_SettingsBindingBase
void SCR_SettingsBindingBase(string module, string name, string widgetName, string subModule=string.Empty)
Definition
SCR_SettingsBindingBase.c:20
SCR_SettingsBindingBase::OnCheckboxChanged
void OnCheckboxChanged(SCR_WLibComponentBase comp, bool checked)
Definition
SCR_SettingsBindingBase.c:247
SCR_SettingsBindingBase::m_fMin
float m_fMin
Definition
SCR_SettingsBindingBase.c:14
SCR_SettingsBindingBase::m_fMax
float m_fMax
Definition
SCR_SettingsBindingBase.c:14
SCR_SliderComponent
Definition
SCR_SliderComponent.c:3
SCR_SliderComponent::GetOnChangedFinal
ScriptInvoker GetOnChangedFinal()
Definition
SCR_SliderComponent.c:209
SCR_SliderComponent::SetMin
void SetMin(float min)
Definition
SCR_SliderComponent.c:257
SCR_SliderComponent::SetStep
void SetStep(float step)
Definition
SCR_SliderComponent.c:269
SCR_SliderComponent::SetValue
void SetValue(float value)
Definition
SCR_SliderComponent.c:198
SCR_SliderComponent::SetMax
void SetMax(float max)
Definition
SCR_SliderComponent.c:263
SCR_SpinBoxComponent
Definition
SCR_SpinBoxComponent.c:2
SCR_SpinBoxComponent::SetCurrentItem
override bool SetCurrentItem(int i, bool playSound=false, bool animate=false)
Definition
SCR_SpinBoxComponent.c:142
SCR_WLibComponentBase
Base class for all final Reforger interactive elements.
Definition
SCR_WLibComponentBase.c:9
UserSettings
Definition
UserSettings.c:13
Widget
Definition
Widget.c:13
Print
proto void Print(void var, LogLevel level=LogLevel.NORMAL)
Prints content of variable to console/log.
LogLevel
LogLevel
Enum with severity of the logging message.
Definition
LogLevel.c:14
ScriptInvoker
ScriptInvokerBase< func > ScriptInvoker
Definition
tools.c:134
scripts
Game
UI
Menu
SettingsMenu
SCR_SettingsBindingBase.c
Generated by
1.17.0