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_BaseWeaponAzimuthDisplay.c
Go to the documentation of this file.
1
class
SCR_BaseWeaponAzimuthDisplay
:
SCR_BaseHeadingDisplay
2
{
3
[
Attribute
(
"{CF4D101CDF040CD7}UI/layouts/HUD/MortarInfo/ScopeAzimuthSlots.layout"
,
params
:
"layout"
)]
4
protected
ResourceName
m_sAzimuthNotchHolderLayout
;
5
6
[
Attribute
(
"{0B9BE4C17177DAE5}UI/layouts/HUD/MortarInfo/ScopeAzimuthSteps.layout"
,
params
:
"layout"
)]
7
protected
ResourceName
m_sAzimuthNotchItemLayout
;
8
9
//------------------------------------------------------------------------------------------------
10
void
UpdateAzimuthInfo
(
vector
aimRotation)
11
{
12
float
azimuth = aimRotation[0];
13
float
azimuthMils = azimuth * (
m_fMils
/ 360);
14
15
m_iCurrentHeading
= azimuth;
16
17
if
(
m_wMilsTextWidget
)
18
m_wMilsTextWidget
.SetTextFormat(
UIConstants
.VALUE_UNIT_MILS, azimuthMils.ToString(4, 0));
19
20
if
(
m_wDegreesTextWidget
)
21
m_wDegreesTextWidget
.SetTextFormat(
UIConstants
.VALUE_UNIT_DEGREES, azimuth.ToString(3, 1));
22
23
float
azimuthInPercent = azimuth -
m_iCurrentHeading
;
24
azimuthInPercent =
Math
.Clamp(azimuthInPercent, 0, 1);
25
26
// We didn't move so we don't need to reset
27
if
(
m_iCurrentHeading
==
m_iLastStoredHeading
)
28
{
29
// Since SetSliderPosPixels() works in DPIScaled we need to first upscale our change to make it work in not FullHD resolutions.
30
float
newSliderPos =
GetGame
().GetWorkspace().DPIScale(
m_fSliderPosX
+ (
m_fDegreeWidgetSize
* azimuthInPercent));
31
32
if
(
m_wHeadingTableHolderWidget
)
33
m_wHeadingTableHolderWidget
.SetSliderPosPixels(newSliderPos, 0);
34
}
35
else
36
{
37
UpdateAzimuthWidgets
();
38
m_iLastStoredHeading
=
m_iCurrentHeading
;
39
}
40
}
41
42
//------------------------------------------------------------------------------------------------
43
override
void
CalculateWidgetScreenSizeUnscaled
(
Widget
widget)
44
{
45
float
h;
46
widget.GetScreenSize(
m_fDegreeWidgetSize
, h);
47
m_fDegreeWidgetSize
=
GetGame
().GetWorkspace().DPIUnscale(
m_fDegreeWidgetSize
);
48
49
super.CalculateWidgetScreenSizeUnscaled(widget);
50
}
51
52
//------------------------------------------------------------------------------------------------
53
protected
void
UpdateAzimuthWidgets
()
54
{
55
if
(
m_aHeadingTextWidgets
.IsEmpty())
56
return
;
57
58
// Calculate how many numbers we need to go in every direction from the current azimuth
59
int
azimuth =
m_iCurrentHeading
- ((
m_iMaxShownDegrees
- 1) * 0.5);
60
61
if
(azimuth < 0)
62
azimuth += 360;
63
64
foreach
(
TextWidget
w :
m_aHeadingTextWidgets
)
65
{
66
// If the next number would be 360, change it to 0 since they are both 0°
67
if
(azimuth == 360)
68
azimuth = 0;
69
70
w.SetText(azimuth.ToString());
71
72
azimuth++;
73
}
74
75
m_wHeadingTableHolderWidget
.SetSliderPos(0.5, 0);
76
m_wHeadingTableHolderWidget
.GetSliderPosPixels(
m_fSliderPosX
,
m_fSliderPosY
);
77
m_fSliderPosX
=
GetGame
().GetWorkspace().DPIUnscale(
m_fSliderPosX
);
78
}
79
80
//------------------------------------------------------------------------------------------------
81
override
void
SetupHeadingWidgets
(
ResourceName
headingHolderLayout =
""
,
ResourceName
headingNotchLayout =
""
)
82
{
83
super.SetupHeadingWidgets(
m_sAzimuthNotchHolderLayout
,
m_sAzimuthNotchItemLayout
);
84
UpdateAzimuthWidgets
();
85
}
86
87
//------------------------------------------------------------------------------------------------
88
override
void
CalculateScreenSize
(
Widget
degreeWidget)
89
{
90
super.CalculateScreenSize(degreeWidget);
91
m_fDegreeWidgetDefaultSize
=
m_fDegreeWidgetDefaultSizeWidth
;
92
93
CalculateWidgetScreenSizeUnscaled
(degreeWidget);
94
}
95
96
//------------------------------------------------------------------------------------------------
97
override
void
DisplayUpdate
(
IEntity
owner,
float
timeSlice)
98
{
99
vector
aimRotation =
GetMuzzleDirection
().VectorToAngles();
100
UpdateAzimuthInfo
(aimRotation);
101
102
super.DisplayUpdate(owner, timeSlice);
103
}
104
105
//------------------------------------------------------------------------------------------------
106
override
void
DisplayStartDraw
(
IEntity
owner)
107
{
108
super.DisplayStartDraw(owner);
109
SetupHeadingWidgets
();
110
}
111
}
GetGame
ArmaReforgerScripted GetGame()
Definition
game.c:1398
params
category params
Definition
SCR_SpherePointGeneratorPreviewComponent.c:21
IEntity
Definition
IEntity.c:13
Math
Definition
Math.c:13
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::m_fSliderPosY
float m_fSliderPosY
Definition
SCR_BaseHeadingDisplay.c:40
SCR_BaseHeadingDisplay::m_wHeadingTableHolderWidget
ScrollLayoutWidget m_wHeadingTableHolderWidget
Definition
SCR_BaseHeadingDisplay.c:55
SCR_BaseHeadingDisplay::m_iLastStoredHeading
int m_iLastStoredHeading
Definition
SCR_BaseHeadingDisplay.c:46
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_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::m_wMilsTextWidget
TextWidget m_wMilsTextWidget
Definition
SCR_BaseHeadingDisplay.c:53
SCR_BaseHeadingDisplay::m_wDegreesTextWidget
TextWidget m_wDegreesTextWidget
Definition
SCR_BaseHeadingDisplay.c:54
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_aHeadingTextWidgets
ref array< TextWidget > m_aHeadingTextWidgets
Definition
SCR_BaseHeadingDisplay.c:59
SCR_BaseWeaponAzimuthDisplay
Definition
SCR_BaseWeaponAzimuthDisplay.c:2
SCR_BaseWeaponAzimuthDisplay::CalculateWidgetScreenSizeUnscaled
override void CalculateWidgetScreenSizeUnscaled(Widget widget)
Definition
SCR_BaseWeaponAzimuthDisplay.c:43
SCR_BaseWeaponAzimuthDisplay::UpdateAzimuthInfo
void UpdateAzimuthInfo(vector aimRotation)
Definition
SCR_BaseWeaponAzimuthDisplay.c:10
SCR_BaseWeaponAzimuthDisplay::UpdateAzimuthWidgets
void UpdateAzimuthWidgets()
Definition
SCR_BaseWeaponAzimuthDisplay.c:53
SCR_BaseWeaponAzimuthDisplay::DisplayStartDraw
override void DisplayStartDraw(IEntity owner)
Definition
SCR_BaseWeaponAzimuthDisplay.c:106
SCR_BaseWeaponAzimuthDisplay::SetupHeadingWidgets
override void SetupHeadingWidgets(ResourceName headingHolderLayout="", ResourceName headingNotchLayout="")
Definition
SCR_BaseWeaponAzimuthDisplay.c:81
SCR_BaseWeaponAzimuthDisplay::m_sAzimuthNotchHolderLayout
ResourceName m_sAzimuthNotchHolderLayout
Definition
SCR_BaseWeaponAzimuthDisplay.c:4
SCR_BaseWeaponAzimuthDisplay::CalculateScreenSize
override void CalculateScreenSize(Widget degreeWidget)
Definition
SCR_BaseWeaponAzimuthDisplay.c:88
SCR_BaseWeaponAzimuthDisplay::DisplayUpdate
override void DisplayUpdate(IEntity owner, float timeSlice)
Definition
SCR_BaseWeaponAzimuthDisplay.c:97
SCR_BaseWeaponAzimuthDisplay::m_sAzimuthNotchItemLayout
ResourceName m_sAzimuthNotchItemLayout
Definition
SCR_BaseWeaponAzimuthDisplay.c:7
TextWidget
Definition
TextWidget.c:16
UIConstants
Definition
Constants.c:151
Widget
Definition
Widget.c:13
vector
Definition
vector.c:13
Attribute
SCR_FieldOfViewSettings Attribute
Definition
SendGoalMessage.c:170
scripts
Game
UI
HUD
MortarInfo
SCR_BaseWeaponAzimuthDisplay.c
Generated by
1.17.0