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_RadialMenuController.c
Go to the documentation of this file.
1
5
6
void
ScriptInvoker_RadialMenuEventMethod
(
SCR_RadialMenuController
radialMenuController);
7
typedef
func
ScriptInvoker_RadialMenuEventMethod
;
8
typedef
ScriptInvokerBase<ScriptInvoker_RadialMenuEventMethod>
ScriptInvoker_RadialMenuEvent
;
9
10
void
ScriptInvoker_ControlledRadialMenuEventMethod
(
SCR_RadialMenuController
radialMenuController,
bool
hasControl);
11
typedef
func
ScriptInvoker_ControlledRadialMenuEventMethod
;
12
typedef
ScriptInvokerBase<ScriptInvoker_ControlledRadialMenuEventMethod>
ScriptInvoker_ControlledRadialMenuEvent
;
13
//------------------------------------------------------------------------------------------------
14
[
BaseContainerProps
(configRoot:
true
)]
15
class
SCR_RadialMenuController
16
{
17
[
Attribute
(
"1"
)]
18
protected
bool
m_sEnableControl
;
19
20
[
Attribute
()]
21
protected
ref
SCR_SelectionMenuControllerInputs
m_RMControls
;
22
23
[
Attribute
()]
24
protected
ref
SCR_SelectionMenuData
m_Data
;
25
26
protected
ref
SCR_RadialMenu
m_RadialMenuToControl
;
// Menu that is kept for auto retaking control, can be chenged by user
27
protected
ref
SCR_RadialMenu
m_RadialMenu
;
28
protected
IEntity
m_Owner
;
29
30
// Callbacks
31
//protected ref ScriptInvoker<SCR_RadialMenuController> m_OnBeforeOpen;
32
protected
ref
ScriptInvoker_ControlledRadialMenuEvent
m_OnInputOpen
;
33
protected
ref
ScriptInvoker_RadialMenuEvent
m_OnTakeControl
;
34
protected
ref
ScriptInvoker_ControlledRadialMenuEvent
m_OnControllerChanged
;
35
36
//------------------------------------------------------------------------------------------------
37
ScriptInvoker_ControlledRadialMenuEvent
GetOnInputOpen
()
38
{
39
if
(!
m_OnInputOpen
)
40
m_OnInputOpen
=
new
ScriptInvoker_ControlledRadialMenuEvent
();
41
42
return
m_OnInputOpen
;
43
}
44
45
//------------------------------------------------------------------------------------------------
46
protected
void
InvokeOnInputOpen
(
bool
hasControl)
47
{
48
if
(
m_OnInputOpen
)
49
m_OnInputOpen
.Invoke(
this
, hasControl);
50
}
51
52
//------------------------------------------------------------------------------------------------
53
ScriptInvoker_RadialMenuEvent
GetOnTakeControl
()
54
{
55
if
(!
m_OnTakeControl
)
56
m_OnTakeControl
=
new
ScriptInvoker_RadialMenuEvent
();
57
58
return
m_OnTakeControl
;
59
}
60
61
//------------------------------------------------------------------------------------------------
62
protected
void
InvokeOnTakeControl
()
63
{
64
if
(
m_OnTakeControl
)
65
m_OnTakeControl
.Invoke(
this
);
66
}
67
68
//------------------------------------------------------------------------------------------------
69
protected
void
InvokeOnControllerChanged
(
bool
hasControl)
70
{
71
if
(
m_OnControllerChanged
)
72
m_OnControllerChanged
.Invoke(
this
, hasControl);
73
}
74
75
//------------------------------------------------------------------------------------------------
76
ScriptInvoker_ControlledRadialMenuEvent
GetOnControllerChanged
()
77
{
78
if
(!
m_OnControllerChanged
)
79
m_OnControllerChanged
=
new
ScriptInvoker_ControlledRadialMenuEvent
();
80
81
return
m_OnControllerChanged
;
82
}
83
84
//------------------------------------------------------------------------------------------------
87
void
Control
(
IEntity
owner,
SCR_RadialMenu
radialMenu = null)
88
{
89
// Clear previous inputs
90
if
(radialMenu)
91
radialMenu.GetOnControllerChanged().Remove(
OnMenuControllerChanged
);
92
93
m_Owner
= owner;
94
95
// Setup radial menu
96
if
(radialMenu == null)
97
radialMenu =
SCR_RadialMenu
.
GlobalRadialMenu
();
98
99
m_RadialMenu
= radialMenu;
100
if
(!
m_RadialMenu
)
101
return
;
102
103
m_RadialMenu
.SetController(
m_Owner
,
m_RMControls
);
104
105
if
(
m_RadialMenu
)
106
m_RadialMenu
.GetOnControllerChanged().Insert(
OnMenuControllerChanged
);
107
108
InvokeOnTakeControl
();
109
}
110
111
//------------------------------------------------------------------------------------------------
113
void
StopControl
(
bool
closeMenu =
false
)
114
{
115
if
(
m_RadialMenu
)
116
{
117
m_RadialMenu
.GetOnControllerChanged().Remove(
OnMenuControllerChanged
);
118
119
if
(closeMenu)
120
m_RadialMenu
.Close();
121
122
m_RadialMenu
= null;
123
}
124
}
125
126
//------------------------------------------------------------------------------------------------
128
void
SetMenuDisplay
()
129
{
130
131
}
132
133
//------------------------------------------------------------------------------------------------
134
void
UpdateMenuData
()
135
{
136
if
(
m_RadialMenu
)
137
m_RadialMenu
.AddEntries(
m_Data
.GetEntries(),
true
);
138
}
139
140
//------------------------------------------------------------------------------------------------
141
// Callbacks
142
//------------------------------------------------------------------------------------------------
143
144
//------------------------------------------------------------------------------------------------
145
void
OnInputOpen
()
146
{
147
bool
hasControl =
HasControl
();
// get state for potentially old controller
148
InvokeOnInputOpen
(hasControl);
149
150
if
(!
m_sEnableControl
)
151
return
;
152
153
if
(!
HasControl
())
// get the most up to date state
154
Control
(
m_Owner
,
m_RadialMenuToControl
);
155
156
// Check owner character concious state
157
if
(!
m_RMControls
.m_bShowWhileUnconcious)
158
{
159
IEntity
controllerEntity =
SCR_PlayerController
.
GetLocalControlledEntity
();
160
if
(controllerEntity)
161
{
162
CharacterControllerComponent characterControler = CharacterControllerComponent.Cast(controllerEntity.
FindComponent
(CharacterControllerComponent));
163
if
(characterControler && characterControler.IsUnconscious())
164
return
;
165
}
166
}
167
168
// Setup and open menu
169
if
(!
m_RadialMenu
)
170
return
;
171
172
if
(!
m_RadialMenu
.HasDisplay())
173
m_RadialMenu
.SetMenuDisplay();
174
175
m_RadialMenu
.Open();
176
}
177
178
//------------------------------------------------------------------------------------------------
179
protected
void
OnMenuControllerChanged
(
SCR_SelectionMenu
menu,
SCR_SelectionMenuControllerInputs
controller)
180
{
181
// Check menu
182
if
(menu !=
m_RadialMenu
)
183
return
;
184
185
// Check control
186
if
(controller !=
m_RMControls
)
187
{
188
menu.
ClearEntries
();
189
190
m_RadialMenu
.Close();
191
InvokeOnControllerChanged
(
false
);
192
193
StopControl
();
194
}
195
}
196
197
//------------------------------------------------------------------------------------------------
198
// Get
199
//------------------------------------------------------------------------------------------------
200
201
//------------------------------------------------------------------------------------------------
202
void
SetEnableControl
(
bool
enable)
203
{
204
m_sEnableControl
= enable;
205
}
206
207
//------------------------------------------------------------------------------------------------
208
bool
GetEnableControl
()
209
{
210
return
m_sEnableControl
;
211
}
212
213
//------------------------------------------------------------------------------------------------
214
void
SetRadialMenuToControl
(
SCR_RadialMenu
radialMenu)
215
{
216
m_RadialMenuToControl
= radialMenu;
217
}
218
219
//------------------------------------------------------------------------------------------------
220
SCR_RadialMenu
GetRadialMenu
()
221
{
222
return
m_RadialMenu
;
223
}
224
225
//------------------------------------------------------------------------------------------------
226
SCR_SelectionMenuControllerInputs
GetControls
()
227
{
228
return
m_RMControls
;
229
}
230
231
//------------------------------------------------------------------------------------------------
232
SCR_SelectionMenuData
GetData
()
233
{
234
return
m_Data
;
235
}
236
237
//------------------------------------------------------------------------------------------------
238
bool
IsMenuOpen
()
239
{
240
return
m_RadialMenu
&&
m_RadialMenu
.IsOpened();
241
}
242
243
//------------------------------------------------------------------------------------------------
244
void
CloseMenu
()
245
{
246
if
(
m_RadialMenu
)
247
m_RadialMenu
.Close();
248
}
249
250
//------------------------------------------------------------------------------------------------
252
bool
HasControl
()
253
{
254
if
(!
m_RadialMenu
)
255
return
false
;
256
257
if
(!
m_RadialMenu
.GetControllerInputs())
258
return
false
;
259
260
return
m_RadialMenu
.GetControllerInputs() ==
m_RMControls
;
261
}
262
263
//------------------------------------------------------------------------------------------------
264
void
SCR_RadialMenuController
()
265
{
266
if
(
m_RMControls
&& !
m_RMControls
.m_sOpenAction.IsEmpty())
267
GetGame
().GetInputManager().AddActionListener(
m_RMControls
.m_sOpenAction,
EActionTrigger
.DOWN,
OnInputOpen
);
268
}
269
}
GetGame
ArmaReforgerScripted GetGame()
Definition
game.c:1398
BaseContainerProps
SCR_AIAnimation_Loitering BaseContainerProps
Commanding menu commanding element class.
Definition
SCR_AIAnimationWaypoint.c:14
func
func
Definition
SCR_AIThreatSystem.c:6
ScriptInvoker_RadialMenuEvent
ScriptInvokerBase< ScriptInvoker_RadialMenuEventMethod > ScriptInvoker_RadialMenuEvent
Definition
SCR_RadialMenuController.c:8
ScriptInvoker_ControlledRadialMenuEventMethod
func ScriptInvoker_ControlledRadialMenuEventMethod
Definition
SCR_RadialMenuController.c:11
ScriptInvoker_ControlledRadialMenuEvent
ScriptInvokerBase< ScriptInvoker_ControlledRadialMenuEventMethod > ScriptInvoker_ControlledRadialMenuEvent
Definition
SCR_RadialMenuController.c:12
ScriptInvoker_RadialMenuEventMethod
func ScriptInvoker_RadialMenuEventMethod
Definition
SCR_RadialMenuController.c:7
IEntity
Definition
IEntity.c:13
IEntity::FindComponent
proto external Managed FindComponent(typename typeName)
SCR_PlayerController
Definition
SCR_PlayerController.c:31
SCR_PlayerController::GetLocalControlledEntity
static IEntity GetLocalControlledEntity()
Definition
SCR_PlayerController.c:495
SCR_RadialMenuController
Definition
SCR_RadialMenuController.c:16
SCR_RadialMenuController::SetRadialMenuToControl
void SetRadialMenuToControl(SCR_RadialMenu radialMenu)
Definition
SCR_RadialMenuController.c:214
SCR_RadialMenuController::StopControl
void StopControl(bool closeMenu=false)
Stop opening controls of current menu.
Definition
SCR_RadialMenuController.c:113
SCR_RadialMenuController::m_OnTakeControl
ref ScriptInvoker_RadialMenuEvent m_OnTakeControl
Definition
SCR_RadialMenuController.c:33
SCR_RadialMenuController::UpdateMenuData
void UpdateMenuData()
Definition
SCR_RadialMenuController.c:134
SCR_RadialMenuController::m_RadialMenu
ref SCR_RadialMenu m_RadialMenu
Definition
SCR_RadialMenuController.c:27
SCR_RadialMenuController::InvokeOnTakeControl
void InvokeOnTakeControl()
Definition
SCR_RadialMenuController.c:62
SCR_RadialMenuController::m_RMControls
ref SCR_SelectionMenuControllerInputs m_RMControls
Definition
SCR_RadialMenuController.c:21
SCR_RadialMenuController::SetEnableControl
void SetEnableControl(bool enable)
Definition
SCR_RadialMenuController.c:202
SCR_RadialMenuController::HasControl
bool HasControl()
Return true if cached menu is controlled by this owner entity.
Definition
SCR_RadialMenuController.c:252
SCR_RadialMenuController::m_OnControllerChanged
ref ScriptInvoker_ControlledRadialMenuEvent m_OnControllerChanged
Definition
SCR_RadialMenuController.c:34
SCR_RadialMenuController::GetOnInputOpen
ScriptInvoker_ControlledRadialMenuEvent GetOnInputOpen()
Definition
SCR_RadialMenuController.c:37
SCR_RadialMenuController::GetOnControllerChanged
ScriptInvoker_ControlledRadialMenuEvent GetOnControllerChanged()
Definition
SCR_RadialMenuController.c:76
SCR_RadialMenuController::InvokeOnInputOpen
void InvokeOnInputOpen(bool hasControl)
Definition
SCR_RadialMenuController.c:46
SCR_RadialMenuController::OnMenuControllerChanged
void OnMenuControllerChanged(SCR_SelectionMenu menu, SCR_SelectionMenuControllerInputs controller)
Definition
SCR_RadialMenuController.c:179
SCR_RadialMenuController::GetOnTakeControl
ScriptInvoker_RadialMenuEvent GetOnTakeControl()
Definition
SCR_RadialMenuController.c:53
SCR_RadialMenuController::InvokeOnControllerChanged
void InvokeOnControllerChanged(bool hasControl)
Definition
SCR_RadialMenuController.c:69
SCR_RadialMenuController::SetMenuDisplay
void SetMenuDisplay()
Definition
SCR_RadialMenuController.c:128
SCR_RadialMenuController::GetControls
SCR_SelectionMenuControllerInputs GetControls()
Definition
SCR_RadialMenuController.c:226
SCR_RadialMenuController::m_Owner
IEntity m_Owner
Definition
SCR_RadialMenuController.c:28
SCR_RadialMenuController::Control
void Control(IEntity owner, SCR_RadialMenu radialMenu=null)
Definition
SCR_RadialMenuController.c:87
SCR_RadialMenuController::GetEnableControl
bool GetEnableControl()
Definition
SCR_RadialMenuController.c:208
SCR_RadialMenuController::m_OnInputOpen
ref ScriptInvoker_ControlledRadialMenuEvent m_OnInputOpen
Definition
SCR_RadialMenuController.c:32
SCR_RadialMenuController::SCR_RadialMenuController
void SCR_RadialMenuController()
Definition
SCR_RadialMenuController.c:264
SCR_RadialMenuController::CloseMenu
void CloseMenu()
Definition
SCR_RadialMenuController.c:244
SCR_RadialMenuController::IsMenuOpen
bool IsMenuOpen()
Definition
SCR_RadialMenuController.c:238
SCR_RadialMenuController::GetData
SCR_SelectionMenuData GetData()
Definition
SCR_RadialMenuController.c:232
SCR_RadialMenuController::m_RadialMenuToControl
ref SCR_RadialMenu m_RadialMenuToControl
Definition
SCR_RadialMenuController.c:26
SCR_RadialMenuController::OnInputOpen
void OnInputOpen()
Definition
SCR_RadialMenuController.c:145
SCR_RadialMenuController::m_Data
ref SCR_SelectionMenuData m_Data
Definition
SCR_RadialMenuController.c:24
SCR_RadialMenuController::m_sEnableControl
bool m_sEnableControl
Definition
SCR_RadialMenuController.c:18
SCR_RadialMenuController::GetRadialMenu
SCR_RadialMenu GetRadialMenu()
Definition
SCR_RadialMenuController.c:220
SCR_RadialMenu
Definition
SCR_RadialMenu.c:19
SCR_RadialMenu::GlobalRadialMenu
static SCR_RadialMenu GlobalRadialMenu()
Find and get reference to global redial menu.
Definition
SCR_RadialMenu.c:99
SCR_SelectionMenuControllerInputs
Definition
SCR_SelectionMenu.c:813
SCR_SelectionMenuData
Definition
SCR_SelectionMenu.c:864
SCR_SelectionMenu
Definition
SCR_SelectionMenu.c:7
SCR_SelectionMenu::ClearEntries
void ClearEntries()
Clear all entries and invoke data update.
Definition
SCR_SelectionMenu.c:589
Attribute
SCR_FieldOfViewSettings Attribute
Definition
SendGoalMessage.c:170
EActionTrigger
EActionTrigger
Definition
EActionTrigger.c:13
scripts
Game
UI
HUD
SelectionMenu
RadialMenu
SCR_RadialMenuController.c
Generated by
1.17.0