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_MapMarkerSquadLeaderComponent.c
Go to the documentation of this file.
1
class
SCR_MapMarkerSquadLeaderComponent
:
SCR_MapMarkerDynamicWComponent
2
{
3
bool
m_bIsHovered;
4
protected
bool
m_bIsInit
;
5
protected
Widget
m_wOwnSquadBackground
;
6
protected
Widget
m_wOwnSquadIcon
;
7
protected
Widget
m_wOwnSquadIconGlow
;
8
protected
Widget
m_wGroupInfo
;
9
protected
Widget
m_wGroupInfoList
;
10
protected
TextWidget
m_wGroupFrequency
;
11
12
protected
ref array<Widget>
m_aGroupMemberEntries
= {};
13
14
[
Attribute
(
"{CCD81F58E9D6EEA6}UI/layouts/Map/MapMarkerGroupInfo.layout"
,
desc
:
"group info layout"
)]
15
protected
ResourceName
m_sGroupInfoLayout
;
16
17
[
Attribute
(
"{B09864CA15145CD3}UI/layouts/Map/MapMarkerGroupInfoLine.layout"
,
desc
:
"group info line layout"
)]
18
protected
ResourceName
m_sLineLayout
;
19
20
[
Attribute
(
"lineText"
,
desc
:
"line text widget"
)]
21
protected
string
m_sLineTextWidgetName
;
22
23
[
Attribute
(
"lineIcon"
,
desc
:
"line icon widget"
)]
24
protected
string
m_sLineIconWidgetName
;
25
26
[
Attribute
(
"groupCohesionIcon"
,
desc
:
"group cohesion icon widget"
)]
27
protected
string
m_sGroupCohesionWidgetName
;
28
29
[
Attribute
(
"PlatformIcon"
)]
30
protected
string
m_sPlatformIconWidgetName
;
31
32
[
Attribute
(
"40"
,
desc
:
"pixels, group info offset"
)]
33
protected
int
m_iGroupInfoOffset
;
34
35
protected
ref array<int>
m_aDisplayedPlayerIDs
= {};
36
protected
ref
map<Widget, Widget>
m_groupCohesionWidgetCache
=
new
map<Widget, Widget>
();
37
38
//------------------------------------------------------------------------------------------------
41
void
SetGroupActive
(
bool
state,
string
factionName =
string
.Empty)
42
{
43
Color
iconColor =
Color
.FromInt(
Color
.BLACK);
44
45
if
(state)
46
{
47
/*m_wOwnSquadBackground.SetVisible(true);
48
m_wOwnSquadIcon.SetVisible(true);
49
m_wOwnSquadIconGlow.SetVisible(true);
50
51
// TODO temp set until these are added to configs
52
if (factionName == "US")
53
iconColor = new Color(0.0, 0.18, 0.61, 1.0);
54
else if (factionName == "USSR")
55
iconColor = new Color(0.51, 0.02, 0.02, 1.0);*/
56
}
57
else
58
{
59
m_wOwnSquadBackground
.SetVisible(
false
);
60
m_wOwnSquadIcon
.SetVisible(
false
);
61
m_wOwnSquadIconGlow
.SetVisible(
false
);
62
}
63
64
//m_wOwnSquadIcon.SetColor(iconColor);
65
//m_wOwnSquadIconGlow.SetColor(iconColor);
66
}
67
68
//------------------------------------------------------------------------------------------------
72
void
UpdateGroupInfoPosition
(
int
screenX,
int
screenY)
73
{
74
if
(
m_wGroupInfo
)
75
FrameSlot
.SetPos(
m_wGroupInfo
,
GetGame
().GetWorkspace().DPIUnscale(screenX),
GetGame
().GetWorkspace().DPIUnscale(screenY) -
m_iGroupInfoOffset
);
// needs unscaled coords
76
}
77
78
//------------------------------------------------------------------------------------------------
79
override
bool
OnMouseButtonDown
(
Widget
w,
int
x,
int
y,
int
button)
80
{
81
if
(button != 0)
// LMB only
82
return
true
;
83
84
SCR_MapEntity
mapEntity =
SCR_MapEntity
.
GetMapInstance
();
85
SCR_MapCursorModule cursorModule;
86
if
(mapEntity)
87
cursorModule = SCR_MapCursorModule.Cast(mapEntity.
GetMapModule
(SCR_MapCursorModule));
88
89
if
(cursorModule && cursorModule.GetCursorState() & SCR_MapCursorModule.STATE_POPUP_RESTRICTED)
90
return
true
;
91
92
SCR_AIGroup
group = SCR_MapMarkerSquadLeader.Cast(
m_MarkerEnt
).GetGroup();
93
if
(!group)
94
return
false
;
95
96
SCR_PlayerControllerGroupComponent playerControllerGroup = SCR_PlayerControllerGroupComponent.GetLocalPlayerControllerGroupComponent();
97
if
(playerControllerGroup)
98
playerControllerGroup.SetSelectedGroupID(group.
GetGroupID
());
99
100
GetGame
().OpenGroupMenu();
101
102
return
true
;
103
}
104
105
//------------------------------------------------------------------------------------------------
106
override
bool
OnMouseEnter
(
Widget
w,
int
x,
int
y)
107
{
108
m_MarkerEnt
.LayerChangeLogic(0);
109
110
SCR_AIGroup
group = SCR_MapMarkerSquadLeader.Cast(
m_MarkerEnt
).GetGroup();
111
if
(group)
112
{
113
if
(!
m_bIsInit
)
114
{
115
m_wGroupInfo
=
GetGame
().GetWorkspace().CreateWidgets(
m_sGroupInfoLayout
,
m_wRoot
.GetParent());
116
if
(!
m_wGroupInfo
)
117
return
false
;
118
119
m_wGroupInfoList
=
m_wGroupInfo
.FindAnyWidget(
"groupInfoList"
);
120
m_wGroupFrequency
=
TextWidget
.Cast(
m_wGroupInfo
.FindAnyWidget(
"groupFrequency"
));
121
122
int
capacity = group.
GetMaxMembers
();
123
124
for
(
int
i = 0; i < capacity; i++)
125
{
126
m_aGroupMemberEntries
.Insert(
GetGame
().GetWorkspace().CreateWidgets(
m_sLineLayout
,
m_wGroupInfoList
));
127
}
128
129
m_bIsInit
=
true
;
130
}
131
132
float
fFrequency =
Math
.Round(group.
GetRadioFrequency
() * 0.1) * 0.01;
// Format the frequency text: round and convert to 2 digits with one possible decimal place (39500 -> 39.5)
133
m_wGroupFrequency
.SetText(fFrequency.ToString(3, 1));
134
135
int
playerCount = group.
GetPlayerCount
();
136
array<int> membersCopy = {};
137
membersCopy.Copy(group.
GetPlayerIDs
());
138
139
PlayerManager
pManager =
GetGame
().GetPlayerManager();
140
int
leaderID = group.
GetLeaderID
();
141
142
// leader entry first, order of IDs is not guaranteed
143
foreach
(
int
id
: membersCopy)
144
{
145
if
(
id
== leaderID && !
m_aGroupMemberEntries
.IsEmpty())
146
{
147
Widget
entry =
m_aGroupMemberEntries
[0];
148
TextWidget
txtW =
TextWidget
.Cast(entry.FindWidget(
m_sLineTextWidgetName
));
149
txtW.SetText(
SCR_PlayerNamesFilterCache
.GetInstance().GetPlayerDisplayName(
id
));
150
entry.SetVisible(
true
);
151
152
ImageWidget
platformImage=
ImageWidget
.Cast(entry.FindAnyWidget(
m_sPlatformIconWidgetName
));
153
if
(platformImage)
154
SCR_PlayerController
.Cast(
GetGame
().
GetPlayerController
()).SetPlatformImageTo(
id
, platformImage);
155
156
if
(
GetGame
().
GetPlayerController
().
GetPlayerId
() ==
id
)
157
txtW.SetColor(GUIColors.ORANGE);
158
else
159
txtW.SetColor(GUIColors.DEFAULT);
160
161
ImageWidget
imgW =
ImageWidget
.Cast(entry.FindWidget(
m_sLineIconWidgetName
));
162
imgW.SetOpacity(1);
163
164
membersCopy.RemoveItem(
id
);
165
break
;
166
}
167
}
168
169
// members
170
foreach
(
int
i,
Widget
entry :
m_aGroupMemberEntries
)
171
{
172
if
(i == 0)
// leader
173
continue
;
174
175
if
(i < playerCount)
176
{
177
TextWidget
txtW =
TextWidget
.Cast(entry.FindWidget(
m_sLineTextWidgetName
));
178
txtW.SetText(
SCR_PlayerNamesFilterCache
.GetInstance().GetPlayerDisplayName(membersCopy[i-1]));
179
entry.SetVisible(
true
);
180
181
ImageWidget
platformImage=
ImageWidget
.Cast(entry.FindAnyWidget(
m_sPlatformIconWidgetName
));
182
if
(platformImage)
183
SCR_PlayerController
.Cast(
GetGame
().
GetPlayerController
()).SetPlatformImageTo(membersCopy[i-1], platformImage);
184
185
if
(
GetGame
().
GetPlayerController
().
GetPlayerId
() == membersCopy[i-1])
186
txtW.SetColor(GUIColors.ORANGE);
187
else
188
txtW.SetColor(GUIColors.DEFAULT);
189
190
ImageWidget
imgW =
ImageWidget
.Cast(entry.FindWidget(
m_sLineIconWidgetName
));
191
imgW.SetOpacity(0);
192
193
continue
;
194
}
195
196
entry.SetVisible(
false
);
197
}
198
199
m_wGroupInfo
.SetVisible(
true
);
200
201
m_aDisplayedPlayerIDs
.Clear();
202
m_aDisplayedPlayerIDs
.Insert(leaderID);
203
foreach
(
int
id
: membersCopy)
204
{
205
m_aDisplayedPlayerIDs
.Insert(
id
);
206
}
207
208
SCR_AIGroupCohesionComponent cohesionComponent = SCR_AIGroupCohesionComponent.Cast(group.FindComponent(SCR_AIGroupCohesionComponent));
209
if
(cohesionComponent)
210
{
211
array<int> cluster = {};
212
cohesionComponent.GetPlayersInCohesion(cluster);
213
OnClusterUpdated
(cluster);
214
}
215
else
216
{
217
HideCohesionWidget
();
218
}
219
}
220
221
m_bIsHovered =
true
;
222
223
return
true
;
224
}
225
226
//------------------------------------------------------------------------------------------------
227
Widget
GetCohesionWidget
(
Widget
entry)
228
{
229
Widget
cohesionWidget;
230
if
(
m_groupCohesionWidgetCache
.Contains(entry))
231
{
232
cohesionWidget =
m_groupCohesionWidgetCache
.Get(entry);
233
}
234
else
235
{
236
cohesionWidget = entry.FindAnyWidget(
m_sGroupCohesionWidgetName
);
237
m_groupCohesionWidgetCache
.Insert(entry, cohesionWidget);
238
}
239
240
return
cohesionWidget;
241
}
242
243
//------------------------------------------------------------------------------------------------
244
protected
void
HideCohesionWidget
()
245
{
246
foreach
(
Widget
entry :
m_aGroupMemberEntries
)
247
{
248
Widget
cohesionWidget =
GetCohesionWidget
(entry);
249
if
(!cohesionWidget)
250
continue
;
251
252
cohesionWidget.SetVisible(
false
);
253
}
254
}
255
256
//------------------------------------------------------------------------------------------------
257
protected
void
OnClusterUpdated
(notnull array<int> cluster)
258
{
259
array<int> players = SCR_MapMarkerSquadLeader.Cast(
m_MarkerEnt
).GetGroup().GetPlayerIDs();
260
if
(!players || players.Count() == 0 ||
m_aGroupMemberEntries
.IsEmpty())
261
return
;
262
263
foreach
(
int
i,
int
playerID :
m_aDisplayedPlayerIDs
)
264
{
265
Widget
entry =
m_aGroupMemberEntries
[i];
266
ImageWidget
cohesionImage =
ImageWidget
.Cast(
GetCohesionWidget
(entry));
267
if
(!cohesionImage)
268
continue
;
269
270
if
(cluster.Contains(playerID))
271
cohesionImage.SetColor(
Color
.FromInt(
Color
.WHITE));
272
else
273
cohesionImage.SetColor(
Color
.FromInt(
Color
.GRAY_25));
274
}
275
}
276
277
//------------------------------------------------------------------------------------------------
278
override
bool
OnMouseLeave
(
Widget
w,
Widget
enterW,
int
x,
int
y)
279
{
280
m_wGroupInfo
.SetVisible(
false
);
281
m_bIsHovered =
false
;
282
283
m_MarkerEnt
.LayerChangeLogic(
m_iLayerID
);
284
285
return
true
;
286
}
287
288
//------------------------------------------------------------------------------------------------
289
override
void
HandlerAttached
(
Widget
w)
290
{
291
super.HandlerAttached(w);
292
293
m_wOwnSquadBackground
=
m_wRoot
.FindAnyWidget(
"OwnSquadBackground"
);
294
m_wOwnSquadIcon
=
m_wRoot
.FindAnyWidget(
"OwnSquadIcon"
);
295
m_wOwnSquadIconGlow
=
m_wRoot
.FindAnyWidget(
"OwnSquadIconGlow"
);
296
}
297
}
GetGame
ArmaReforgerScripted GetGame()
Definition
game.c:1398
desc
UI Textures DeployMenu Briefing conflict_HintBanner_1_UI desc
Definition
SCR_RespawnBriefingComponent.c:17
Color
Definition
Color.c:13
FrameSlot
Definition
FrameSlot.c:13
ImageWidget
Definition
ImageWidget.c:13
Math
Definition
Math.c:13
PlayerManager
Definition
PlayerManager.c:13
ResourceName
Definition
ResourceName.c:13
SCR_AIGroup
Definition
SCR_AIGroup.c:75
SCR_AIGroup::GetPlayerCount
int GetPlayerCount(bool checkMasterAndSlaves=false)
Definition
SCR_AIGroup.c:989
SCR_AIGroup::GetPlayerIDs
array< int > GetPlayerIDs()
Definition
SCR_AIGroup.c:978
SCR_AIGroup::GetRadioFrequency
int GetRadioFrequency()
Definition
SCR_AIGroup.c:1574
SCR_AIGroup::GetMaxMembers
int GetMaxMembers()
Definition
SCR_AIGroup.c:947
SCR_AIGroup::GetGroupID
int GetGroupID()
Definition
SCR_AIGroup.c:935
SCR_AIGroup::GetLeaderID
int GetLeaderID()
Definition
SCR_AIGroup.c:499
SCR_MapEntity
Definition
SCR_MapEntity.c:18
SCR_MapEntity::GetMapModule
SCR_MapModuleBase GetMapModule(typename moduleType)
Definition
SCR_MapEntity.c:246
SCR_MapEntity::GetMapInstance
static SCR_MapEntity GetMapInstance()
Get map entity instance.
Definition
SCR_MapEntity.c:112
SCR_MapMarkerDynamicWComponent
Attached to root of marker dynamic base layout.
Definition
SCR_MapMarkerDynamicWComponent.c:3
SCR_MapMarkerDynamicWComponent::m_iLayerID
int m_iLayerID
Definition
SCR_MapMarkerDynamicWComponent.c:4
SCR_MapMarkerDynamicWComponent::m_MarkerEnt
SCR_MapMarkerEntity m_MarkerEnt
Definition
SCR_MapMarkerDynamicWComponent.c:7
SCR_MapMarkerSquadLeaderComponent
Definition
SCR_MapMarkerSquadLeaderComponent.c:2
SCR_MapMarkerSquadLeaderComponent::OnMouseEnter
override bool OnMouseEnter(Widget w, int x, int y)
Definition
SCR_MapMarkerSquadLeaderComponent.c:106
SCR_MapMarkerSquadLeaderComponent::m_wGroupInfoList
Widget m_wGroupInfoList
Definition
SCR_MapMarkerSquadLeaderComponent.c:9
SCR_MapMarkerSquadLeaderComponent::m_wOwnSquadBackground
Widget m_wOwnSquadBackground
Definition
SCR_MapMarkerSquadLeaderComponent.c:5
SCR_MapMarkerSquadLeaderComponent::OnMouseButtonDown
override bool OnMouseButtonDown(Widget w, int x, int y, int button)
Definition
SCR_MapMarkerSquadLeaderComponent.c:79
SCR_MapMarkerSquadLeaderComponent::HandlerAttached
override void HandlerAttached(Widget w)
Definition
SCR_MapMarkerSquadLeaderComponent.c:289
SCR_MapMarkerSquadLeaderComponent::OnMouseLeave
override bool OnMouseLeave(Widget w, Widget enterW, int x, int y)
Definition
SCR_MapMarkerSquadLeaderComponent.c:278
SCR_MapMarkerSquadLeaderComponent::m_sLineTextWidgetName
string m_sLineTextWidgetName
Definition
SCR_MapMarkerSquadLeaderComponent.c:21
SCR_MapMarkerSquadLeaderComponent::m_sLineLayout
ResourceName m_sLineLayout
Definition
SCR_MapMarkerSquadLeaderComponent.c:18
SCR_MapMarkerSquadLeaderComponent::m_sGroupCohesionWidgetName
string m_sGroupCohesionWidgetName
Definition
SCR_MapMarkerSquadLeaderComponent.c:27
SCR_MapMarkerSquadLeaderComponent::m_wOwnSquadIcon
Widget m_wOwnSquadIcon
Definition
SCR_MapMarkerSquadLeaderComponent.c:6
SCR_MapMarkerSquadLeaderComponent::m_groupCohesionWidgetCache
ref map< Widget, Widget > m_groupCohesionWidgetCache
Definition
SCR_MapMarkerSquadLeaderComponent.c:36
SCR_MapMarkerSquadLeaderComponent::m_aDisplayedPlayerIDs
ref array< int > m_aDisplayedPlayerIDs
Definition
SCR_MapMarkerSquadLeaderComponent.c:35
SCR_MapMarkerSquadLeaderComponent::UpdateGroupInfoPosition
void UpdateGroupInfoPosition(int screenX, int screenY)
Definition
SCR_MapMarkerSquadLeaderComponent.c:72
SCR_MapMarkerSquadLeaderComponent::SetGroupActive
void SetGroupActive(bool state, string factionName=string.Empty)
Definition
SCR_MapMarkerSquadLeaderComponent.c:41
SCR_MapMarkerSquadLeaderComponent::m_sGroupInfoLayout
ResourceName m_sGroupInfoLayout
Definition
SCR_MapMarkerSquadLeaderComponent.c:15
SCR_MapMarkerSquadLeaderComponent::m_iGroupInfoOffset
int m_iGroupInfoOffset
Definition
SCR_MapMarkerSquadLeaderComponent.c:33
SCR_MapMarkerSquadLeaderComponent::m_wOwnSquadIconGlow
Widget m_wOwnSquadIconGlow
Definition
SCR_MapMarkerSquadLeaderComponent.c:7
SCR_MapMarkerSquadLeaderComponent::m_wGroupInfo
Widget m_wGroupInfo
Definition
SCR_MapMarkerSquadLeaderComponent.c:8
SCR_MapMarkerSquadLeaderComponent::HideCohesionWidget
void HideCohesionWidget()
Definition
SCR_MapMarkerSquadLeaderComponent.c:244
SCR_MapMarkerSquadLeaderComponent::m_wGroupFrequency
TextWidget m_wGroupFrequency
Definition
SCR_MapMarkerSquadLeaderComponent.c:10
SCR_MapMarkerSquadLeaderComponent::m_sPlatformIconWidgetName
string m_sPlatformIconWidgetName
Definition
SCR_MapMarkerSquadLeaderComponent.c:30
SCR_MapMarkerSquadLeaderComponent::GetCohesionWidget
Widget GetCohesionWidget(Widget entry)
Definition
SCR_MapMarkerSquadLeaderComponent.c:227
SCR_MapMarkerSquadLeaderComponent::m_bIsInit
bool m_bIsInit
Definition
SCR_MapMarkerSquadLeaderComponent.c:4
SCR_MapMarkerSquadLeaderComponent::m_aGroupMemberEntries
ref array< Widget > m_aGroupMemberEntries
Definition
SCR_MapMarkerSquadLeaderComponent.c:12
SCR_MapMarkerSquadLeaderComponent::m_sLineIconWidgetName
string m_sLineIconWidgetName
Definition
SCR_MapMarkerSquadLeaderComponent.c:24
SCR_MapMarkerSquadLeaderComponent::OnClusterUpdated
void OnClusterUpdated(notnull array< int > cluster)
Definition
SCR_MapMarkerSquadLeaderComponent.c:257
SCR_PlayerController
Definition
SCR_PlayerController.c:31
SCR_PlayerNamesFilterCache
Definition
SCR_PlayerNamesFilterCache.c:3
SCR_ScriptedWidgetComponent::m_wRoot
Widget m_wRoot
Definition
SCR_ScriptedWidgetComponent.c:9
TextWidget
Definition
TextWidget.c:16
Widget
Definition
Widget.c:13
map
Definition
Types.c:486
Attribute
SCR_FieldOfViewSettings Attribute
Definition
SendGoalMessage.c:170
GetPlayerController
proto external PlayerController GetPlayerController()
Definition
SCR_PlayerDeployMenuHandlerComponent.c:307
GetPlayerId
proto external int GetPlayerId()
Definition
SCR_SpawnRequestComponent.c:39
scripts
Game
Map
Markers
SCR_MapMarkerSquadLeaderComponent.c
Generated by
1.17.0