DayZ 1.30
DayZ Explorer by KGB
 
Загрузка...
Поиск...
Не найдено
HudDebugWinCharStats.c
См. документацию.
1class HudDebugWinCharStats extends HudDebugWinBase
2{
3 TextListboxWidget m_WgtValues;
4 GridSpacerWidget m_WgtPanel;
7 ref map <SliderWidget, string> m_SliderWidgets = new map<SliderWidget, string>;
12
13 //============================================
14 // Constructor
15 //============================================
16 void HudDebugWinCharStats(Widget widget_root)
17 {
18 m_WgtRoot = widget_root;
19 m_WgtPanel = GridSpacerWidget.Cast(m_WgtRoot.FindAnyWidget("Stats") );
20 m_WgtHeader = m_WgtRoot.FindAnyWidget("header_CharacterStats");
21
22 OnInit();
23 }
24
25 void OnInit()
26 {
29 {
30 vector pos = m_ConfigDebugProfile.GetCharacterStatsPos();
31 if (m_WgtRoot && pos != vector.Zero)
32 {
33 float wx = pos[0];
34 float wy = pos[1];
35 m_WgtRoot.SetPos(wx, wy);
36 }
37 }
38 }
39
40 //============================================
41 // Destructor
42 //============================================
44 {
45 SetUpdate(false);
46 }
47
48 //============================================
49 // GetWinType
50 //============================================
51 override int GetType()
52 {
53 return HudDebug.HUD_WIN_CHAR_STATS;
54 }
55
56 //============================================
57 // Show
58 //============================================
59 override void Show()
60 {
61 super.Show();
62 SetUpdate( true );
63 }
64
65 //============================================
66 // Hide
67 //============================================
68 override void Hide()
69 {
70 super.Hide();
71 SetUpdate(false);
72 }
73
74 //============================================
75 // SetUpdate
76 //============================================
77 override void SetUpdate(bool state)
78 {
79 //Disable update on server (PluginDeveloperSync)
80 PlayerBase player = PlayerBase.Cast( g_Game.GetPlayer() );
81
82 PluginDeveloperSync developerSync = PluginDeveloperSync.Cast(GetPlugin(PluginDeveloperSync));
83
84 //if client, send RPC
85 if ( g_Game.IsClient() )
86 {
87 Param1<bool> params = new Param1<bool>(state);
88 if (player)
89 {
90 player.RPCSingleParam(ERPCs.DEV_STATS_UPDATE, params, true);
91 SetRPCSent();
92 }
93 }
94 //else set directly
95 else
96 {
97 if (developerSync)
98 {
99 developerSync.EnableUpdate(state, ERPCs.DEV_STATS_UPDATE, player);
100 }
101 }
102 }
103
104 override void Update(float timeslice)
105 {
106 super.Update(timeslice);
107
108 if (m_IsDragging)
109 {
110 int x,y;
111 GetMousePos(x,y);
112 m_WgtRoot.SetPos(x + m_DraggingOffset[0], y + m_DraggingOffset[1]);
113 }
114 else
115 {
116 if (!m_Populated)
117 SetupValues();
118
119 UpdateValues();
120 }
121 }
122
124 {
125 PluginDeveloperSync developerSync = PluginDeveloperSync.Cast(GetPlugin(PluginDeveloperSync));
126
127 int valuesCount = developerSync.m_PlayerStatsSynced.Count();
128 if (valuesCount > 0)
129 {
130 foreach (SyncedValue syncedValue : developerSync.m_PlayerStatsSynced)
131 {
132 AddValue(syncedValue.GetName(), syncedValue.GetValue().ToString());
133 }
134
135 m_Populated = true;
136 }
137 }
138
140 {
141 PluginDeveloperSync developerSync = PluginDeveloperSync.Cast(GetPlugin(PluginDeveloperSync));
142 int valuesCount = developerSync.m_PlayerStatsSynced.Count();
143 if (valuesCount > 0)
144 {
145 foreach (int i, SyncedValue syncedValue : developerSync.m_PlayerStatsSynced)
146 {
147 string statName = syncedValue.GetName();
148 float valueNormalized = syncedValue.GetValueNorm();
149 float value = syncedValue.GetValue();
150
151 if ( statName == "BloodType" )
152 {
153 string type, name;
154 bool positive;
155
156 name = value.ToString();
157 name += "("+BloodTypes.GetBloodTypeName(Math.Round(value), type, positive)+")";
158 m_StatValues.Get(i).SetText(name);
159 }
160 else
161 {
162 if (statName == "HeatBuffer")
163 {
164 float heatBufferNormalized = Math.Round(Math.Lerp(-1, 1, valueNormalized) * 1000) * 0.001;
165 m_StatValues.Get(i).SetText(string.Format("%1 (%2)", heatBufferNormalized.ToString(), value.ToString()));
166 }
167 else
168 m_StatValues.Get(i).SetText(value.ToString());
169
170 }
171
172 if (!m_ChangingSlider)
173 m_SliderWidgets.GetKeyByValue(statName).SetCurrent(valueNormalized * 100);
174 }
175 }
176 }
177
178 void AddValue(string title, string value)
179 {
180 Widget widget = g_Game.GetWorkspace().CreateWidgets( "gui/layouts/debug/day_z_hud_debug_stat.layout", m_WgtPanel );
181
182 TextWidget tw = TextWidget.Cast(widget.FindAnyWidget("StatName"));
183 tw.SetText(title);
184 m_StatWidgets.Insert(widget);
185
186 TextWidget tw_output = TextWidget.Cast(widget.FindAnyWidget("OutputValue"));
187 m_StatValues.Insert(tw_output);
188
189 EditBoxWidget ebw_input = EditBoxWidget.Cast(widget.FindAnyWidget("InputValue"));
190 m_StatValuesInput.Insert(ebw_input, title);
191
192 SliderWidget sw = SliderWidget.Cast(widget.FindAnyWidget("StatSlider"));
193 m_SliderWidgets.Insert(sw,title);
194 }
195
197 {
198 m_StatWidgets.Clear();
199 }
200
201 bool OnClick(Widget w, int x, int y, int button)
202 {
203 SetDragging(false);
204
205 if (w.GetName() == "ResetStats")
206 {
207 ResetStats();
208 return true;
209 }
210
211 return false;
212 }
213
214 bool OnChange(Widget w, int x, int y, bool finished)
215 {
216 if (m_StatValuesInput.Contains(EditBoxWidget.Cast(w)) && finished)
217 {
218 EditBoxWidget ebw = EditBoxWidget.Cast(w);
219 RPCChangeStat(m_StatValuesInput.Get(EditBoxWidget.Cast(w)), ebw.GetText().ToFloat());
220 return true;
221 }
222 if (m_SliderWidgets.Contains(SliderWidget.Cast(w)))
223 {
224 m_ChangingSlider = true;
225 string stat_name = m_SliderWidgets.Get(SliderWidget.Cast(w));
226 SliderWidget sw = SliderWidget.Cast(w);
227 PlayerBase player = PlayerBase.Cast(g_Game.GetPlayer());
228 for (int i = 0; i < player.m_PlayerStats.GetPCO().Get().Count(); i++)
229 {
230 string label = player.m_PlayerStats.GetPCO().Get().Get(i).GetLabel();
231 if(label == stat_name)
232 {
233 float statMin = player.m_PlayerStats.GetPCO().Get().Get(i).GetMin();
234 float statMax = player.m_PlayerStats.GetPCO().Get().Get(i).GetMax();
235 float current_value_norm = sw.GetCurrent() / 100;
236 float current_value_abs = statMin + (statMax - statMin) * current_value_norm;
237
238 RPCChangeStat(label, current_value_abs);
239 }
240 }
241
242 if(finished)
243 m_ChangingSlider = false;
244 }
245
246 return false;
247 }
248
249
251 {
252 PlayerBase player = PlayerBase.Cast( g_Game.GetPlayer() );
253
254 //if client, send RPC
255 Param1<bool> params = new Param1<bool>(false);
256 if (player)
257 {
258 player.RPCSingleParam(ERPCs.DEV_RPC_STATS_RESET, params, true);
259 }
260 }
261
262 void RPCChangeStat(string stat, float value)
263 {
264 PlayerBase player = PlayerBase.Cast( g_Game.GetPlayer() );
265
266 //if client, send RPC
267 Param2<string, float> params = new Param2<string, float>(stat, value);
268 if (player)
269 {
270 player.RPCSingleParam(ERPCs.DEV_RPC_STAT_SET, params, true);
271 }
272 }
273
274 bool OnMouseButtonDown(Widget w, int x, int y, int button)
275 {
276 if (button == 0 && (w == m_WgtRoot || w == m_WgtHeader))
277 {
278 SetDragging(true);
279 return true;
280 }
281
282 return false;
283 }
284
285 bool OnMouseButtonUp(Widget w, int x, int y, int button)
286 {
287 if (button == 0 && m_IsDragging)
288 {
289 SetDragging(false);
290 return true;
291 }
292
293 return false;
294 }
295
296 override void OnDraggingEnd()
297 {
298 float wx, wy;
299 m_WgtRoot.GetScreenPos(wx,wy);
301 {
302 m_ConfigDebugProfile.SetCharacterStatsPos(Vector(wx,wy,0));
303 }
304 }
305
306 [Obsolete("no replacement")]
307 void FitWindow();
308}
PlayerSpawnPresetDiscreteItemSetSlotData name
one set for cargo
DayZGame g_Game
Определения DayZGame.c:4074
ERPCs
Определения ERPCs.c:2
void HudDebug()
Определения HudDebug.c:93
Icon x
Icon y
override float Get()
Определения PlayerStatBase.c:134
PluginBase GetPlugin(typename plugin_type)
Определения PluginManager.c:326
@ Count
Определения RandomGeneratorSyncManager.c:8
static string GetBloodTypeName(int bloodtype, out string type, out bool positive)
Определения BloodType.c:89
Определения BloodType.c:2
Определения EnWidgets.c:354
void RPCChangeStat(string stat, float value)
Определения HudDebugWinCharStats.c:262
bool OnMouseButtonUp(Widget w, int x, int y, int button)
Определения HudDebugWinCharStats.c:285
void UpdateValues()
Определения HudDebugWinCharStats.c:139
void SetDragging(bool enable)
Определения HudDebugWinBase.c:100
ref array< Widget > m_StatWidgets
Определения HudDebugWinCharStats.c:6
bool OnChange(Widget w, int x, int y, bool finished)
Определения HudDebugWinCharStats.c:214
ref map< EditBoxWidget, string > m_StatValuesInput
Определения HudDebugWinCharStats.c:9
override void Update(float timeslice)
Определения HudDebugWinCharStats.c:104
void SetRPCSent()
Определения HudDebugWinBase.c:43
bool OnClick(Widget w, int x, int y, int button)
Определения HudDebugWinCharStats.c:201
GridSpacerWidget m_WgtPanel
Определения HudDebugWinCharStats.c:4
void ~HudDebugWinCharStats()
Определения HudDebugWinCharStats.c:43
ref array< TextWidget > m_StatValues
Определения HudDebugWinCharStats.c:8
override void Show()
Определения HudDebugWinCharStats.c:59
Widget m_WgtHeader
Определения HudDebugWinCharStats.c:5
override void Hide()
Определения HudDebugWinCharStats.c:68
void AddValue(string title, string value, string value2)
Определения HudDebugWinCharLevels.c:116
Widget m_WgtRoot
Определения HudDebugWinBase.c:3
bool m_ChangingSlider
Определения HudDebugWinCharStats.c:11
void SetupValues()
Определения HudDebugWinCharStats.c:123
void SetUpdate(bool state)
void OnInit()
Определения HudDebugWinCharStats.c:25
override void OnDraggingEnd()
Определения HudDebugWinCharStats.c:296
void ResetStats()
Определения HudDebugWinCharStats.c:250
PluginConfigDebugProfile m_ConfigDebugProfile
Определения HudDebugWinBase.c:7
bool m_IsDragging
Определения HudDebugWinBase.c:8
override int GetType()
Определения HudDebugWinCharStats.c:51
void ClearValues()
Определения HudDebugWinCharStats.c:196
ref map< SliderWidget, string > m_SliderWidgets
Определения HudDebugWinCharStats.c:7
bool m_Populated
Определения HudDebugWinCharStats.c:10
bool OnMouseButtonDown(Widget w, int x, int y, int button)
Определения HudDebugWinCharStats.c:274
void AddValue(string title, string value)
Определения HudDebugWinCharStats.c:178
override void SetUpdate(bool state)
Определения HudDebugWinCharStats.c:77
void HudDebugWinCharStats(Widget widget_root)
Определения HudDebugWinCharStats.c:16
vector m_DraggingOffset
Определения HudDebugWinBase.c:9
Определения HudDebugWinBase.c:2
Определения EnMath.c:7
Определения PPEConstants.c:68
Определения PlayerBaseClient.c:2
string GetName()
Определения SyncedValue.c:16
float GetValue()
Определения SyncedValue.c:21
float GetValueNorm()
Определения SyncedValue.c:26
Определения SyncedValue.c:2
Определения EnWidgets.c:220
Определения EnWidgets.c:190
Result for an object found in CGame.IsBoxCollidingGeometryProxy.
proto string ToString(bool simple=true)
Определения Transport.c:70
static const vector Zero
Определения EnConvert.c:123
Определения EnConvert.c:119
void Obsolete(string msg="")
Определения EnScript.c:371
proto native vector Vector(float x, float y, float z)
Vector constructor from components.
static proto float Lerp(float a, float b, float time)
Linearly interpolates between 'a' and 'b' given 'time'.
static proto float Round(float f)
Returns mathematical round of value.
proto void GetMousePos(out int x, out int y)