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_BaseHeadingDisplay.c
Go to the documentation of this file.
1
class
SCR_BaseHeadingDisplay
: SCR_InfoDisplayExtended
2
{
3
[
Attribute
(
"9"
,
desc
:
"The amount of azimuth Widgets that will be created. Should always be an uneven number and should be at least 2 more then actually needed."
)]
4
protected
int
m_iMaxShownDegrees
;
5
6
[
Attribute
(defvalue:
"6400"
,
desc
:
"Mils in full 360 degrees angle \nSoviet: 6000\nNATO: 6400"
)]
7
protected
float
m_fMils
;
8
9
[
Attribute
(
"0.5"
,
UIWidgets
.Slider,
"Time in seconds after which the Display should fade in"
,
"0 100 0.1"
)]
10
protected
float
m_fFadeInDelay
;
11
12
[
Attribute
(
"1"
)]
13
protected
bool
m_bShowMils
;
14
15
[
Attribute
(
"1"
)]
16
protected
bool
m_bShowDegrees
;
17
18
[
Attribute
(
"m_HeadingTableHolder"
,
"Scroll widget, that holds all the heading notches."
)]
19
protected
string
m_sHeadingTableHolderWidgetName
;
20
21
[
Attribute
(
"DegreeText"
,
"TestWidget below the notch, where the heading is gonna be displayed."
)]
22
protected
string
m_sTxtHeadingDegreeNotchWidgetName
;
23
24
[
Attribute
(
"m_TxtMils"
,
"Text widget where the current heading in mils will be shown."
)]
25
protected
string
m_sMilsTextWidgetName
;
26
27
[
Attribute
(
"m_TxtDegrees"
,
"Text widget where the current heading in degrees will be shown."
)]
28
protected
string
m_sDegreeTextWidgetName
;
29
30
[
Attribute
(
desc
:
"SizeLayoutWidgets to which the padding gets applied, to have the correct distance between 2 degrees."
)]
31
protected
ref array<string>
m_aPaddingWidgetNames
;
32
33
[
Attribute
(
desc
:
"Widgets defined in 'Padding Widget Names' that should only have half the padding then the others."
)]
34
protected
ref array<string>
m_aHalfPaddingWidgetNames
;
35
36
protected
float
m_fDegreeWidgetDefaultSize
;
37
protected
float
m_fDegreeWidgetDefaultSizeWidth
;
38
protected
float
m_fDegreeWidgetDefaultSizeHeight
;
39
protected
float
m_fSliderPosX
;
40
protected
float
m_fSliderPosY
;
41
protected
float
m_fCurrentFOV
;
42
// Used to know how many pixels are between 2 degree Widgets
43
protected
float
m_fDegreeWidgetSize
;
44
45
// Store the last full degree to know when we moved 1 degree
46
protected
int
m_iLastStoredHeading
;
47
protected
int
m_iCurrentHeading
;
48
49
protected
CameraManager
m_CameraManager
;
50
protected
CameraBase
m_Camera
;
51
52
protected
Widget
m_wSavedHeadingWidget
;
53
protected
TextWidget
m_wMilsTextWidget
;
54
protected
TextWidget
m_wDegreesTextWidget
;
55
protected
ScrollLayoutWidget
m_wHeadingTableHolderWidget
;
56
57
protected
TurretControllerComponent
m_TurretController
;
58
59
protected
ref array<TextWidget>
m_aHeadingTextWidgets
= {};
60
protected
ref array<SizeLayoutWidget>
m_aHeadingPaddingWidgets
= {};
61
62
//------------------------------------------------------------------------------------------------
63
override
void
Show
(
bool
show,
float
speed =
UIConstants
.FADE_RATE_INSTANT,
EAnimationCurve
curve =
EAnimationCurve
.LINEAR)
64
{
65
speed =
UIConstants
.FADE_RATE_DEFAULT;
66
67
// If it can be shown, do so after a delay to prevent it from fading in to early
68
if
(
m_bCanShow
)
69
GetGame
().GetCallqueue().CallLater(
ShowDelay
,
m_fFadeInDelay
* 1000,
false
, show, speed);
70
else
71
super.Show(show, speed);
72
}
73
74
//------------------------------------------------------------------------------------------------
78
protected
void
ShowDelay
(
bool
show,
float
speed =
UIConstants
.FADE_RATE_INSTANT)
79
{
80
super.Show(show, speed);
81
}
82
83
//------------------------------------------------------------------------------------------------
86
protected
void
UpdateFOV
(
float
fov)
87
{
88
if
(fov <= 0)
89
return
;
90
91
WorkspaceWidget
workspace =
GetGame
().GetWorkspace();
92
93
float
screenW, screenH;
94
workspace.GetScreenSize(screenW, screenH);
95
screenH = workspace.DPIUnscale(screenH);
96
97
float
pixelsPerDegree = screenH / fov;
98
float
padding = pixelsPerDegree -
m_fDegreeWidgetDefaultSize
;
99
100
foreach
(
SizeLayoutWidget
w :
m_aHeadingPaddingWidgets
)
101
{
102
if
(
m_aHalfPaddingWidgetNames
.Contains(w.GetName()))
103
{
104
w.SetWidthOverride(padding * 0.5);
105
w.SetHeightOverride(padding * 0.5);
106
}
107
else
108
{
109
w.SetWidthOverride(padding);
110
w.SetHeightOverride(padding);
111
}
112
}
113
114
CalculateWidgetScreenSizeUnscaled
(
m_wSavedHeadingWidget
);
115
}
116
117
//------------------------------------------------------------------------------------------------
120
protected
vector
GetMuzzleDirection
()
121
{
122
BaseWeaponManagerComponent weaponManager =
m_TurretController
.GetWeaponManager();
123
if
(!weaponManager)
124
return
vector
.Zero;
125
126
vector
transform[4];
127
weaponManager.GetCurrentMuzzleTransform(transform);
128
129
return
transform[2];
130
}
131
132
//------------------------------------------------------------------------------------------------
135
protected
void
CalculateWidgetScreenSizeUnscaled
(
Widget
widget)
136
{
137
m_wHeadingTableHolderWidget
.SetSliderPos(0.5, 0.5);
138
m_wHeadingTableHolderWidget
.GetSliderPosPixels(
m_fSliderPosX
,
m_fSliderPosY
);
139
m_fSliderPosX
=
GetGame
().GetWorkspace().DPIUnscale(
m_fSliderPosX
);
140
m_fSliderPosY
=
GetGame
().GetWorkspace().DPIUnscale(
m_fSliderPosY
);
141
}
142
143
//------------------------------------------------------------------------------------------------
146
void
CalculateScreenSize
(
Widget
degreeWidget)
147
{
148
if
(!degreeWidget)
149
return
;
150
151
degreeWidget.GetScreenSize(
m_fDegreeWidgetDefaultSizeWidth
,
m_fDegreeWidgetDefaultSizeHeight
);
152
m_fDegreeWidgetDefaultSizeWidth
=
GetGame
().GetWorkspace().DPIUnscale(
m_fDegreeWidgetDefaultSizeWidth
);
153
m_fDegreeWidgetDefaultSizeHeight
=
GetGame
().GetWorkspace().DPIUnscale(
m_fDegreeWidgetDefaultSizeHeight
);
154
}
155
156
//------------------------------------------------------------------------------------------------
160
protected
void
SetupHeadingWidgets
(
ResourceName
headingHolderLayout =
string
.Empty,
ResourceName
headingNotchLayout =
string
.Empty)
161
{
162
WorkspaceWidget
workspaceWidget =
GetGame
().GetWorkspace();
163
Widget
elevationNotchHolder = workspaceWidget.CreateWidgets(headingHolderLayout,
m_wHeadingTableHolderWidget
);
164
165
if
(!elevationNotchHolder)
166
return
;
167
168
m_aHeadingTextWidgets
.Clear();
169
m_aHeadingPaddingWidgets
.Clear();
170
171
SizeLayoutWidget
paddingWidget;
172
173
// Check if there are some Padding widgets on the root to also apply the correct padding to them.
174
foreach
(
string
widgetName :
m_aPaddingWidgetNames
)
175
{
176
paddingWidget =
SizeLayoutWidget
.Cast(
m_wRoot
.FindAnyWidget(widgetName));
177
178
if
(paddingWidget)
179
m_aHeadingPaddingWidgets
.Insert(paddingWidget);
180
}
181
182
Widget
widget;
183
TextWidget
degreeTextWidget;
184
185
for
(
int
i = 0; i <
m_iMaxShownDegrees
; i++)
186
{
187
widget = workspaceWidget.CreateWidgets(headingNotchLayout, elevationNotchHolder);
188
189
if
(!widget)
190
continue
;
191
192
degreeTextWidget =
TextWidget
.Cast(widget.FindAnyWidget(
m_sTxtHeadingDegreeNotchWidgetName
));
193
194
if
(degreeTextWidget)
195
m_aHeadingTextWidgets
.Insert(degreeTextWidget);
196
197
foreach
(
string
widgetName :
m_aPaddingWidgetNames
)
198
{
199
paddingWidget =
SizeLayoutWidget
.Cast(widget.FindAnyWidget(widgetName));
200
201
if
(paddingWidget)
202
m_aHeadingPaddingWidgets
.Insert(paddingWidget);
203
}
204
}
205
206
m_wSavedHeadingWidget
= widget;
207
208
// Needs to run 1 frame later so the size of the widget is the correct one.
209
GetGame
().GetCallqueue().Call(
CalculateScreenSize
, widget);
210
}
211
212
//------------------------------------------------------------------------------------------------
213
override
void
DisplayUpdate
(
IEntity
owner,
float
timeSlice)
214
{
215
// Only valid if there is main camera
216
if
(!
m_Camera
)
217
return
;
218
219
float
fov =
m_Camera
.GetVerticalFOV();
220
221
// Only update everything if needed
222
if
(fov !=
m_fCurrentFOV
)
223
{
224
UpdateFOV
(fov);
225
m_fCurrentFOV
= fov;
226
}
227
}
228
229
//------------------------------------------------------------------------------------------------
230
override
void
DisplayStartDraw
(
IEntity
owner)
231
{
232
if
(!
m_wRoot
)
233
return
;
234
235
m_TurretController
=
TurretControllerComponent
.Cast(owner.
FindComponent
(
TurretControllerComponent
));
236
237
m_wMilsTextWidget
=
TextWidget
.Cast(
m_wRoot
.FindAnyWidget(
m_sMilsTextWidgetName
));
238
m_wDegreesTextWidget
=
TextWidget
.Cast(
m_wRoot
.FindAnyWidget(
m_sDegreeTextWidgetName
));
239
240
if
(!
m_bShowMils
&&
m_wMilsTextWidget
)
241
m_wMilsTextWidget
.SetVisible(
false
);
242
243
if
(!
m_bShowDegrees
&&
m_wDegreesTextWidget
)
244
m_wDegreesTextWidget
.SetVisible(
false
);
245
246
m_wHeadingTableHolderWidget
=
ScrollLayoutWidget
.Cast(
m_wRoot
.FindAnyWidget(
m_sHeadingTableHolderWidgetName
));
247
248
m_CameraManager
=
GetGame
().GetCameraManager();
249
250
if
(
m_CameraManager
)
251
m_Camera
=
m_CameraManager
.CurrentCamera();
252
}
253
254
//------------------------------------------------------------------------------------------------
255
override
void
DisplayStopDraw
(
IEntity
owner)
256
{
257
if
(
m_wRoot
)
258
m_wRoot
.RemoveFromHierarchy();
259
}
260
261
}
GetGame
ArmaReforgerScripted GetGame()
Definition
game.c:1398
m_wRoot
Widget m_wRoot
Definition
SCR_GameModeCleanSweep.c:25
m_bCanShow
bool m_bCanShow
Definition
SCR_InfoDisplayExtended.c:41
desc
UI Textures DeployMenu Briefing conflict_HintBanner_1_UI desc
Definition
SCR_RespawnBriefingComponent.c:17
EAnimationCurve
EAnimationCurve
Definition
WidgetAnimation.c:6
IEntity
Definition
IEntity.c:13
IEntity::FindComponent
proto external Managed FindComponent(typename typeName)
ResourceName
Definition
ResourceName.c:13
SCR_BaseHeadingDisplay
Definition
SCR_BaseHeadingDisplay.c:2
SCR_BaseHeadingDisplay::m_fDegreeWidgetSize
float m_fDegreeWidgetSize
Definition
SCR_BaseHeadingDisplay.c:43
SCR_BaseHeadingDisplay::ShowDelay
void ShowDelay(bool show, float speed=UIConstants.FADE_RATE_INSTANT)
Definition
SCR_BaseHeadingDisplay.c:78
SCR_BaseHeadingDisplay::m_sMilsTextWidgetName
string m_sMilsTextWidgetName
Definition
SCR_BaseHeadingDisplay.c:25
SCR_BaseHeadingDisplay::m_fSliderPosY
float m_fSliderPosY
Definition
SCR_BaseHeadingDisplay.c:40
SCR_BaseHeadingDisplay::m_wHeadingTableHolderWidget
ScrollLayoutWidget m_wHeadingTableHolderWidget
Definition
SCR_BaseHeadingDisplay.c:55
SCR_BaseHeadingDisplay::CalculateScreenSize
void CalculateScreenSize(Widget degreeWidget)
Definition
SCR_BaseHeadingDisplay.c:146
SCR_BaseHeadingDisplay::m_TurretController
TurretControllerComponent m_TurretController
Definition
SCR_BaseHeadingDisplay.c:57
SCR_BaseHeadingDisplay::m_aHalfPaddingWidgetNames
ref array< string > m_aHalfPaddingWidgetNames
Definition
SCR_BaseHeadingDisplay.c:34
SCR_BaseHeadingDisplay::m_bShowMils
bool m_bShowMils
Definition
SCR_BaseHeadingDisplay.c:13
SCR_BaseHeadingDisplay::m_iLastStoredHeading
int m_iLastStoredHeading
Definition
SCR_BaseHeadingDisplay.c:46
SCR_BaseHeadingDisplay::m_fFadeInDelay
float m_fFadeInDelay
Definition
SCR_BaseHeadingDisplay.c:10
SCR_BaseHeadingDisplay::DisplayUpdate
override void DisplayUpdate(IEntity owner, float timeSlice)
Definition
SCR_BaseHeadingDisplay.c:213
SCR_BaseHeadingDisplay::DisplayStartDraw
override void DisplayStartDraw(IEntity owner)
Definition
SCR_BaseHeadingDisplay.c:230
SCR_BaseHeadingDisplay::DisplayStopDraw
override void DisplayStopDraw(IEntity owner)
Definition
SCR_BaseHeadingDisplay.c:255
SCR_BaseHeadingDisplay::m_iMaxShownDegrees
int m_iMaxShownDegrees
Definition
SCR_BaseHeadingDisplay.c:4
SCR_BaseHeadingDisplay::m_iCurrentHeading
int m_iCurrentHeading
Definition
SCR_BaseHeadingDisplay.c:47
SCR_BaseHeadingDisplay::m_fCurrentFOV
float m_fCurrentFOV
Definition
SCR_BaseHeadingDisplay.c:41
SCR_BaseHeadingDisplay::m_fDegreeWidgetDefaultSize
float m_fDegreeWidgetDefaultSize
Definition
SCR_BaseHeadingDisplay.c:36
SCR_BaseHeadingDisplay::GetMuzzleDirection
vector GetMuzzleDirection()
Definition
SCR_BaseHeadingDisplay.c:120
SCR_BaseHeadingDisplay::m_fMils
float m_fMils
Definition
SCR_BaseHeadingDisplay.c:7
SCR_BaseHeadingDisplay::UpdateFOV
void UpdateFOV(float fov)
Definition
SCR_BaseHeadingDisplay.c:86
SCR_BaseHeadingDisplay::m_wMilsTextWidget
TextWidget m_wMilsTextWidget
Definition
SCR_BaseHeadingDisplay.c:53
SCR_BaseHeadingDisplay::m_Camera
CameraBase m_Camera
Definition
SCR_BaseHeadingDisplay.c:50
SCR_BaseHeadingDisplay::m_sHeadingTableHolderWidgetName
string m_sHeadingTableHolderWidgetName
Definition
SCR_BaseHeadingDisplay.c:19
SCR_BaseHeadingDisplay::m_wDegreesTextWidget
TextWidget m_wDegreesTextWidget
Definition
SCR_BaseHeadingDisplay.c:54
SCR_BaseHeadingDisplay::Show
override void Show(bool show, float speed=UIConstants.FADE_RATE_INSTANT, EAnimationCurve curve=EAnimationCurve.LINEAR)
Definition
SCR_BaseHeadingDisplay.c:63
SCR_BaseHeadingDisplay::m_fDegreeWidgetDefaultSizeWidth
float m_fDegreeWidgetDefaultSizeWidth
Definition
SCR_BaseHeadingDisplay.c:37
SCR_BaseHeadingDisplay::m_fSliderPosX
float m_fSliderPosX
Definition
SCR_BaseHeadingDisplay.c:39
SCR_BaseHeadingDisplay::m_bShowDegrees
bool m_bShowDegrees
Definition
SCR_BaseHeadingDisplay.c:16
SCR_BaseHeadingDisplay::m_aPaddingWidgetNames
ref array< string > m_aPaddingWidgetNames
Definition
SCR_BaseHeadingDisplay.c:31
SCR_BaseHeadingDisplay::m_fDegreeWidgetDefaultSizeHeight
float m_fDegreeWidgetDefaultSizeHeight
Definition
SCR_BaseHeadingDisplay.c:38
SCR_BaseHeadingDisplay::m_CameraManager
CameraManager m_CameraManager
Definition
SCR_BaseHeadingDisplay.c:49
SCR_BaseHeadingDisplay::m_aHeadingPaddingWidgets
ref array< SizeLayoutWidget > m_aHeadingPaddingWidgets
Definition
SCR_BaseHeadingDisplay.c:60
SCR_BaseHeadingDisplay::SetupHeadingWidgets
void SetupHeadingWidgets(ResourceName headingHolderLayout=string.Empty, ResourceName headingNotchLayout=string.Empty)
Definition
SCR_BaseHeadingDisplay.c:160
SCR_BaseHeadingDisplay::m_wSavedHeadingWidget
Widget m_wSavedHeadingWidget
Definition
SCR_BaseHeadingDisplay.c:52
SCR_BaseHeadingDisplay::CalculateWidgetScreenSizeUnscaled
void CalculateWidgetScreenSizeUnscaled(Widget widget)
Definition
SCR_BaseHeadingDisplay.c:135
SCR_BaseHeadingDisplay::m_sDegreeTextWidgetName
string m_sDegreeTextWidgetName
Definition
SCR_BaseHeadingDisplay.c:28
SCR_BaseHeadingDisplay::m_sTxtHeadingDegreeNotchWidgetName
string m_sTxtHeadingDegreeNotchWidgetName
Definition
SCR_BaseHeadingDisplay.c:22
SCR_BaseHeadingDisplay::m_aHeadingTextWidgets
ref array< TextWidget > m_aHeadingTextWidgets
Definition
SCR_BaseHeadingDisplay.c:59
ScrollLayoutWidget
Definition
ScrollLayoutWidget.c:16
SizeLayoutWidget
Definition
SizeLayoutWidget.c:16
TextWidget
Definition
TextWidget.c:16
TurretControllerComponent
Definition
TurretControllerComponent.c:13
UIConstants
Definition
Constants.c:151
UIWidgets
Definition
attributes.c:40
Widget
Definition
Widget.c:13
WorkspaceWidget
Definition
WorkspaceWidget.c:16
vector
Definition
vector.c:13
Attribute
SCR_FieldOfViewSettings Attribute
Definition
SendGoalMessage.c:170
scripts
Game
UI
HUD
MortarInfo
SCR_BaseHeadingDisplay.c
Generated by
1.17.0