Dayz
Build 1.29.163047, Scripts Rev. 123548
Dayz Code Explorer by Zeroy
Toggle main menu visibility
Loading...
Searching...
No Matches
huddebugwinhealth.c
Go to the documentation of this file.
1
class
HudDebugWinHealthEntry
2
{
3
string
m_Zone
;
4
string
m_HealthMode
;
5
bool
m_IsTitleEntry
;
6
7
Widget
m_EntryRootW
;
8
TextWidget
m_EntryZoneW
;
9
TextWidget
m_EntryValueW
;
10
}
11
12
class
HudDebugWinHealth
:
HudDebugWinBase
13
{
14
protected
bool
m_IsInit
;
15
protected
bool
m_IsModeSelf
=
true
;
16
protected
Widget
m_WgtPanel
;
17
protected
ScrollWidget
m_WgtPanelScroll
;
18
protected
TextWidget
m_TargetDisplayNameW
;
19
protected
ButtonWidget
m_ButtonSelf
;
20
protected
ButtonWidget
m_ButtonTarget
;
21
22
protected
EntityAI
m_TargetEntity
;
23
protected
PluginDeveloperSync
m_DevSyncPlugin
;
24
25
protected
ref
array<ref HudDebugWinHealthEntry>
m_Entries
= {};
26
27
//============================================
28
void
HudDebugWinHealth
(
Widget
widget_root)
29
{
30
m_WgtRoot
= widget_root;
31
m_WgtPanel
=
Widget
.Cast(
m_WgtRoot
.FindAnyWidget(
"HealthPanel"
) );
32
m_WgtPanelScroll
= ScrollWidget.Cast(
m_WgtRoot
.FindAnyWidget(
"HealthPanelScroll"
) );
33
}
34
35
void
~HudDebugWinHealth
()
36
{
37
SetUpdate
(
false
);
38
}
39
40
override
void
Update
()
41
{
42
super.Update();
43
44
if
(!
m_IsInit
)
45
InitDebug
();
46
47
if
(
m_DevSyncPlugin
.GetIsTargetChanged() || !
m_TargetEntity
)
48
{
49
m_DevSyncPlugin
.SetTargetChanged(
false
);
50
CleanupEntries
();
51
52
if
(
m_IsModeSelf
)
53
m_TargetEntity
=
g_Game
.GetPlayer();
54
#ifdef DEVELOPER
55
else
56
m_TargetEntity
=
EntityAI
.Cast(_item);
57
#endif
58
59
InitEntityEntries
();
60
}
61
62
if
(
m_TargetEntity
)
63
UpdateZones
();
64
else
65
m_TargetDisplayNameW
.SetText(
"No target selected"
);
66
}
67
68
override
int
GetType
()
69
{
70
return
HudDebug
.HUD_WIN_HEALTH;
71
}
72
73
override
void
Show
()
74
{
75
super.Show();
76
SetUpdate
(
true
);
77
78
if
(!
m_DevSyncPlugin
)
79
m_DevSyncPlugin
= PluginDeveloperSync.Cast(
GetPlugin
( PluginDeveloperSync ) );
80
}
81
82
override
void
Hide
()
83
{
84
super.Hide();
85
86
CleanupEntries
();
87
m_IsInit
=
false
;
88
m_TargetEntity
= null;
89
SetUpdate
(
false
);
90
}
91
92
override
void
SetUpdate
(
bool
state )
93
{
94
PlayerBase
player =
PlayerBase
.Cast(
g_Game
.GetPlayer() );
95
96
if
(
g_Game
.IsClient())
97
{
98
Param1<bool> params =
new
Param1<bool>( state );
99
if
(player)
100
{
101
player.RPCSingleParam(
ERPCs
.DEV_HEALTH_UPDATE, params,
true
);
102
SetRPCSent
();
103
}
104
}
105
else
// set directly
106
{
107
if
(
m_DevSyncPlugin
)
108
m_DevSyncPlugin
.EnableUpdate( state,
ERPCs
.DEV_HEALTH_UPDATE, player );
109
}
110
}
111
112
void
InitDebug
()
113
{
114
if
(!
m_ButtonSelf
)
115
m_ButtonSelf
= ButtonWidget.Cast(
m_WgtRoot
.FindAnyWidget(
"ButtonSelf"
));
116
117
if
(!
m_ButtonTarget
)
118
m_ButtonTarget
= ButtonWidget.Cast(
m_WgtRoot
.FindAnyWidget(
"ButtonTarget"
));
119
120
if
(!
m_TargetDisplayNameW
)
121
m_TargetDisplayNameW
=
TextWidget
.Cast(
m_WgtRoot
.FindAnyWidget(
"txt_TargetName"
));
122
123
if
(
m_IsModeSelf
)
// initial RPC set so the server knows which mode is the deubg in
124
OnClick
(
m_ButtonSelf
, 0, 0, 0);
125
else
126
OnClick
(
m_ButtonTarget
, 0, 0, 0);
127
128
m_IsInit
=
true
;
129
}
130
132
bool
OnClick
(
Widget
w,
int
x
,
int
y
,
int
button )
133
{
134
if
(!w)
135
return
false
;
136
137
HudDebugWinHealthEntry
clickedEntry;
138
139
foreach
(
HudDebugWinHealthEntry
entry :
m_Entries
)
140
{
141
if
(entry.m_EntryRootW == w.GetParent())
142
clickedEntry = entry;
143
}
144
145
int
buttonID;
146
147
if
(w.GetName() ==
"ButtonMin"
)
148
{
149
buttonID = 0;
150
RunRPC
(clickedEntry, buttonID);
151
return
true
;
152
}
153
else
if
(w.GetName() ==
"ButtonMax"
)
154
{
155
buttonID = 1;
156
RunRPC
(clickedEntry, buttonID);
157
return
true
;
158
}
159
else
if
(w.GetName() ==
"ButtonAdd"
)
160
{
161
buttonID = 2;
162
RunRPC
(clickedEntry, buttonID);
163
return
true
;
164
}
165
else
if
(w.GetName() ==
"ButtonSubtract"
)
166
{
167
buttonID = 3;
168
RunRPC
(clickedEntry, buttonID);
169
return
true
;
170
}
171
else
if
(w ==
m_ButtonTarget
)
172
{
173
#ifdef DEVELOPER
174
buttonID = 4;
175
HandleTargetState
(
false
);
176
RunRPC
(clickedEntry, buttonID);
177
return
true
;
178
#endif
179
}
180
else
if
(w ==
m_ButtonSelf
)
181
{
182
buttonID = 5;
183
HandleTargetState
(
true
);
184
RunRPC
(clickedEntry, buttonID);
185
return
true
;
186
}
187
188
return
false
;
189
}
190
191
void
RunRPC
(
HudDebugWinHealthEntry
entry,
int
buttonID)
192
{
193
Param3<int , string, string>
params;
194
if
(entry)
195
params =
new
Param3<int , string, string>
( buttonID, entry.
m_Zone
, entry.
m_HealthMode
);
196
else
197
params =
new
Param3<int , string, string>
( buttonID,
""
,
""
);
198
199
PlayerBase
player =
PlayerBase
.Cast(
g_Game
.GetPlayer() );
200
if
( player )
201
player.RPCSingleParam(
ERPCs
.DEV_RPC_HEALTH_SET, params,
true
);
202
}
203
204
// Self/target button visuals | true = self, false = target
205
void
HandleTargetState
(
bool
button)
206
{
207
if
(button)
208
{
209
m_IsModeSelf
=
true
;
210
m_ButtonSelf
.SetTextColor(
COLOR_YELLOW
);
211
m_ButtonTarget
.SetTextColor(0xFF808080);
// grey
212
}
213
else
214
{
215
m_IsModeSelf
=
false
;
216
m_ButtonTarget
.SetTextColor(
COLOR_YELLOW
);
217
m_ButtonSelf
.SetTextColor(0xFF808080);
// grey
218
}
219
}
220
221
// Setup widgets for health zones
222
void
InitEntityEntries
()
223
{
224
if
(!
m_TargetEntity
)
225
return
;
226
227
m_TargetDisplayNameW
.SetText(
m_TargetEntity
.ClassName());
228
229
array<ref SyncedValue>
healthSynched =
m_DevSyncPlugin
.GetHealthZonesSynched();
230
231
foreach
(
SyncedValue
data : healthSynched)
232
{
233
InitEntry
(data);
234
}
235
236
AutoHeightSpacer
WgtModifiersContent_panel_script;
237
m_WgtPanel
.GetScript( WgtModifiersContent_panel_script );
238
WgtModifiersContent_panel_script.
Update
();
239
m_WgtPanelScroll
.VScrollToPos(0);
240
}
241
242
void
InitEntry
(
SyncedValue
data)
243
{
244
HudDebugWinHealthEntry
entry =
new
HudDebugWinHealthEntry
();
245
entry.
m_EntryRootW
=
g_Game
.GetWorkspace().CreateWidgets(
"gui/layouts/debug/day_z_hud_debug_health.layout"
,
m_WgtPanel
);
246
entry.
m_EntryZoneW
=
TextWidget
.Cast(entry.
m_EntryRootW
.FindAnyWidget(
"Name"
));
247
248
if
(data.
m_ValueNorm
== 1)
249
entry.
m_HealthMode
=
"Shock"
;
250
else
if
(data.
m_ValueNorm
== 2)
251
entry.
m_HealthMode
=
"Blood"
;
252
else
253
entry.
m_HealthMode
=
"Health"
;
254
255
entry.
m_IsTitleEntry
= data.
m_State
;
256
257
if
(entry.
m_IsTitleEntry
)
//title entry with disabled buttons
258
{
259
entry.
m_EntryZoneW
.SetText(entry.
m_HealthMode
);
260
entry.
m_EntryZoneW
.SetColor(0xFFABABAB);
// grey
261
262
entry.
m_EntryRootW
.FindAnyWidget(
"Value"
).Show(
false
);
263
entry.
m_EntryRootW
.FindAnyWidget(
"Value"
).Enable(
false
);
264
entry.
m_EntryRootW
.FindAnyWidget(
"ButtonMin"
).Show(
false
);
265
entry.
m_EntryRootW
.FindAnyWidget(
"ButtonMin"
).Enable(
false
);
266
entry.
m_EntryRootW
.FindAnyWidget(
"ButtonMax"
).Show(
false
);
267
entry.
m_EntryRootW
.FindAnyWidget(
"ButtonMax"
).Enable(
false
);
268
entry.
m_EntryRootW
.FindAnyWidget(
"ButtonAdd"
).Show(
false
);
269
entry.
m_EntryRootW
.FindAnyWidget(
"ButtonAdd"
).Enable(
false
);
270
entry.
m_EntryRootW
.FindAnyWidget(
"ButtonSubtract"
).Show(
false
);
271
entry.
m_EntryRootW
.FindAnyWidget(
"ButtonSubtract"
).Enable(
false
);
272
}
273
else
274
{
275
entry.
m_EntryZoneW
.SetText(data.
m_Name
);
276
entry.
m_Zone
= data.
m_Name
;
277
entry.
m_EntryValueW
=
TextWidget
.Cast(entry.
m_EntryRootW
.FindAnyWidget(
"Value"
));
278
}
279
280
m_Entries
.Insert(entry);
281
}
282
283
void
UpdateZones
()
284
{
285
if
(
m_Entries
.Count() == 0)
286
return
;
287
288
array<ref SyncedValue>
healthSynched =
m_DevSyncPlugin
.GetHealthZonesSynched();
289
float
roundedHealth, zoneMax;
290
291
foreach
(
int
i,
SyncedValue
value : healthSynched)
292
{
293
HudDebugWinHealthEntry
entry =
m_Entries
.Get(i);
294
295
if
(entry.
m_IsTitleEntry
)
296
continue
;
297
298
if
(entry.
m_Zone
==
"Global"
)
299
zoneMax =
m_TargetEntity
.GetMaxHealth(
""
, entry.
m_HealthMode
);
300
else
301
zoneMax =
m_TargetEntity
.GetMaxHealth(entry.
m_Zone
, entry.
m_HealthMode
);
302
303
roundedHealth =
Math
.
Round
(value.m_Value * 100) * 0.01;
304
entry.
m_EntryValueW
.SetText(roundedHealth.
ToString
() +
"/"
+ zoneMax.
ToString
());
305
306
if
(roundedHealth == zoneMax)
307
entry.
m_EntryValueW
.SetColor(
COLOR_GREEN
);
308
else
if
(roundedHealth < zoneMax * 0.3)
309
entry.
m_EntryValueW
.SetColor(
COLOR_RED
);
310
else
311
entry.
m_EntryValueW
.SetColor(
COLOR_YELLOW
);
312
}
313
}
314
315
void
CleanupEntries
()
316
{
317
foreach
(
HudDebugWinHealthEntry
entry :
m_Entries
)
318
{
319
entry.m_EntryRootW.Unlink();
320
}
321
322
m_Entries
.Clear();
323
}
324
}
AutoHeightSpacer
Definition
autoheightspacer.c:3
AutoHeightSpacer::Update
void Update()
Definition
autoheightspacer.c:11
EntityAI
Definition
inventoryitem.c:2
HudDebugWinBase
Definition
huddebugwinbase.c:2
HudDebugWinBase::GetType
int GetType()
Definition
huddebugwinbase.c:18
HudDebugWinBase::Hide
void Hide()
Definition
huddebugwinbase.c:57
HudDebugWinBase::SetRPCSent
void SetRPCSent()
Definition
huddebugwinbase.c:39
HudDebugWinBase::SetUpdate
void SetUpdate(bool state)
HudDebugWinBase::OnClick
bool OnClick(Widget w, int x, int y, int button)
Definition
huddebugwincharstats.c:200
HudDebugWinBase::Show
void Show()
Definition
huddebugwinbase.c:48
HudDebugWinBase::Update
void Update()
Definition
huddebugwinbase.c:27
HudDebugWinHealthEntry
Definition
huddebugwinhealth.c:2
HudDebugWinHealthEntry::m_IsTitleEntry
bool m_IsTitleEntry
Definition
huddebugwinhealth.c:5
HudDebugWinHealthEntry::m_EntryZoneW
TextWidget m_EntryZoneW
Definition
huddebugwinhealth.c:8
HudDebugWinHealthEntry::m_EntryValueW
TextWidget m_EntryValueW
Definition
huddebugwinhealth.c:9
HudDebugWinHealthEntry::m_HealthMode
string m_HealthMode
Definition
huddebugwinhealth.c:4
HudDebugWinHealthEntry::m_EntryRootW
Widget m_EntryRootW
Definition
huddebugwinhealth.c:7
HudDebugWinHealthEntry::m_Zone
string m_Zone
Definition
huddebugwinhealth.c:3
Math
Definition
enmath.c:7
Param3
Definition
entityai.c:102
PlayerBase
Definition
playerbaseclient.c:2
SyncedValue
Definition
syncedvalue.c:2
SyncedValue::m_Name
string m_Name
Definition
syncedvalue.c:3
SyncedValue::m_State
bool m_State
Definition
syncedvalue.c:6
SyncedValue::m_ValueNorm
float m_ValueNorm
Definition
syncedvalue.c:5
TextWidget
Definition
enwidgets.c:220
Widget
Definition
enwidgets.c:190
array
Result for an object found in CGame.IsBoxCollidingGeometryProxy.
Definition
isboxcollidinggeometryproxyclasses.c:28
float::ToString
proto string ToString(bool simple=true)
g_Game
DayZGame g_Game
Definition
dayzgame.c:3942
ERPCs
ERPCs
Definition
erpcs.c:2
COLOR_RED
const int COLOR_RED
Definition
constants.c:64
COLOR_GREEN
const int COLOR_GREEN
Definition
constants.c:65
COLOR_YELLOW
const int COLOR_YELLOW
Definition
constants.c:67
Math::Round
static proto float Round(float f)
Returns mathematical round of value.
HudDebug
void HudDebug()
Definition
huddebug.c:108
m_WgtRoot
Widget m_WgtRoot
Definition
huddebug.c:94
UpdateZones
void UpdateZones()
Definition
huddebugwinhealth.c:283
RunRPC
void RunRPC(HudDebugWinHealthEntry entry, int buttonID)
Definition
huddebugwinhealth.c:191
m_WgtPanel
Widget m_WgtPanel
Definition
huddebugwinhealth.c:16
m_DevSyncPlugin
PluginDeveloperSync m_DevSyncPlugin
Definition
huddebugwinhealth.c:23
HudDebugWinHealth
void HudDebugWinHealth(Widget widget_root)
Definition
huddebugwinhealth.c:28
InitEntry
void InitEntry(SyncedValue data)
Definition
huddebugwinhealth.c:242
HandleTargetState
void HandleTargetState(bool button)
Definition
huddebugwinhealth.c:205
m_TargetDisplayNameW
TextWidget m_TargetDisplayNameW
Definition
huddebugwinhealth.c:18
m_IsInit
class HudDebugWinHealthEntry m_IsInit
InitDebug
void InitDebug()
Definition
huddebugwinhealth.c:112
~HudDebugWinHealth
void ~HudDebugWinHealth()
Definition
huddebugwinhealth.c:35
InitEntityEntries
void InitEntityEntries()
Definition
huddebugwinhealth.c:222
m_WgtPanelScroll
ScrollWidget m_WgtPanelScroll
Definition
huddebugwinhealth.c:17
m_IsModeSelf
bool m_IsModeSelf
Definition
huddebugwinhealth.c:15
m_ButtonSelf
ButtonWidget m_ButtonSelf
Definition
huddebugwinhealth.c:19
CleanupEntries
void CleanupEntries()
Definition
huddebugwinhealth.c:315
m_Entries
ref array< ref HudDebugWinHealthEntry > m_Entries
Definition
huddebugwinhealth.c:25
m_ButtonTarget
ButtonWidget m_ButtonTarget
Definition
huddebugwinhealth.c:20
m_TargetEntity
EntityAI m_TargetEntity
Definition
huddebugwinhealth.c:22
x
Icon x
y
Icon y
GetPlugin
PluginBase GetPlugin(typename plugin_type)
Definition
pluginmanager.c:325
Games
Dayz
scripts
5_mission
gui
scriptshuddebug
huddebugwinhealth.c
Generated by
1.17.0