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_SuperMenuComponent.c
Go to the documentation of this file.
1
9
10
class
SCR_SuperMenuComponent
:
SCR_ScriptedWidgetComponent
11
{
12
[
Attribute
(
"{08CF3B69CB1ACBC4}UI/layouts/WidgetLibrary/WLib_NavigationButton.layout"
)]
13
protected
ResourceName
m_sNavigationButtonLayout
;
14
15
[
Attribute
(
"TabView"
,
UIWidgets
.EditBox,
desc
:
"Name of tabview widget to find tab view component."
)]
16
protected
string
m_sTabViewName
;
17
18
protected
SCR_TabViewComponent
m_TabViewComponent
;
19
20
protected
SCR_SubMenuBase
m_OpenedSubmenu
;
21
22
// The index might not be the same as the tab's Elements, as the tabs might be created later or not have a SubMenu component
23
protected
ref array<SCR_SubMenuBase>
m_aSubMenus
= {};
24
25
Widget
m_wMenuRoot
;
26
27
// Menu requests
28
protected
ref
ScriptInvokerVoid
m_OnRequestCloseMenu
;
29
30
//------------------------------------------------------------------------------------------------
31
// --- Main events, needing to be called by manager classes ---
32
//------------------------------------------------------------------------------------------------
33
// As parameter, pass a widget the sub menus can use to grab whatever they need from the menu layout (eg the SCR_DynamicFooterComponent)
34
void
Init
(
Widget
menuRoot)
35
{
36
m_wMenuRoot
= menuRoot;
37
38
// Tab view
39
Widget
tabView =
m_wRoot
.FindAnyWidget(
m_sTabViewName
);
40
if
(tabView)
41
m_TabViewComponent
=
SCR_TabViewComponent
.Cast(tabView.FindHandler(
SCR_TabViewComponent
));
42
43
if
(!
m_TabViewComponent
)
44
return
;
45
46
m_TabViewComponent
.GetOnContentCreate().Insert(
OnTabCreate
);
47
m_TabViewComponent
.GetOnContentShow().Insert(
OnTabShow
);
48
m_TabViewComponent
.GetOnContentHide().Insert(
OnTabHide
);
49
m_TabViewComponent
.GetOnContentRemove().Insert(
OnTabRemove
);
50
m_TabViewComponent
.GetOnTabChange().Insert(
OnTabChange
);
51
52
// Init tabs
53
if
(
m_TabViewComponent
.m_bManualInit)
54
{
55
// Init tab view and rely on it's events
56
m_TabViewComponent
.Init();
57
}
58
else
59
{
60
// Tab view has already created tabs, manually init opened content
61
array<ref SCR_TabViewContent> contents =
m_TabViewComponent
.GetContents();
62
63
foreach
(
int
i, SCR_TabViewContent
content
: contents)
64
{
65
if
(!
content
.m_wTab)
66
continue
;
67
68
OnTabCreate
(
m_TabViewComponent
,
content
.m_wTab, i);
69
70
if
(i ==
m_TabViewComponent
.m_iSelectedTab)
71
OnTabShow
(
m_TabViewComponent
,
content
.m_wTab);
72
}
73
}
74
}
75
76
//------------------------------------------------------------------------------------------------
77
void
OnMenuShow
()
78
{
79
if
(
m_OpenedSubmenu
&&
m_OpenedSubmenu
.GetRootWidget().IsVisible() &&
m_OpenedSubmenu
.GetShown())
80
m_OpenedSubmenu
.OnMenuShow();
81
}
82
83
//------------------------------------------------------------------------------------------------
84
void
OnMenuHide
()
85
{
86
if
(
m_OpenedSubmenu
)
87
m_OpenedSubmenu
.OnMenuHide();
88
}
89
90
//------------------------------------------------------------------------------------------------
91
void
OnMenuUpdate
(
float
tDelta)
92
{
93
if
(
m_OpenedSubmenu
&&
m_OpenedSubmenu
.GetRootWidget().IsVisible() &&
m_OpenedSubmenu
.GetShown())
94
m_OpenedSubmenu
.OnMenuUpdate(tDelta);
95
}
96
97
//------------------------------------------------------------------------------------------------
98
void
OnMenuFocusGained
()
99
{
100
if
(
m_OpenedSubmenu
)
101
m_OpenedSubmenu
.OnMenuFocusGained();
102
}
103
104
//------------------------------------------------------------------------------------------------
105
void
OnMenuFocusLost
()
106
{
107
if
(
m_OpenedSubmenu
)
108
m_OpenedSubmenu
.OnMenuFocusLost();
109
}
110
111
//------------------------------------------------------------------------------------------------
112
void
OnMenuClose
()
113
{
114
foreach
(
SCR_SubMenuBase
subMenu :
m_aSubMenus
)
115
{
116
if
(!subMenu)
117
continue
;
118
119
subMenu.OnTabHide();
120
subMenu.OnTabRemove();
121
}
122
}
123
124
//------------------------------------------------------------------------------------------------
125
// --- Sub menus handling ---
126
//------------------------------------------------------------------------------------------------
127
// Might be called after OnMenuOpen, given that tabs have the option to be created only when they are selected
128
SCR_SubMenuBase
OnTabCreate
(
SCR_TabViewComponent
comp,
Widget
w,
int
index
)
129
{
130
if
(!w)
131
return
null;
132
133
SCR_SubMenuBase
subMenu =
SCR_SubMenuBase
.Cast(w.FindHandler(
SCR_SubMenuBase
));
134
if
(!subMenu)
135
return
null;
136
137
subMenu.
GetOnRequestCloseMenu
().Insert(
OnRequestCloseMenu
);
138
subMenu.
GetOnRequestTabChange
().Insert(
OnRequestTabChange
);
139
140
// Init sub menu
141
subMenu.
OnTabCreate
(
m_wMenuRoot
,
m_sNavigationButtonLayout
,
index
);
142
143
m_aSubMenus
.Insert(subMenu);
144
145
return
subMenu;
146
}
147
148
//------------------------------------------------------------------------------------------------
149
SCR_SubMenuBase
OnTabShow
(
SCR_TabViewComponent
comp,
Widget
w)
150
{
151
if
(!w)
152
return
null;
153
154
SCR_SubMenuBase
subMenu =
SCR_SubMenuBase
.Cast(w.FindHandler(
SCR_SubMenuBase
));
155
if
(!subMenu)
156
return
null;
157
158
subMenu.
OnTabShow
();
159
m_OpenedSubmenu
= subMenu;
160
161
return
subMenu;
162
}
163
164
//------------------------------------------------------------------------------------------------
165
SCR_SubMenuBase
OnTabHide
(
SCR_TabViewComponent
comp,
Widget
w)
166
{
167
if
(!w)
168
return
null;
169
170
SCR_SubMenuBase
subMenu =
SCR_SubMenuBase
.Cast(w.FindHandler(
SCR_SubMenuBase
));
171
if
(!subMenu)
172
return
null;
173
174
subMenu.
OnTabHide
();
175
176
return
subMenu;
177
}
178
179
//------------------------------------------------------------------------------------------------
180
SCR_SubMenuBase
OnTabRemove
(
SCR_TabViewComponent
comp,
Widget
w)
181
{
182
if
(!w)
183
return
null;
184
185
SCR_SubMenuBase
subMenu =
SCR_SubMenuBase
.Cast(w.FindHandler(
SCR_SubMenuBase
));
186
if
(!subMenu)
187
return
null;
188
189
subMenu.
OnTabRemove
();
190
m_aSubMenus
.RemoveItem(subMenu);
191
192
return
subMenu;
193
}
194
195
//------------------------------------------------------------------------------------------------
196
SCR_SubMenuBase
OnTabChange
(
SCR_TabViewComponent
comp,
Widget
w)
197
{
198
if
(!w)
199
return
null;
200
201
SCR_SubMenuBase
subMenu =
SCR_SubMenuBase
.Cast(w.FindHandler(
SCR_SubMenuBase
));
202
if
(!subMenu)
203
return
null;
204
205
subMenu.
OnTabChange
();
206
207
return
subMenu;
208
}
209
210
//------------------------------------------------------------------------------------------------
211
protected
void
OnRequestCloseMenu
()
212
{
213
if
(
m_OnRequestCloseMenu
)
214
m_OnRequestCloseMenu
.Invoke();
215
}
216
217
//------------------------------------------------------------------------------------------------
218
protected
void
OnRequestTabChange
(
int
newTab,
int
oldTab)
219
{
220
m_TabViewComponent
.ShowTab(newTab);
221
}
222
223
//------------------------------------------------------------------------------------------------
224
// --- Public ---
225
//------------------------------------------------------------------------------------------------
226
SCR_TabViewComponent
GetTabView
()
227
{
228
return
m_TabViewComponent
;
229
}
230
231
//------------------------------------------------------------------------------------------------
232
int
GetSelectedTab
()
233
{
234
return
m_TabViewComponent
.m_iSelectedTab;
235
}
236
237
//------------------------------------------------------------------------------------------------
238
SCR_SubMenuBase
GetOpenedSubMenu
()
239
{
240
return
m_OpenedSubmenu
;
241
}
242
243
//------------------------------------------------------------------------------------------------
244
// Returns a sub menu based TabView's Elements, meaning it might return null if the tab's content hasn't been created yet
245
SCR_SubMenuBase
GetSubMenu
(
int
index
)
246
{
247
Widget
content
=
m_TabViewComponent
.GetContentWidget(
index
);
248
if
(!
content
)
249
return
null;
250
251
return
SCR_SubMenuBase
.Cast(
content
.FindHandler(
SCR_SubMenuBase
));
252
}
253
254
//------------------------------------------------------------------------------------------------
255
static
SCR_SuperMenuComponent
FindComponent
(notnull
Widget
w)
256
{
257
return
SCR_SuperMenuComponent
.Cast(w.FindHandler(
SCR_SuperMenuComponent
));
258
}
259
260
//------------------------------------------------------------------------------------------------
261
// --- Invokers ---
262
//------------------------------------------------------------------------------------------------
263
//------------------------------------------------------------------------------------------------
264
ScriptInvokerVoid
GetOnRequestCloseMenu
()
265
{
266
if
(!
m_OnRequestCloseMenu
)
267
m_OnRequestCloseMenu
=
new
ScriptInvokerVoid
();
268
269
return
m_OnRequestCloseMenu
;
270
}
271
}
content
class RestAPIHelper< JsonApiStruct T > content
index
SCR_DestructionSynchronizationComponentClass ScriptComponentClass int index
Definition
SCR_DestructionSynchronizationComponent.c:17
OnTabShow
override void OnTabShow()
Definition
SCR_NewsSubMenu.c:48
desc
UI Textures DeployMenu Briefing conflict_HintBanner_1_UI desc
Definition
SCR_RespawnBriefingComponent.c:17
ScriptInvokerVoid
ScriptInvokerBase< ScriptInvokerVoidMethod > ScriptInvokerVoid
Definition
SCR_ScriptInvokerHelper.c:9
ResourceName
Definition
ResourceName.c:13
SCR_ScriptedWidgetComponent
Definition
SCR_ScriptedWidgetComponent.c:8
SCR_ScriptedWidgetComponent::m_wRoot
Widget m_wRoot
Definition
SCR_ScriptedWidgetComponent.c:9
SCR_SubMenuBase
Definition
SCR_SubMenuBase.c:7
SCR_SubMenuBase::GetOnRequestCloseMenu
ScriptInvokerVoid GetOnRequestCloseMenu()
Definition
SCR_SubMenuBase.c:200
SCR_SubMenuBase::OnTabChange
void OnTabChange()
SCR_SubMenuBase::OnTabRemove
void OnTabRemove()
Definition
SCR_SubMenuBase.c:73
SCR_SubMenuBase::OnTabShow
void OnTabShow()
Definition
SCR_SubMenuBase.c:57
SCR_SubMenuBase::OnTabHide
void OnTabHide()
Definition
SCR_SubMenuBase.c:65
SCR_SubMenuBase::GetOnRequestTabChange
ScriptInvokerInt2 GetOnRequestTabChange()
Definition
SCR_SubMenuBase.c:209
SCR_SubMenuBase::OnTabCreate
void OnTabCreate(Widget menuRoot, ResourceName buttonsLayout, int index)
Definition
SCR_SubMenuBase.c:47
SCR_SuperMenuComponent
Definition
SCR_SuperMenuComponent.c:11
SCR_SuperMenuComponent::OnTabShow
SCR_SubMenuBase OnTabShow(SCR_TabViewComponent comp, Widget w)
Definition
SCR_SuperMenuComponent.c:149
SCR_SuperMenuComponent::OnTabHide
SCR_SubMenuBase OnTabHide(SCR_TabViewComponent comp, Widget w)
Definition
SCR_SuperMenuComponent.c:165
SCR_SuperMenuComponent::OnMenuShow
void OnMenuShow()
Definition
SCR_SuperMenuComponent.c:77
SCR_SuperMenuComponent::OnMenuClose
void OnMenuClose()
Definition
SCR_SuperMenuComponent.c:112
SCR_SuperMenuComponent::OnRequestTabChange
void OnRequestTabChange(int newTab, int oldTab)
Definition
SCR_SuperMenuComponent.c:218
SCR_SuperMenuComponent::OnTabCreate
SCR_SubMenuBase OnTabCreate(SCR_TabViewComponent comp, Widget w, int index)
Definition
SCR_SuperMenuComponent.c:128
SCR_SuperMenuComponent::m_wMenuRoot
Widget m_wMenuRoot
Definition
SCR_SuperMenuComponent.c:25
SCR_SuperMenuComponent::OnTabRemove
SCR_SubMenuBase OnTabRemove(SCR_TabViewComponent comp, Widget w)
Definition
SCR_SuperMenuComponent.c:180
SCR_SuperMenuComponent::GetSelectedTab
int GetSelectedTab()
Definition
SCR_SuperMenuComponent.c:232
SCR_SuperMenuComponent::GetOpenedSubMenu
SCR_SubMenuBase GetOpenedSubMenu()
Definition
SCR_SuperMenuComponent.c:238
SCR_SuperMenuComponent::m_TabViewComponent
SCR_TabViewComponent m_TabViewComponent
Definition
SCR_SuperMenuComponent.c:18
SCR_SuperMenuComponent::OnMenuFocusGained
void OnMenuFocusGained()
Definition
SCR_SuperMenuComponent.c:98
SCR_SuperMenuComponent::GetTabView
SCR_TabViewComponent GetTabView()
Definition
SCR_SuperMenuComponent.c:226
SCR_SuperMenuComponent::Init
void Init(Widget menuRoot)
Definition
SCR_SuperMenuComponent.c:34
SCR_SuperMenuComponent::m_aSubMenus
ref array< SCR_SubMenuBase > m_aSubMenus
Definition
SCR_SuperMenuComponent.c:23
SCR_SuperMenuComponent::m_sNavigationButtonLayout
ResourceName m_sNavigationButtonLayout
Definition
SCR_SuperMenuComponent.c:13
SCR_SuperMenuComponent::GetOnRequestCloseMenu
ScriptInvokerVoid GetOnRequestCloseMenu()
Definition
SCR_SuperMenuComponent.c:264
SCR_SuperMenuComponent::OnMenuUpdate
void OnMenuUpdate(float tDelta)
Definition
SCR_SuperMenuComponent.c:91
SCR_SuperMenuComponent::OnMenuHide
void OnMenuHide()
Definition
SCR_SuperMenuComponent.c:84
SCR_SuperMenuComponent::GetSubMenu
SCR_SubMenuBase GetSubMenu(int index)
Definition
SCR_SuperMenuComponent.c:245
SCR_SuperMenuComponent::FindComponent
static SCR_SuperMenuComponent FindComponent(notnull Widget w)
Definition
SCR_SuperMenuComponent.c:255
SCR_SuperMenuComponent::OnMenuFocusLost
void OnMenuFocusLost()
Definition
SCR_SuperMenuComponent.c:105
SCR_SuperMenuComponent::m_OpenedSubmenu
SCR_SubMenuBase m_OpenedSubmenu
Definition
SCR_SuperMenuComponent.c:20
SCR_SuperMenuComponent::OnRequestCloseMenu
void OnRequestCloseMenu()
Definition
SCR_SuperMenuComponent.c:211
SCR_SuperMenuComponent::m_sTabViewName
string m_sTabViewName
Definition
SCR_SuperMenuComponent.c:16
SCR_SuperMenuComponent::m_OnRequestCloseMenu
ref ScriptInvokerVoid m_OnRequestCloseMenu
Definition
SCR_SuperMenuComponent.c:28
SCR_SuperMenuComponent::OnTabChange
SCR_SubMenuBase OnTabChange(SCR_TabViewComponent comp, Widget w)
Definition
SCR_SuperMenuComponent.c:196
SCR_TabViewComponent
Definition
SCR_TabViewComponent.c:14
UIWidgets
Definition
attributes.c:40
Widget
Definition
Widget.c:13
Attribute
SCR_FieldOfViewSettings Attribute
Definition
SendGoalMessage.c:170
scripts
Game
UI
Menu
SubMenu
SCR_SuperMenuComponent.c
Generated by
1.17.0